エンジニアの知的生産術
masuyama13.icon 大事だと思ったこと
新しいことを学ぶには
学びのサイクル
「情報収集(具体的な体験)→モデル化(抽象化)→検証(実践)」の繰り返し
実践してみて「この方法ではうまくいかない」ことがわかったら、学びのチャンス
情報収集→新しい仮説→実践→…
エジソン「私は失敗をしたことはない。1万通りのうまくいかない方法を見つけただけだ」
学びのサイクルを回す原動力:やる気
やる気が出ないことを学ぶことは不可能
情報収集
自分が知りたいところからやる
遅延評価的勉強法
YAGNI原則(You Aren't Gonna Need It) 必要になるまで機能を追加してはいけない
やる気を高めるには、将来より「今」の近いゴールを目指す
目的を明確化する
大まかに全体像を把握する
モデル化(抽象化)
パターンの発見 => 抽象化・一般化・汎用化
発見したパターンが正しいとは限らない
どうやって抽象化するか
比較、たとえ話、歴史
本を読んでも、具体的な経験なしにパターンだけ習得することはできない
自分の言葉で説明できるか?
自分の経験に基づいた具体例を挙げることができるか?
自分の目的を達成するためにその知識を使えるか?
検証
プログラミングは他の分野に比べ検証がやりやすい
学びのサイクルを高速で回せる
やる気を出すには
やる気が出ない人の65%はタスクを1つに絞れていない
タスクを絞るためにまず全体像を把握
全部書き出す
タスクを1つに絞れない人の76%はタスクを書き出していない
やるべきこと気になることを1箇所に集める
人間はたくさんのことを一度に覚えておくことができない
1. 全部集める
やるべきかどうかなどの判断は一切せず、「気になること」を全部書き出す
2. 処理
これは何か?
自分は行動を起こす必要があるか?
どういう結果を求めているのか?(ゴールの明確化)
次にとるべき具体的な行動は?
「優先順位付け」は難しいタスクなので今はやらなくていい
後からできるようになるもの
タスクを1つ選んでもやる気が出ないとき
タスクが大きすぎる
分割する
タイムボックス(時間で切る)
終了条件が明確でないものなど
ポモドーロ
1日にできるのはせいぜい8ポモドーロ
見積もりがうまくなるためには、まずは時間を計測する
記録と計測結果を観察して学ぶ
記憶を鍛えるには
記憶は段階的に作られる
筋肉と同じように、繰り返すことによって徐々に強くなっていく
インプットだけでなく、インプット・アウトプットを繰り返す必要がある
1ヶ月後に復習すると効果的
メモ
新しいことを学ぶには
学びのサイクル
「情報収集(具体的な体験)→モデル化(抽象化)→検証(実践)」の繰り返し
実践してみて「この方法ではうまくいかない」ことがわかったら、学びのチャンス
情報収集→新しい仮説→実践→…
知的生産術の学び方も同じ
エジソン「私は失敗をしたことはない。1万通りのうまくいかない方法を見つけただけだ」
学びのサイクルを回す原動力:やる気
社会人になってから、やる気が出ないことを学ぶことは不可能
よりやる気の出ることを見つける
ゴールは明確に
情報収集
自分が知りたいところからやる
遅延評価的勉強法
今の自分に必要なところからやる
本を1ページずつ読むのではなく、目的に沿ったところを読む
断片的な情報があとからつながっていく、という考え方
YAGNI原則
You Aren't Gonna Need It「そんなの必要ないよ」
必要になるまで機能を追加してはいけない
エクストリームプログラミングで提案された原則の一つ
「今どうあるべきか」にフォーカス
「将来的にはこうかもしれない」と考えるのはミッションから気を散らすこと
やる気を高めるには、将来より「今」の近いゴールを目指す
Matz氏のソースコードの読み方
全体を読もうとしない
面白そうなところをつまみ食い
目的を持って読む
目的を明確化する
大まかに全体像を把握する
新しい分野に挑戦するとき「写経」は有用
モデル化・抽象化
モジュール
ソースコード間の相互作用を制限するために生まれた
モデル・ビュー・コントローラの「モデル」
プログラムの本質的な部分
パターンの発見
=> 抽象化・一般化・汎用化
発見したパターンが正しいとは限らない
どうやって抽象化するか
比較
同じところと違うところ(グラデーションになっている)
たとえ話
歴史
本を読んでも、具体的な経験なしにパターンだけ習得することはできない
自分の言葉で説明できるか?
自分の経験に基づいた具体例を挙げることができるか?
自分の目的を達成するためにその知識を使えるか?
検証
プログラミングは他の分野に比べ検証がやりやすい
学びのサイクルを高速で回せる
やる気を出すには
やる気が出ない人の65%はタスクを1つに絞れていない
タスクを絞るためにまず全体像を把握
全部書き出す
タスクを1つに絞れない人の76%はタスクを書き出していない
やるべきこと気になることを1箇所に集める
人間はたくさんのことを一度に覚えておくことができない
1. 全部集める
やるべきかどうかなどの判断は一切せず、「気になること」を全部書き出す
2. 処理
これは何か?
自分は行動を起こす必要があるか?
どういう結果を求めているのか?(ゴールの明確化)
次にとるべき具体的な行動は?
行動を起こす必要がないもの → 「ゴミ・資料・保留」に分類
具体的な行動が複数 → 「プロジェクト」にする
具体的な行動が2分以内でできる → 今すぐやる
具体的な行動をやるのが自分でない → 他人に任せて「連絡待ちリスト」に入れる
具体的な行動をやるのが特定の日時 → カレンダーに書く
どれにも当てはまらない → 「次にとるべき行動」のリストへ
今日できることには限りがある
「優先順位付け」は難しい
何を重視するかによって優先度は変わるもの
「優先順位付け」は今やらなくていい
後からできるようになるもの
タスクを1つ選んでもやる気が出ないとき
タスクが大きすぎる
タイムボックス(時間で切る)
終了条件が明確でないもの
ポモドーロ
見積もりがうまくなるためには、まずは時間を計測する
記録と計測結果を観察して学ぶ
記憶を鍛えるには
記憶は段階的に作られる
筋肉と同じように、繰り返すことによって徐々に強くなっていく
記憶のフェーズ
インプット「記銘」
アウトプット「想起」
脳は、似た情報が繰り返し入ってくると無視するようになる
インプットだけでなく、インプット・アウトプットを繰り返す必要がある
テストのあとに復習すると記憶が強化される
大学生の実験
1回学習群:教科書を1回だけ読むグループ
繰り返し学習群:教科書を4回繰り返して読むグループ
思い出し練習群:一度読んだあと、思い出せるだけ思い出して、それからもう一度読んで、また思い出せるだけ思い出す、という学び方をしたグループ
正答率
1回学習群:30%、繰り返し学習群:50%、思い出し練習群:70%
プログラミングはテストではないので、インプット・アウトプットのサイクルを高速で回せる
間隔反復法
2回勉強をして2回目の勉強の6ヶ月後にテストをする実験
正答率が一番高かったのは1ヶ月あけたとき:55%
1週間、3ヶ月、6ヶ月あけたとき:40〜50%
1日:33%、20分:25%
効率的に読むには
本を読むことの目的
娯楽(今回は考えない)
情報を見つけること
理解を組み立てること
情報を得るだけでなく、理解を組み立てること
人間は自分の経験した情報から抽象化を重ねて、脳内にモデルを築き上げる
他人の脳内のモデルを直接自分の脳内に入れることはできない
本に書かれた文字を一つずつインプットして自分の脳内で組み立て直すこと
口頭とあまり変わらない
外部から入ってきた情報をきっかけに自分の経験を交えて自分のモデルを組み立てる
1ページ900文字で300ページの本
音読:1冊15時間
目の限界速度:1冊30秒
読書速度のボトルネックは、多くの場合「理解速度」
情報を取り込むところではなく、それを組み立てていくところ
単位時間あたりの情報入力量を増やしても単位時間あたりの理解量は増えない
この世に存在する本をすべて読むことはできない
「読んだ」と「読んでいない」を明確に区別することはできるのか?
1. ぜんぜん読んだことのない本
2. 人から内容を聞いたことのある本
3. ざっと読んだことのある本
4. 読んだことはあるが忘れてしまった本
まずはざっと読むという選択肢
数学分野での「わかる」の定義
何も見ないで自分の言葉で説明できる状態
他の分野ではそこまで必要なのかどうか
「読む」というタスクの完了条件とは
「理解する」は不確実
読書は手段、目的は別
必要なときに読み返せるようにする
ほかの知識との結合を起こす
思考の道具を手に入れる
言葉
復習のための教材を作る
人に教える
考えをまとめるには
情報が少なすぎるのか多すぎるのか?
全部書き出す
まずは100個
質や重複を気にしない
アイデアを思い付くには
まずは情報収集
言語化
フレームワークのメリット・デメリット
たとえ話
身体感覚や経験、違和感に注目する
磨き上げる
他人の視点が大事
誰からでも学ぶことができる
自分の知らない分野のことを必ず知っている
盲点に気づく
顧客は自分と同じ意味でその言葉を使っているか?
何を学ぶかを決めるには
何を学ぶのが「正しい」か?
数学分野では、公理の組み合わせによって論理的に導かれたものは「正しい」と考える
実験をいくら繰り返しても「正しい」とは言えない
科学の分野では、実験を繰り返すことで信頼性の高まった仮説を「正しい」と表現したりする
意思決定の正しさは数学や化学とは性質が異なる
悩むということは、自分の知識ではどの選択肢も同等ということ
結果は事後にしかわからない
自分経営戦略
何を学ぶかで1ヶ月悩むよりは、何でもよいから1ヶ月学んでみる
「何を学ぶか」という問いに対する正解はない
習得済みの人から学ぶのはコストが安い
質問しないより質問するほうが経営上正しい行動
Googleの例:15分ルール
差別化戦略
卓越すると成長の機会が得やすくなる
複数分野のかけ合わせ
共通の知識が少ないとコミュニケーションが困難
知識を創造する
教科書に書かれたことを暗記しても差別化にはならない
それを応用して状況に応じて新しいプログラムを生み出す力が価値の源泉