ブックマーク / satoru-takeuchi.hatenablog.com (10)

  • 問題解決より深掘りを優先する人が困っていたこと - 覚書

    何らかの問題を解決しなくてはならなくなった時に、解決よりも深掘りを優先してしまう特性の人がいます。 たとえば問題に対する短期的な対策を考えることをおろそかにして、根原因究明と根対策方法をじっくり考え込んでしまうような人が該当します。他人事のように言ってますが、筆者もそうです。記事は、そういう筆者が過去に仕事で困っていたこと、ある時から状況によって取り組み方を変えられるようになったという話をします。 上記のような特性の人は、調査のたびに深い知識が得られ、血肉となっていきます。それゆえ技術に明るい人とみなされることもあります。その一方で、困ることもあります。とくにそれは発生した問題が自分ではなく他の誰かのものだった場合、かつ、急ぎ問題解決が必要な場合です。業務ではこのような場面が非常に多いです。 この場合、問題の深掘りを最優先にしてしまうと仕事が遅くなりがちです。みなさんも、「あの人、技

    問題解決より深掘りを優先する人が困っていたこと - 覚書
  • 「[試して理解]Linuxのしくみ ~実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】」が発売されます - 覚書

    拙著、「[試して理解]Linuxのしくみ ~実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】」が10/17日に発売されることになりました。記事はその宣伝のためのブログエントリです。 [試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】 作者:武内 覚技術評論社Amazon まずは書がどのようなものかについて説明し、その後に、すでに第一版を読まれている方向けに第一版と書の差分について説明します。 どんななのか 筆者は過去にLinuxカーネル開発をしていたのですが、そのころから次のような思いをずっと持っていました。 OS、とくにOSカーネルについての広く浅い知識はOSカーネル開発者だけではなく多くの技術者にとって役立つはず 当時OSカーネルについての知識を得ようとすると、OSを作ったりサポートしたりする人用の難しくて分

  • 当たり前のことをやっているだけで凄い - 覚書

    IT業界で10年以上過ごしている中で、凄いと思う人達にたくさん出会ってきました。最初はとくに新卒で入社した会社の先輩方が中心でした。ここでいう凄さとは何かというと「仕事を片づけるのが早い」とか「成果物の完成度が高い」などです。当時、こんなふうに自分もなってみたいという思いが強くて必至で真似しようと試行錯誤したのですが、全然うまくいきませんでした。ありていにいえば、表面上の凄さだけを見ていたことが失敗の原因だったかと思っています。早く仕事を片づけようと焦り、結果完成度も下がり…と、さんざんでした。 その後はアプローチを変えて、彼らの日常の何気ない振る舞いなどを観察することにしました。すると、彼らのうちの多くの凄さの源泉は驚異的に頭の回転が速いとか、ほかの誰もが持っていない異能力を持っていたりするわけではなく、世間で当たり前と言われていることを息をするようにやっていることだとわかりました。たと

    当たり前のことをやっているだけで凄い - 覚書
  • ヘタクソなコードを書いてもいい - 覚書

    プログラミング言語のお作法から外れたコードやメンテ性が悪いコードを書くのはダメとよくいわれます。わたしは学生の頃、そういう意見を過剰に気にしていました。コードを書くことそのものに慣れていないのに綺麗に書こうとして手が動かず、動かないがゆえにコーディングの練習が進まない、という悪循環になっていました。そうすると何もアウトプットしないまま知識だけが増えていって、自分がこれくらいできそうというイメージと実際のプログラミング能力とのギャップで苦しみました。 この意識が薄れたのは、あるときものすごく手が早い人のコードを偶然見たときでした。たしかにちゃんと動くものができているんですが、そのコードの中身は当時の私の基準からいって*1おぞましいほど汚いものでした。そこで「これはわたしが書けば100倍くらい綺麗なコードを書けるんでは…」と一瞬思ったんですが、その後すぐに「あ、自分は知識はあるけど練習してない

    ヘタクソなコードを書いてもいい - 覚書
  • 休むことは難しい - 覚書

    休むことがどれだけ難しいか、および、私がそういうときにどう考えてきたかについて書きます。 プログラミングをはじめとしてコンピュータが好きであればあるほど*1、やる気があればあるほど休むことが難しいです。若くて気力体力が有り余っている場合はとくにそうで、朝から晩までプログラミングをしていてもあまり疲れを感じず、かつ、寝て起きたらスッキリです。ところが次第にそうではなくなってくることが多いようです。私が実際にそうでした。私の場合は以下のような流れで休みかたを忘れていきました。 10代後半でコンピュータに出会ったことによって興味の持てる対象が激増した コンピュータについての知識を得るために毎日昼夜を問わずに作業していた 休憩という概念がなく、寝る(気絶する)まで作業して、起きたらまた作業という状態になった。若くて体力があったので死ななかった 生活のリズムが乱れて疲労が蓄積していった。が、茹で蛙の

    休むことは難しい - 覚書
  • 趣味でプログラミングをはじめようとするときの様々な誘惑 - 覚書

    趣味でプログラミングをはじめようとする人が陥りがちな罠と、それについてのわたしの考え方について書きます。一部については私が実際にひっかかった罠で、それ以外は自分以外の人を見ていて思ったことです。仕事だと話は変わってくるのですが、それについては触れません。 情報量が多い昨今、「さあプログラミングをはじめよう」となっても、目の前には次のような様々な選択肢が待ち受けています。 OS(典型的にはWindows, macOS, Linux) プログラミング言語 テキストエディタ(あるいはIDE) 初心者はこれらのうちのどれを選ぶべきかというところでまず躓いて、まったく先に進めなくなることが多々あります。ただ、このへんは使ってみなければわからない好みの部分が非常に多いので、まずはフィーリングで適当に選んで、合わないものがあれば別のものに乗り換えればいいと思います。なんなら複数を使い分けてもいいんです。

    趣味でプログラミングをはじめようとするときの様々な誘惑 - 覚書
  • 重要そうだけど興味のないことを頑張っても大していいことなかった話 - 覚書

    時間は有限です。その合間を縫ってひねり出した可処分時間は貴重です。こういう時間は自分が楽しいと思えることにとことんつぎ込めばいいと今では思っているのですが、そうではなかった時の失敗談を紹介します。読者のみなさまの中で、好きなこと、やらなきゃいけないことしかできないという私のようなタイプの人には刺さるかもしれないです。 10年近く前の、まだわたしが若手というカテゴリに入っていたとき、当時ずっと生業にしていたLinuxカーネル以外にも、将来のために何かもう一つ引き出しの数を広げておかないといけないと思っていたことがありました。そういうときに飛びつきがちなのは流行りものです。当時のわたしにはそれがARMサーバでした。当時は何やらやらないと取り残されるのではという空気が身辺にありましたし、カーネル屋さんなのでハードウェアに近いところの知識はあればあるだけ損ではないという思いもありました。 ところが

    重要そうだけど興味のないことを頑張っても大していいことなかった話 - 覚書
  • 色々できるとおもわれがちな人ができないこと - 覚書

    はじめに 以下記事の続きです。実例編といってもいいかもしれません。 satoru-takeuchi.hatenablog.com 完璧超人とまではいかないでしょうが、わたしも次の理由によりSNSなどでは「いろいろできるすごい人」「低レイヤに詳しい人」と思われがちです。 Linuxカーネルに詳しい。カーネルに詳しい人は無条件でなんでもわかっていると誤解されることが多々ある 自分あるいは自分が所属している組織の成果をよく宣伝する。このため、そういうことを好まない人に比べて「何かできる人」という印象がつきやすい twitter上でそれなりに認知されている、かつ、twitter上で様々なすごい人とよく話している。「すごい人と話しているとすごい」と思われがち。 記事の趣旨は、その私が世の中で想像されるほどいろいろできるわけではない、できることは限られているということを書いてみようということです。自

    色々できるとおもわれがちな人ができないこと - 覚書
  • Linuxカーネルで学ぶC言語のマクロ - 覚書

    はじめに 記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

    Linuxカーネルで学ぶC言語のマクロ - 覚書
  • メモリダンプの模様とはどのようなものなのか(入門編) - 覚書

    はじめに 最近バズった以下の記事について、補足のようなものを書きたくなったので書きます。 note.com 上記の記事に対して「模様って何…?」のようなコメントが散見されましたので、カーネルのメモリダンプ解析経験が数年ある筆者が、わたしの理解できる範囲でメモリの模様とはどんなものかについて書きます。なお、模様とはあくまで感覚的なものなので、上記記事で扱われているかたの定義とわたしの定義は違うかもしれませんのであしからず。また、LinuxカーネルやCPUについてのある程度の知識が必要な表現や用語が出てきますが、記事ではそれらについての説明は割愛します。 メモリのさまざまな模様 メモリの模様とは(少なくとも私にとっては)16進バイナリの文字列の特定パターンです。ここでいうパターンとは正規表現マッチングできるようなパターンのことを指します。その中の代表的なパターンを見てみましょう。 ポインタ

    メモリダンプの模様とはどのようなものなのか(入門編) - 覚書
  • 1