- 新しい会社に入社して最初にしたことは、新しいノートを買うことであり、これは単なる喜びを超えて、開発者としての中核的な道具だという認識から来ている
- コーディングは最終段階にすぎず、より重要なのは何をどのように作るかを考える過程であり、それはしばしばコンピュータではなくノートから始まる
- ノートに文章と図で思考を可視化すると、抽象的な考えが具体化され、知識の空白も明らかになり、より良い設計に役立つ
- 自分が書いたコードを文章で説明しながら見直す習慣は、不整合や誤った設計を見つける効果的なリファクタリングの道具として機能する
- このような記録は、未来の自分にとっても意思決定の文脈を復元する資料として有用であり、一種の自動化された振り返りドキュメントになる
ペンとノートが最も重要な理由
- 初出勤の前に最も楽しみにしていたことの一つは、新しいノートを選ぶこと
- 開発者にとってノートは、単なる記録ツールではなく思考ツール
- コーディングは思考の末端にある実行であり、何を作るかを悩む過程の方が重要
- 多くの場合、コンピュータの前では創造的思考がうまく流れない
- エディタを開くと、「動くコード」にだけ集中する『機能モード』に入ってしまう
コンピュータから離れて考える
- 散歩をしたり、ノートを持ってソファや屋外で問題を考えたりする
- 新しい問題へのアプローチ設計、UIスケッチ、フローチャート、既存コードのデータフロー分析や機能拡張のアイデアなどをノートに整理する
- 文章と図による思考の可視化は、曖昧なアイデアを具体化するのに非常に効果的
- 頭の中で考えるだけでは素早く省略してしまう論理の空白が、文章を書くと明確に現れる
書くことは最高のリファクタリングツール
思考の副産物であり記録という資産
- 書くことを通じた思考法のもう一つの利点は、考えた痕跡が自然に記録として残ること
- 別途ドキュメント化しなくても、思考整理の副産物が優れた振り返り資料になる
- 後で誰か(特に未来の自分)が「なぜそうしたのか」と尋ねたら、ノートを開いてそのまま説明できる
より深い開発者ノートの書き方について
1件のコメント
Hacker Newsの意見
素晴らしい議論だと感じている。私が考える核心は、ノートでもデジタルツールでも、それ自体ではなく、自分の脳のギアを切り替えてくれることにある。モードを切り替えるたびに脳は違う形で注意を向けるので、新しいコンテキストが集中力、創造性、記憶力を高めてくれる。たとえば、ずっとコーディングばかりしていたが、夜に文章を書くという新しい趣味を始めたら脳がリセットされる感覚があり、昼間の成果が本当に上がった。計画を立てるときにデジタルからペンと紙にしばらく切り替えるのも、ルーチンを壊して脳を違うふうに働かせる。結局重要なのは道具ではなく、変化によって目覚めることだ
最近の開発者の中で、製図の基礎授業を強制的に受けたことがある人がどれくらいいるのか気になる。レゴで遊んだ人は多いだろう。3次元の物体を2次元の紙で説明しなければならないときは、普通は三方向から投影図を描く必要があり、もし3次元より複雑なら、説明のためにさらに多くの角度から見なければならない
本『Smarter Faster Better』で知った「不流暢性(disfluency)」という概念が印象的だった。不便なフォント、新しい環境、別の道具などは、自動操縦モードから抜け出して新しく考える助けになる。ほかではこの概念を見たことがないが、この9年間で問題解決と学習への向き合い方が完全に変わった。私にとっても、ノートへの切り替えはこの効果を引き起こすよいトリガーになっている
私の場合、実際にメモは紙のノート、昔ながらの録音機、そしてテキストファイルという3つの媒体で取っている。それぞれに固有の長所と短所があるので、アイデアの表現も変わる。録音機はだんだん使うことが減ってきたが、時間がなくて急いで先に進まなければならないときには最適だ。録音したものを後で聞きながらまた書き直すと、その反復のたびにアイデアが違う形に変化する。この過程によって、同じアイデアを多角的に見られる
以前に聞いた研究結果では、コンテキストスイッチ(作業切り替え)には平均15分ほどのコストがかかるという。どれほど正確かはわからないが、私の上司たちもこの点をとても気にして尊重してくれている
私が体験したのは、リアルタイムのウェビナーシリーズを聞きながら、その場でペンと紙にメモを取っていたときだった。最初はついていくのがとても大変だったが、数日たつと聞くことと書くことの切り替えがだんだん上達し、聴覚情報をよりよく記憶できるようになった気がした
私が出会った数学、物理、コンピュータサイエンス界でもっとも賢い人たちの中には、ノートすら使わない人もいる。その代わり、プリンタ用紙にペンで書き、終わったらそのまま捨ててしまう。ずっと昔の個人的なノートから有用性を見いだした経験はほとんどない。本当に重要なのは文書化して他人にも見つけられるようにしておくことで、どうしても覚える必要があるものは spaced repetition を使ったフラッシュカードで学ぶ。もちろんこれは私のやり方であって、ほかの人には合わないかもしれない。この記事のタイトルは、単にある開発者の哲学を共有したいだけで、必ず全員が従うべきだと言っているわけではない。ペンとノートが合わないなら使わなくてもいい
科学的に見ると、何かを書き留めると記憶力、暗記、学習能力が向上する。書いたものをすぐ捨てても効果がある。関連記事 もある。手で書くことはタイピングよりも多くの感覚と脳、とくに運動皮質を活性化させる。私もこれを口実にモレスキンを買いたいと思うことがよくあるが、手書きは自分のワークフローには合わない。私はプレーンテキストのバッファに大量にタイプして、あとで GPT のような LLM で加工する。頭が止まったときは、意味のわからない単語でもとにかく打ち続けていると、徐々に意識が戻ってきて、そこから ToDo リストやメールの下書き、コードの草案などが出てくる。その過程で初期の走り書きの大半は消える。それでも手書きのほうが記憶にはより役立つ
昔のノートは役に立たないという君の考えには同意する。でも私はそのノートや紙を今も保管している。長い時間がたってからそれを見るのは、まるで昔の家族写真を見るような気分で、昔の自分の思考過程の写真のように感じる
私の脳もそういうふうに動く。私にもノートはあるが、1日分の考えがノート1ページに収まる。翌日は次のページを書く。以前の内容を見返すことはほとんどない。過去を見ることに何か価値はあるのかもしれないが、実際にはできていない
私にとっては、ノートの取り方が完全に自由で、構造化されていない状態であることが効果的だ。キーボードでは流れを捉えにくい。非線形、非言語的、関係的、空間的なデータや、短期記憶用の情報を書き留めるためだ。定期的にノートを見直して、意味のある情報はカレンダー、チケット、Wiki、spaced repetition などの記録システムに移す。結局、保存する価値がある内容はごくまれだが、それでも構わない。紙のノートは私にとって公式な記録システムではなく、作業記憶の拡張だ
私は以前、よくノートをなくしていた。今は技術ツールを使ってノートをテキストに移し、Obsidian vault に整理している。今後はノート間のつながりを自動で探索したり、タグ付けしたりして、アイデアをもっと見つけやすくしたい
ノートを「もっとも重要な道具」と呼ぶのは、あまりにロマンチックすぎる。ある人には役立つかもしれないが、デバッガやバージョン管理、CIより重要だというのは誇張だ。ソフトウェアエンジニアリングは職人ごっこではない
OPです。自分のブログが HN に載るたびに、「幻想の中に生きている」「純粋なロマン主義だ」と言われる。君が挙げたツールが重要なのはもちろんそのとおりだ。バージョン管理やデバッガなしの開発は非効率だろうし、私も避けたい。だが私にとっては、ノートのほうが本当に重要だ。コードを書いて実行するためのツールは、仕事を成立させるための道具にすぎず、ソフトウェア開発で本当に大事なのは、価値あるものを作り、問題を解く過程だ。このときコード自体は些細な実装段階にすぎない。何を、どう作るかを考えることのほうがずっと重要だ。コードエディタやデジタルツールの中でよりよく考えられる人もいるだろう。私はコードエディタの中だけにいると、細かな実装に入り込みすぎて全体構造を思い描きにくくなる。だから私にとっては、ノートを手にしてコーディングの前後で一緒に使うことが非常に中核的な仕事になっている。もしこの道具がなければ、私の思考力、問題解決力、創造性は大きく鈍り、悪いソフトウェアを作ることになるだろう
君が言っているのはソフトウェアエンジニアリングではなく、ソフトウェア加工だ。ブルーカラー(現場作業者)とホワイトカラー(エンジニア)の違いは、まさにこの「道具」への態度にある。エンジニアにとっては計算尺であれ、電卓であれ、スーパーコンピュータであれ、ただの「道具」にすぎない。道具があるからエンジニアリングをするのではない。本質は「思考」であり、道具はその過程を促進するだけだ。加工者にとっては機械そのものがすべてだ。機械がなければウィジェットを生産できないのと同じだ。「生産」ではなく「思考」こそが本質だ
これはまるで「家を建てるなら、当然ハンマーのほうが設計図より重要だ。ここは美術の授業じゃなくて建設現場なんだから」と言っているようなものだ
指摘してくれてありがとう。同じように生産性システムに膨大な時間を注ぎ込みながら、gtd ノートをタブやリストで飾ることに終始して、実際に生産的なことは何もできていない例が多い。人々は Obsidian のワークフローについては書くが、実際には意味のあるメモを残していない。ブログそのものを作ることに時間を使い果たし、肝心の記事を書かない人も多い。(私もそうだった)「これは職人ごっこではなくソフトウェアエンジニアリングだ」という表現が本当に気に入った。ノートにメモしておくよ
「craftsmanship cosplay」という表現はいいね。各コメントについて、その人の職種やキャリア、年齢、収入、教育をデータとして見てみたい。意見というのは、結局のところ成功するソフトウェア開発そのものより、発言者について多くを語っているように見える。OP は、自分に合った集中力と創造性がうまく発揮される方法を使っているだけだ。本文や批判をあたかも標準のように受け取るのは誤りだ。パターンだけをまねると、結局は cargo cult 的な行動と変わらなくなる
大半のコメントは「ペンと紙」という物理的な部分に焦点を当てているようだが、本当の核心原則を見落としているように見える。著者がペンと紙を使う理由は、コンピュータの前に座ると自動的に「実装モード」に切り替わり、設計より実装に偏ってしまうからだ。つまり重要なのは、設計が必要なときに単に実装に没入しないよう、自分なりにどうバランスを保つかを選ぶことだ
こういうのは結局、個人の生産性の領域だ。いろいろなやり方を試して、自分に合う環境とプロセスを見つけなければならない。ペンと紙は、過剰な細部にはまり込みすぎたり、気が散ったりしないように、思考と設計を導いてくれる。私もときどき、ペンと紙で考えたことと、Sublime Text に直接書いたことを行き来しながら使うが、どちらもそれなりにうまく機能している
Reddit で流行るベルカーブのミーム(両極端の層が同じ解法を使い、「平均」は不満を持つ図)がまさに当てはまる。OP は核心を突いている。コーディングする前に考えろ。私のキャリアがほぼ終わりに近づいている今(88年に始めたので数十年選手だが)、もっとも興味深いことの一つは道具の変化だ。私は大企業のシニア・プリンシパル・ソフトウェア・アーキテクトだが、コードは1行も書かない。成果物はすべて Visio、Word、PowerPoint(ときどき PlantUML)で作る。抽象化のレベルが上がるほど、道具はより単純になる。私が描くアーキテクチャは、10年以上動き続ける軍用、医療用、自動車 Tier 1 向けのものだ。実際に実装されるコード(ほとんどが C、C++、昔は Ada、今後は Rust も使うかもしれない)や言語は、アーキテクチャにまったく影響しない。本当に重要なのは、ブロック、API、カプセル化だ。これがシリコン、セキュリティ、生産、テストに影響するからだ。数枚のスライドで説明できることこそ核心であって、コードそのものではない。(もちろん、私の図が設計上の欠陥の発見にも耐えられるものでなければならない。そこもまた面白いところだ)
Leuchturm 1917 A4 Master ノート(ドットグリッドを強くおすすめ)。品質が素晴らしく、万年筆と一緒に使うと本当にうれしくなる。A4 サイズは大きいのでルーズリーフを挟み込むのにもよく、とくに UI デザインには A4 が本当に最適なサイズだ
私は20年以上ソフトウェアを作ってきて、その前には有機化学の博士課程と研究もしていた。オーストラリアで「シニア」として十分な収入を得ている。私は aphantasia(心の中で映像を思い描けないこと)があるので、ペンと紙やホワイトボードを本当によく使う。ERD、マインドマップ、シーケンス図など、さまざまな可視化のためだ。ReMarkable を使うようになってからは、内容の移動などがしやすくなり、効率も上がった。ある人には「純粋なロマン」に見えるかもしれないが、私の成功にはペンと紙が不可欠だった
いろいろなノートツールやアプリで整理習慣をつけようとしてきたが、今年の新年の目標として日付を書ける To-Do ノートパッドをひと束買い、会議や作業中にただ自由に書くようにしたところ、生産性がずっと上がった。気になる人のために 私が使っているアイテム を共有しておく
オフィスで働いていたころ、恋しいものの一つは大きなホワイトボードの前に立って同僚と設計する時間だった。同僚とマーカーを手にアーキテクチャを考えていると、本当に洗練されたクラス設計が生まれることがあった
私はこれに excalidraw を使っていて、ホワイトボードよりいいと思っている。1) もっときれいで散らからない、2) デジタルマーカーは乾かない、3) 修正や変更がしやすい。技術設計をするときは、いつも excalidraw から始める
私は24インチのペンディスプレイを使っている。以前 CTO だったときは、チームメンバー全員にも配っていた。共有デジタルホワイトボードなら何度も描き直す必要がなく、そのまま編集し続けられるので本当に便利だ。ホワイトボードを消す前に写真を撮る必要もない
ホワイトボード(黒板も含む)は命だ