「エンジニアの知的生産術」を読み終えました。感想は、一言で言えば凄く学術的な本です。記憶力を考えるために、脳の仕組み(海馬)にまで話が及びます。
内容としては、汎用的に使える知的生産術について書いた本です。どの技術の修得であっても、大丈夫です。

エンジニアの知的生産術 ──効率的に学び、整理し、アウトプットする (WEB+DB PRESSプラスシリーズ)
- 作者: 西尾泰和
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
ただ、本書の内容はわりと抽象的であり、箱の積み上げで言ったら、二段目や三段目に位置するような本です。そこで、自分なりの意見や考え方を交えながら、具体的に解き明かしつつ、まとめていきたいと思います。
目次
学習のプロセス
本書では、学習のプロセスを3段階に定義しています。
- 情報収集
- モデル化・抽象化
- 実践・検証
情報収集
情報収集は、読んで字の如くですが、情報を集めます。ここで重要な点は、最低限必要な情報にフォーカスして、集めることです。
YAGNI原則
YAGNI原則とは、もしかしたら必要になるかもしれない機能は、追加しない方が良い。すなわち、ソフトウェアにおける機能は、本当に必要になった段階で開発するべきであるという考え方です。
本書は、これを学習プロセスに応用しています。つまり、最低限必要な情報に限定して、学ぶのです。技術を学ぶにしても、分厚い本の中身を、体系的に1から10まで学ぶ必要はありません。
知りたい事の目標を明確に持つ
目標は、具体的であるべきです。例えば私が、「Rubyをマスターする」という目標を掲げたとします。さて、この目標には、いくつかの問題点があります。
- 何を持ってマスターしたと言えるのか、基準が曖昧である
- 目標達成の基準が曖昧でであるため、どこまで学習すれば良いのか分からない
上記に代表されるように、学習系のタスクや目標は、ゴールが曖昧であるという欠点を併せ持っています。
曖昧な達成目標は、終りが見えない事によるモチベーションの低下を誘発するので、どうにかしなければなりません。
全体を俯瞰した上で具体的な目標を決めよう
Rubyの学習にも、様々な側面があります。たとえ曖昧な目標であっても、ブレークダウンすれば具体的な目標が見えてきます。
- 基本構文の知識を学ぶために、「初めてのRuby」を読み終えることを目標にしよう
- ファイル処理を理解するために、Rubyでファイルに書き込みが出来るコードを実装してみよう
- ...etc
目標が具体的であれば、達成への道筋を具体的に描けるようになります。
あなたは、なぜ学ぼうとしているのか?
本来、学習することは目的ではありません。仮に、あなたはRubyを学びたいと思っているとします。
「あなたは、なぜRubyを学びたいと思ったのでしょうか?」
プログラミング言語を覚えるということは、覚えたプログラミング言語を使って、何かをやりたいです。
上記の質問を、自らに問いかけてみる必要があるでしょう。
モデル化・抽象化
抽象化とは、具体的な経験や知識を、応用が効くように汎用的な知識に落とし込むことです。例えばプログラミングの場合、言語は違えど、必要な知識や考え方は似通っています。
- アルゴリズム
- if、for、whileなどの基本構文
- 変数という入れ物がある
抽象的な知識は、覚えてしまえば、様々な局面で応用する事ができます。
色々な事に足を突っ込んで見る
抽象的な知識を発見するコツは、少しだけ違う分野に足を突っ込んでみることです。
違う分野において必要だった知識と、本来自分が持っている知識を、比較してみましょう。差分があれば、それは具体的な知識です。
一方で、差分がなかった領域は、他の分野でも応用できる汎用的な知識になります。つまり、共通項は汎用スキルなのです。
検証
情報は、覚えただけでは定着しません。実際に使ってみて、初めて定着します。
アウトプットする事で、情報を咀嚼する
情報は、アウトプットする事が重要です。なぜ、アウトプットが重要かと言いますと、アウトプットする過程で情報を咀嚼するからです。
私の場合は、ブログに記事として書いてますが、アウトプットは何でも構いません。実際にプログラムを書いてみるでも、覚えた技術でサービスを構築してみるでも、何でも良いのです。
アウトプットをしてみると、違和感を感じることがあります。それこそが検証です。覚えた知識を、何もそのまま覚える必要はないのです。
ただ、黒板に書いた内容をただ書き写しただけのような、考える過程がないアウトプットは効果が薄いです。その点は注意しましょう。
やる気・モチベーションを出すには
物事を達成するには、モチベーションが非常に重要な役割を果たします。やる気は脳を刺激するので、活性化を引き出すのです。
具体的な目標で達成感を味わう
やる気を引き出すコツは、具体的なゴールを持つ事です。ゴールが明確であれば、プロセスが描けます。終わりまでの過程が見えていれば、やる気も出ます。
反対に、終わりが見えないと、いつ終わるのかという不安に駆られます。これでは、やる気を出すどころの話ではありません。
大きいタスクは小さく区切る
学校の授業は、集中力が途切れないように、細かく休憩を挟む仕組みになっています。仕事や学習のタスクであっても、それは同じです。
タスクは、細かく分割されるべきです。集中力の持続も大事ですが、タスクは細かく分割することで、多くの達成感を味わえるようになります。
タスクの区切り方
タスクを区切るには、大きく分けて2つのパターンあります。
- 成果で区切る: Rubyでファイルが書き込めるようになる
- 数や時間で区切る: 「初めてのRuby」を10ページ読む
成果で区切るのではあれば、ぜひマイルストーンを設定してみましょう。最終的な目標達成への道のりを、細かくブレークダウンしていくのです。
考えをまとめるには
いきなり情報をまとめようとしない
考えをまとめるためのコツは、いきなり考えをまとめようとしないことです。全体像を把握していない状態では、まとめようとしても闇雲になってしまいます。
まずは全てを書き出してみる
大事なことは、情報や考えを洗い出してみることです。まずは考えを、全て洗い出してみましょう。そうすると、意外とたくさんの考えがある事に気づきます。
やり方は、ノートに書き出していくでも、テキストファイルに箇条書きでも、付箋に書きだしていくでも構いません。
洗い出すことの目的は、全体像の把握にあります。
考えをグルーピングしたり、関連性を見出しながらまとめていく
洗い出した考えには、何かしらの共通点や関連性が、必ずあります。これらをまとめていく事で、徐々に本質や根源へと近づいていきます。
ここでのポイントは、洗い出す過程と、まとめていく過程を、完全に分けて考えることです。人間は、一度に多くのことを出来るようにはなっていません。
洗い出す時はひたすら洗い出し、まとめる時はひたすらまとめましょう。
さいごに
他にも、記憶の鍛え方や、効率的な読み方といった章がありましたが、本記事では割愛します。
- 目的を持って学ぶ
- 具体的なゴールを設定して、やる気を引き出す
- 抽象化する事で、色々な局面で応用できる汎用的なスキルを身につける
普段から意識しているようで、私も含め、意外と曖昧な目標を設定しがちです。そして、思っていたよりもやる気が重要である事を学びました。
今日からは「ブログを書く度にビールを一杯飲む」というご褒美を、自分に設定してみる事にしようかな(笑)。

エンジニアの知的生産術 ──効率的に学び、整理し、アウトプットする (WEB+DB PRESSプラスシリーズ)
- 作者: 西尾泰和
- 出版社/メーカー: 技術評論社
- 発売日: 2018/08/10
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る