開発者として最も重要なツールはペンとノートです
(hamatti.org)- ソフトウェア開発においてコーディングは、コンピュータに何をさせるかを指示する最後の段階に近く、その前に必要なのは 何をどう作るか を決めること
- コードエディタを開くとすぐに実装へ没頭する 機能モード に入りやすく、創造的な思考のためにはコンピュータから離れた時間が必要
- ノートに文章を書き、スケッチすると、漠然としたアイデアが 文章と図 として具体化され、理解の抜けを飛ばしにくくなる
- 新しい問題の初期解法、UIスケッチ、フローチャート、既存コードベースのデータフローと相互作用をノートで整理し、実装の方向性を定める
- コードを説明するように文章で整理すると、設計の不一致、悪い構造、ミスを見つけやすくなり、あとで振り返るための 思考過程の記録 も残る
コンピュータの外でよりうまく進む開発思考
- ソフトウェア開発ではコードを書くことは必要だが、先に決めるべき核心は どんなコードを書くか と どうアプローチするか である
- コードエディタが開いていると、すぐに動く何かを書く状態になり、その状態では創造的な思考がうまく流れない
- 問題を解くときはコンピュータから離れて散歩したり、ノートを持ってソファや屋外のパティオに座って考える
- 散歩場所として San Francisco Bay、Spree、Aurajoki のような水辺が挙げられている
- ノートでは新しい問題の初期解法を構想し、アプローチ方法を設計し、UIスケッチ や フローチャート を描く
- 既存のコードベースを扱うときもデータフローと相互作用をノートに整理し、それをもとにバグ修正や新機能追加の方法を見つける
文章を書くこととスケッチがもたらす効果
- 文章を書くこととスケッチは、漠然として抽象的な考えを 言葉と図 に変える思考ツールである
- 頭の中だけで考えていると飛ばせてしまう知識や理解の抜けも、文章にすると簡単には避けにくい
- コードを書いたあとは、他の人に説明するように文章で整理する方法を好んでいる
- 可能ならブログ記事として公開する
- 公開できないときでも同じやり方で書けば、コードの不一致、悪い設計、ミスを見つける助けになる
- 関連記事として how writing is my favourite refactoring tool を残している
- 文章で考えると、思考過程そのものが記録として残るため、別のメモを新たに作る必要が減る
- あとで使いやすいように再整理して整える程度でよい
- 2週間後、6か月後、2年後に、なぜ特定の決定をしたのかと聞かれたとき、ノートを見返して当時の考えを確認できる
- その質問をする相手が未来の自分自身であることも多い
- 業務ノートの内容により焦点を当てた別記事 how I take work notes as a developer もある
1件のコメント
Hacker News のコメント
良い議論だと思う。核心は ノート対デジタルツール ではなく、何が頭の中のギアを切り替えさせるのかにあると思う。
モードを切り替えるたびに、脳は別の仕方で注意を向けるようになり、その新しい文脈が集中力・創造性・記憶の想起まで高めてくれることがある。最近、夜ごとにコーディングの代わりに文章を書くことを新しい趣味として始めたら、脳がリセットされ、昼間の作業パフォーマンスも良くなった。計画も同じで、デジタルからペンと紙に切り替えるとルーティンが崩れ、脳が違う形で関与するようになる。道具そのものよりも、変化が精神を目覚めさせる という点のほうが重要。
他ではあまり見かけなかったが、この9年間、問題や学習への向き合い方を変えてくれた。ノートに切り替えることも、これを引き起こす良い方法の一つとして使っている。
3次元の物体を2次元で説明するには、追加の投影が必要になる。3次元の物体を2次元でおおよそ説明するには、3枚の図が必要だ。対象が3次元より複雑なら、はるかに多くの角度から見る必要がある。
年を追うごとに音声レコーダーはあまり使わなくなっているが、時間が足りず次の作業に移らなければならないときには最適だと思う。音声レコーダーを媒体として使うということは、あとで集中して聞き直し、話した内容を別の形で書き起こす過程まで含む。より永続的な紙のノートでもテキストファイルでも構わない。繰り返すたびに考えはある程度変形され、そのおかげでアイデアを別の形で見る機会が生まれる。
キッチンに行って湯を沸かし、抽出されるのを待つと机から離れられ、待っている間に独り言で考え始める機会ができる。ときには椅子から立ち上がるだけで難しい問題が解け、答えがはっきりすることもある。ただ、何年たっても、ときどきこれを思い出せず、ずっと抱え込んでしまうことがある。
数学、物理学、コンピューターサイエンスで出会った最も賢い人たちの中には、ノートさえ使わず、プリンター用紙とペン を使っていた人がいた。終わったら紙は捨てていた。
昔の個人的なメモが役に立ったことはめったになかった。書き留める価値のあるものは文書化して、あとで他の人が私の見つけた奇妙な点を偶然見つけられるようにする。本当に覚えたいものはフラッシュカードを作り、間隔反復で身につくまで学習する。ただし、私のやり方が多くの人に合わない可能性はある。この記事をあまりに個人的かつ文字通りに受け止めているように思う。これは筆者の哲学を共有する文章であって、全員が従うべきだと宣言するものではない。ペンとノートが合わないなら、使わなければいい。
関連する記事は何百もあり、よく文書化された現象だ: https://www.newscientist.com/article/2414241-writing-things-...
手書きはタイピングよりも多くの感覚と脳領域、特に運動皮質を使うため、効果がより大きい。これを口実に Moleskine を買えたらいいといつも思うが、手書きは自分のワークフローの一部ではない。代わりに、テキストバッファに多くの内容をタイピングしてから変形するほうが合っていて、特に今は LLM もある。脳が完全に止まったときは、テキストエディタにほとんど判読できない文句を打ち始め、頭が目覚めたら再び編集・リファクタリング・整理する。そうすると、その日に書くべきメールやコードのおぼろげな概要、少なくとも ToDo リストのようなものがよく出てくる。初期の落書きの大半は消す。それでも、手書きが記憶の保持に役立つのは確かだ。
定期的にメモを見直し、保存する価値があるものは適切な記録システムに要約して移す。カレンダー、チケット、Wiki、間隔反復など、何でも構わない。同じように、実際に残す価値のあるものはごく少ないが、それで問題ない。紙のメモは記録システムというより、作業記憶の拡張 に近い。
振り返る価値はあるのかもしれないが、自分にそうさせることはできなかった。
ときどき後で参照するために忘れそうな内容を書くときは、小さな付箋をはみ出すように貼って、簡単に見つけられるようにしている。
開発者にとってノートが「最も重要な道具」だというのは、純粋なロマン主義です。人によっては役に立つかもしれませんが、デバッガ、バージョン管理、継続的インテグレーションより重要だというふりをすべきではありません。これは職人気取りではなく、ソフトウェア工学です
挙げられたツールが当然重要で、私も本当に活用しています。バージョン管理やデバッガなしで開発者として働きたいとは思いません。それらを失えば確実に遅くなり、イライラするでしょう。それでも私にとってはノートのほうがそれ以上に重要です。コードを書いて実行することは仕事を終わらせるための道具ですが、私にとってソフトウェア開発とは、問題を解決したり生活をより楽にしたりする価値ある何かを作ることです。そこではコードはしばしば比較的些細な実装の詳細であり、何をどう作るかを把握することのほうがはるかに重要です。コードエディタやデジタルツールの中でうまく考えられる人もいますが、私はコードエディタで機能を作り始めると細部の実装モードに入ってしまい、全体像を見るのが難しくなります。だからコーディングの前や最中にノートを手に取り、考えるための道具として使うことが私の仕事の核心です。他のツールが使えなければ遅くはなるでしょうが、ペンと紙で書きながら考えられなくなると、思考力・問題解決力・創造性が大きく損なわれ、結局悪いソフトウェアを書くことになります
Obsidianのワークフローを理想的に説明するのに、肝心の有用なメモは残していない場合もありますし、自分のブログのやり方があまりに独特なのでブログエンジンを自作しなければならなかったと言って、文章を書く代わりにブログを作ることに時間を使う場合もあります。私にも経験があります。「これは職人気取りではなく、ソフトウェア工学」という表現は気に入りました。拝借して自分のノートに書いておこうと思います
ブルーカラーの機械工とホワイトカラーのエンジニアの違いは、使う機械をどう見るかにあります。エンジニアにとって機械は、計算尺であれ計算機であれスーパーコンピュータであれ、ただの道具です。その道具を使うから工学をしているのではなく、考え、その道具がその考えを少し速く助けてくれるから工学をしているのです。機械工にとっては機械こそが仕事です。物を作る機械がなければ物は作れず、考えるだけで物ができるわけではないので、物について考えることは無意味になります
ただし感情の核心は今でも正しいです。ソフトウェアを作るとき、良いコード設計が仕事の最も根本的に重要な部分です。言及されたツールはそのコードを届けられるようにするものですが、コード設計そのものが間違っていれば大した意味はありません。最近のコード設計プロセスは、失われた技術のように感じます。開発者たちは、受け入れ条件を通る程度に、とにかく壁に何でも投げつけて貼り付けることに慣れすぎています。実際にコードのロジックや流れを紙やダイアグラムアプリなどで検討する過程が、開発コミュニティのかなりの部分で欠けています。IDEを開いて最初に思いついたコードをデバッグする前に、機能のロジックを進んで検討するなら、アプリのバグは少しは減るかもしれません
ほとんどのコメントは物理的なペンと紙に注目していますが、その下にある原則を見逃しています
筆者はコンピュータの前に座ると、設計よりも実装をする機能モードに切り替わってしまうため、ペンと紙を使っているのです。それがすべてです。重要なtakeawayは、設計すべきときに実装にはまり込む罠に落ちないことです。そのバランスをどう保つかは各自次第です
自分に合う道具を見つけることが重要です。この記事を書きたかった理由の一つは、誰もが毎日7.5時間コンピュータの前に座っている技術チームの中で、私が画面とキーボードから離れているときのほうがよく考えられる人間なので、しばしばoutsiderのように感じていたからです。私のような人、そして自分がなじめていないと感じる人たちに、一つの例を示したかったのです
ソフトウェアを約20年扱ってきて、その前は有機化学の博士号取得と研究を数年していました。オーストラリアでseniorとして働き、報酬もかなり受けています
私には**アファンタジア(aphantasia)**があり、頭の中で物体を視覚化したり絵のように思い浮かべたりできません。そのためペンと紙、ホワイトボードを非常によく使います。ERD、マインドマップ、シーケンス図などを作り、ReMarkableを使って移動や整理を少し楽にし、効果的にしています。これを純粋なロマン主義だと見る人もいるでしょうが、ペンと紙は私の成功に決定的でした
面接には時間制限があるので、見せるものを作ろうとしてすぐにコーディングを始めるのですが、頭の中で何も描けないため、文字どおり盲目的にコーディングしていました。問題を何度も読み返しながら、解決策が浮かぶのを期待している状態でした。これに気づいてからは、A2のノートに問題を描き、紙の上で問題を解き進め、最後に解決策まで紙にマッピングし始めました。すると魔法のようにコードが自然に出てきます。おそらく普通の人たちは、プログラミングするときにこんなふうに考えているのだと思います
両方やりました。完全デジタルも、完全ノート中心も試しました。今まで見つけた最善は、長期メモはメモアプリに置き、現在進行中の思考プロセスはノートに置くやり方です
今やっていることや、その過程のようなものです。こうすると物理メモの検索・コピーの問題を減らせます。ただ、進行中のプロセスや作業を手で書くと、はるかによく覚えられます。時には書くだけでよく、見返す必要がないこともあります。それでも見返す必要があるときは、最終結果にどうたどり着いたかをよりよく把握できます。その道のりがノートに書かれているからです。万年筆が好きなのも助けになっています
ここのコメント欄のみんなのように、どちらか一方を選んで完全にコミットしなければなりません。しかしあなたはすでに開かれた心で両方、つまり完全デジタルと完全ノートを試してしまったので、もう手遅れです。したがってあなたの判断は自動的に無効で、間違っています。ルールがそうなっています
ペンと物理的なノートの良さが理解できない。書く速度は遅いし、書いたものを検索するのは信じられないほど遅く、コピーしたり共有したりするのはほぼ不可能
そのノートは、私の考えをつかまえるための最速で最もアクセスしやすい道具だ。どんなメモツールが起動するよりも前に、昨年10月のチーム会議で議論した内容を簡潔に話せる。ほぼすべての同僚の子どもの名前、誕生日、好きな映画を知っていて、画面共有中でもウィンドウを切り替えずにざっと確認できる。そうした内容が他人には読みにくく、共有不可能であることは、私が非常に高く評価している機能だ。好きな場所に持っていって内省し、メモする。画面もなく、邪魔も入らない。落書きし、線を引き、冗談を書き、何でもする。右ページは仕事、左ページは自分のアイデア。最初のページの索引は、退屈なフォーム入力のアイデアやモックアップがどこにあるかを正確に教えてくれる。自分が空回りしているときも分かる。数か月前の自分の思考の隙間も見えるし、さもなければ見逃していたであろう人間行動のパターンも見える。シンプルであることがものすごい利点なので、もっと良いものを探すのをやめた。特別な場合を除けば、宣伝しようともしない。多くの時間を節約してくれた
https://www.scientificamerican.com/article/why-writing-by-ha...
https://stackoverflow.blog/2022/11/23/why-writing-by-hand-is...
私のような散漫な脳には、手書きのほうが明らかに向いている。検索可能性は過大評価されている。ほとんどのメモは書き捨てで、読み返されないまま積み上がりがちだ。だから、コンピュータ上で検索しやすいように最適化するより、あとで資料とより良い精神的なつながりを作れるように記憶の保持に最適化するほうがよい。PC上のメモは不活性だ。求めているのは、その内容を脳に統合し、実際に何かができるようにすることだ
私は筆者に全面的に同意する。コンピュータの前では深く考えるのが本当に難しく、邪魔が多すぎる。書く速度や検索は私にとって問題ではない。もっと速く書きたいとは思うが、深い思考そのものは速い作業ではないからだ。検索も同じで、自分が書くものの99%は二度と見ない。すべて問題を解いていき、記憶に刻み込むプロセスだ。行き詰まったときは、コンピュータから離れることがたいてい最良の次の一手になる
教授が黒板に書く内容をすべて書き取れ。講義内容をどれほど多く覚えているかに驚くはずだ。そして手書きのノートを読むと、そのときの講義まで一緒によみがえる
長期的な情報保存先としては完全に間違った道具だ。一時的な思考過程のメモにだけ向いている。いま解いている問題より長く残るべき内容は Obsidian に置く
何年もの間、あらゆるメモツールやアプリを試して整理しようとしてきたが、今年の新年の目標の一環として、日付欄のあるToDoリスト用メモパッドをまとめて買い、会議中や作業中に思いつくまま書くことにした。こうしてみたら生産性がずっと上がって驚いている
気になる人向けの商品: https://www.amazon.com/dp/B0BS1WJZNW
手で書くほうがずっと好きだ。[1] Moleskine、Field Notes をかなり使い、Muji も長く使ってきたが、今はMidoriに大いに感心している
すでに何冊か買っていて、もっとたくさん買うつもりだ。Midori Paper の上で万年筆が生む触覚的な「引っかき感」がとても落ち着くので、ごく平凡なアイデアを書いているだけでも、自分が詩人になったような気分になる :-)
https://brajeshwar.com/2025/notes/
オフィス勤務で恋しい数少ないものの一つは、大きなホワイトボードと、同僚と一緒にその前に立つことだ
同僚とマーカーを持ってアーキテクチャに取り組むと、本当に優雅なクラス設計が生まれることがよくあった
最後にCTOとして働いていたとき、チーム全員に買った。共有デジタルホワイトボード上で描き直せれば、スペースが足りなくて同じ四角形を12回も描き直す必要がなくなる。消す前にホワイトボードの写真を撮ることも減る