$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

「やさしいコンピュータ科学」読んだ

最近、流行りのものを勉強するより、技術の賞味期限が長いコンピュータサイエンスの基本の理論を再勉強しようという気持ちが強い。そこで、とりあえず概論でも見るかという気持ちになって、「やさしいコンピュータ科学」を読んだ。

この本はコンピュータ科学の概論を出来るだけやさしく書いた本。カバーする範囲もある程度広範囲で、プログラミングとは何か、プログラミングの最小構成要素、アルゴリズム、電子回路、計算困難などを取り扱っている。やさしい、というワードを関しているだけあって、たしかに変に専門用語は使っていない。

ざっと眺めただけなのだけど、個人的には大学で習ったことをぼんやりと思い出した。ぼんやりと思い出して、そういえばこういうのもあったなあという気持ちにはなれたので、まあ全体の概論はもう理解できているとみなして、もう少し各論でも勉強するかという気持ちになった。

感想として、やさしいコンピュータ科学と言っているものの、まあ実際大学とかで習わないならちょっとこの本は難しいかな...と思った。本当にまず表面をざっと勉強するなら別の本を読んで、興味ある分野や今まさにやっている分野をさらに深掘りするほうがいいのかなあと思う。あんまり読んでないけど例えば「コンピュータはなぜ動くのか」のシリーズはもっと簡単に書かれているのかな?

[asin:B00HRN7VK0:detail]


この本を読んでいて、アルゴリズム周りはやはりあんまり得意じゃないなと思ったので、次はそのあたりを勉強してみたい。アルゴリズムの勉強の仕方については 2011-09-22辺りを参考に勉強してみる。特に数学ガール乱択アルゴリズムという本や珠玉のプログラミングあたりをまず読んでみたい。

「リファクタリング・ウェットウェア」を再読した

最近、学生時代よりも学習時間を取れなくなっていて、このままだと新しいことが身につかなくなっていっていくのではという危機感があった。またメンターをするにあたって、人の学習モデルをある程度理解しておいて、アドバイス出来るようにしたいという思いもあった。そこで、昔読んだ「リファクタリング・ウェットウェア」に、学習に関することが書いてあった記憶があったので、さらっと再読した。

[asin:4873114039:detail]

この本は、人間の脳について研究していた著者が、脳の働き方などについて解説し、その上で脳を活かすためにはどのようにしたら良いかについて解説している本。脳をハックするということを題材にしているのが面白い。

この本を読むと、人間の技能習得モデルとか、より良い学習の仕方とか、直感をうまく活かす手法とか、そのようなことを学ぶことが出来る。一度でも読んでおくと、今後の学習が効率的になるので、読んでみると良さそう。

昔の感想とかはブログを書くことによって「教える」 - $shibayu36->blog; とか、リファクタリング・ウェットウェア読んだ - $shibayu36->blog; とかに書かれている。


今回再読したら、次の点が印象に残った。

  • ドレイファスの技能習得モデル
  • 効率的な学習の手法
  • 散歩の手法
  • 書籍から学ぶためのSQ3R

ドレイファスの技能習得モデル

この本では、ドレイファス兄弟による、人間の技能習得過程についてのモデルについて解説されていた。これは、ある人の「技能ごと」に初心者・中級者・上級者・熟練者・達人という段階に分け、それぞれの段階ごとに適切な対処や学習法を適用するという考え方だった。詳しくは エンジニアの技能レベル〜ドレイファスモデル〜 にいい感じにまとめられていたので、こちらを参照。


実際、人に仕事を任せたり仕事を教えたりする時に、その人の今の能力を何も考えずに同じような任せ方をするとうまくいかないことがある。例えば、新しく入ってきた人にいきなり丸投げすると途方にくれるとか、逆にベテランに事細かに指示して任せるとモチベーションが高まらないとか。このような問題に遭遇しないために、ある程度人間の技能習得モデルのようなものを知っておくと、適切な任せ方を知ることが出来るかもしれない。

同様に、自分が学習をする時も、自分のある能力の現段階の技術レベルをモデルに従って理解しておくことで、その段階に応じた効率的な学習を検討できるように思った。


今回のモデルとは違うけど、似ているモデルである「発達の4段階」というのを「1分間リーダーシップ」という本で昔読んだ。こちらも同様に参考になりそう。詳しくは以前の目標と発達度によってリーダーシップを使い分ける - 「1分間リーダーシップ」読んだ - $shibayu36->blog; というブログ記事を参考。

効率的な学習の手法

この本には効率的な学習の手法についても言及があった。それによると、学習するときは、まず学習したい分野の実践を経験し、その後に体系的に書籍や授業、セミナーなどで学ぶと良いらしい。


ここで自分の大学時代を思い出してみると、そのころはプログラミングという経験を一切したことがなかったので、コンピュータサイエンスを学んでも何一つ理解することができなかった。しかし、今仕事でいろいろ経験した段階で、もう一度授業でならったことを思い出してみると、すんなり理解できることが多い。

つまり何かの知識を言語で学ぶ場合には、一定の経験が必要なのでは無いかと感じる。これは最近本を読んでいる時にも感じていて、本を面白いと感じるときは、基本的にその関係のことを昔経験している場合であることが多い。


こう考えると、まず何も経験せずに書籍やセミナーで学ぼうとするのは間違いだろう。資格とかを取得するときも、経験なしに受けるよりは、経験したことに関する資格を取るというのが学習には役立ちそうである。そこで、まずは手を動かしたり、実践に投入されていて、そこで疑問に思ったことを書籍などで学習すると良いのではと思った。

散歩の手法

エンジニアをやっていると、ずっと悩んでいた問題が、帰り道で歩いている時とかシャワーをあびている時にいきなり思いつくという経験をすることがある。そのようなことを能動的に起こすための散歩の手法が書かれていたことが面白かった。

本によると、次のような手順で散歩すると良いみたい。

  • 今解けない問題を全て紙に書き出す
  • その中で簡単そうなことを心に留める
  • 心に留めながら、そこまでその問題に集中せずに、ぼんやりと散歩をする
  • 解決策を思いついたらメモをする

ここでのポイントは、散歩中はそれについて考えすぎてはだめで、頭に留めておく程度にすることらしい。本当に効果があるかは分からないけど、とりあえず騙された気持ちで試してみるかなと思った。

書籍から学ぶためのSQ3R

書籍から効率的に学ぶためのSQ3Rという手法が紹介されていた。その手法は以下の手順で本を読むと良いとされている。

  • 調査(Survey) : 全体の要旨をつかむため、目次と各章の要約を流し読みする
  • 質問(Question) : 質問点を書き出す
  • 読書(Read) : 全文を読む
  • 復唱(Recite) : 要約し、ノートに書き、ポイントを自分の言葉でまとめる
  • まとめ(Review) : もう一度読み、さらにノートに書き出し、仲間と議論する

これを見たら、意外と今の自分の読書のやり方は悪くなかったんだなーと思った。今の読書の方法は 先に疑問を考えてから本を読む - $shibayu36->blog; とかに書かれているのだけど、

  • 目次を読んで疑問を書く -> 調査と質問に該当
  • 復唱 -> 読書ノートに該当
  • まとめ -> ブログに書くに該当

今の読書法になぜなったのか覚えていないのだけど、もしかしたら昔この本を読んだ記憶が残っていて、だんだんこの手法になっていったのかもしれない。まあ、今の手法で良いということも分かったので、このまま続けていきたいと思う。

まとめ

リファクタリング・ウェットウェアを読んで、参考になったことをまとめてみた。脳の仕組みを学ぶという点でけっこう面白いので、読んだことない人は流し読みでも良いので見てみると良さそう。

読書ノート

  • ドレイファスモデルは「技能ごと」に適用するモデル 6 ☆
    • 技能ごとに初心者〜達人まで
    • 同じようなことが1分間シリーズにも書いてあった記憶
  • ドレイファスモデルの初心者から達人までの5段階 6-12
    • 初心者・中級者・上級者・熟練者・達人
    • 初心者にはレシピが必要
    • 中級者は全体像を見たがらない
    • 上級者は問題解決ができる
    • 熟練者は自己補正が可能
    • 達人は直感で動く
  • ルールは達人を破滅させる 14
  • 初心者は曖昧さがない明確な指示が必要 16
  • ドレイファスモデルにおける技能習得段階の図 17
    • 直感 <-> ルール
    • 特定部を重視する <-> 全てを考慮する
    • システムの一部 <-> 遊離した観察者
  • 技能レベルの引き上げに役立つ一番の方法は、中級者の周囲に優れたお手本を配置すること 23
    • 命令に従っている中級者から、自身で問題解決できる上級者に引き上げる方法
  • 音楽習得の秘訣は、模倣・同化・革新の3段階を経験することであり、これは全てに通じる 24
    • 守破離も同様
    • まずは真似、それを自分の中に定着させ、さらに模倣を超える
  • ドレイファスモデルで重要なのは、「ビギナーにはコンテキスト(状況)に依存しないルールが必要だが、達人はコンテキストに依存した直感を使う」という認識 30
  • 脳には線形の処理方式であるLモードと、非同期で全体論亭な方式であるRモードがある 37
    • Rモードは直感、問題解決、創造性
    • Lモードは細部に目を配り、うまく仕上げる力を与える
  • Lモードの特徴は言語的・分析的・象徴的・抽象的・時間的・論理的・係数的・論理的・直線的 47
  • Rモードの特徴は非言語的・総合的・具体的・類推的・非合理的・空間的・直感的・全体論的 49
  • プログラマーにとってはLモードが重要に見えるが、Rモードも非常に重要 52
  • 学習するときは、まず経験し(Rモードを使って学習し)、その後に知識を付ける(Lモードを使って学習) 72
    • RモードからLモードへの流れを作る
    • 昔読書して理解できなかったが、それに関係する経験をしてからもう一度読むと、非常に理解できる、みたいなものかな?
  • 散歩の手法 92
    • 帰り道とかシャワーを浴びている時に、はっとアイデアを思い出すようなことを引き出す方法
    • 今解けない問題を全て紙に書き出す
    • その中で簡単そうなことを心に留める
    • 心に留めながら、そこまでその問題に集中せずに、ぼんやりと散歩をする
    • 解決策を思いついたらメモをする
  • 人間の思考のバグ 107
    • 認知バイアス : 考えが横道にそらされてしまう
    • 世代的類似性 : 時代の影響を受けてしまう
    • 性格的傾向 : 性格によって思考が影響される
    • ハードウェア的バグ : 脳の古い部分が、より優秀な部分より優位に立ってしまう
  • 人の性格的傾向を知るための四つの指標 126
    • 外向か内向か
    • 感覚(実用性や事実重視)か直感(想像力や創造力)か
    • 思考(ルールに基づく)か感情(ルールに加えて、感情的影響を考慮)か
    • 判断的態度(早く結論を出したい)か知覚的態度(観察を続ける)か
  • 一定の状況で自分は取らない態度を相手が取った場合、相手がおかしいという問題ではなく、性格的指向の不一致によるものもある 128
  • RモードからLモードの流れを作る学習法としては、全体論的に経験を積むところからはじめて、それからより定型的な訓練で技術を習得していく方法にうつり、学習を実り多きものにしていく方法 134
  • 「SMART」な目標とは 144
    • Specific(具体的)、Measurable(測定可能)、Archievable(達成可能)、Relevant(適切)、Time-boxed(期限を定める)
    • 「私がいつまでに何をおこなう」を明言する 146
  • SMARTな目標を、いろんな期間で立てる 149
    • 現在からすぐ、翌年まで、5年後まで、など
  • 学習のタイプには、視覚型、聴覚型、身体感覚型の三つのタイプに大別できる 152
  • 書籍からはSQ3Rの手法で学ぶ 161
    • 調査(Survey) : 全体の要旨をつかむため、目次と各章の要約を流し読みする
    • 質問(Question) : 質問点を書き出す
    • 読書(Read) : 全文を読む
    • 復唱(Recite) : 要約し、ノートに書き、ポイントを自分の言葉でまとめる
    • まとめ(Review) : もう一度読み、さらにノートに書き出し、仲間と議論する

目標設定の仕方を学ぶ - 「ザ・コーチ」読んだ

最近コーチングという分野に興味を持って、まずは簡単でさくっと読めそうな「ザ・コーチ」という本を読んだ。


この本は、副題も含めると「ザ・コーチ - 最高の自分に出会える『目標の達人ノート』」という題名で、その名のとおり目標設定をなぜ行うのか、どうやって行うのかについて知ることが出来る本だった。1分間シリーズのように小説形式となっていて、すぐに読むことが出来る。

現在、自分が目標って何のためにあるのかもう一度知りたいと思っていた時期だったので、非常に面白かった。読書メモがかなりの量になった。マネージャーをやっている人や、その方向に行きたいと思っている人、他にも教育を担当している人は是非おすすめ。

以下のことが印象に残ったので、それについて書こうと思う。

  • 目的・目標・ゴールの定義と、目標設定の仕方
  • 会社の目標と個人の目標の接点を見つける

目的・目標・ゴールの定義と、目標設定の仕方

目的・目標・ゴールの定義

この本の最初の方で、まず目的・目標・ゴールの定義について書かれている部分がある。これによると、次のように書かれている。

  • 目的とは「成し遂げようと目指す事柄」
  • 目標とは「目的を達成するために設けた目当て」
  • ゴールとは「目的のための最終的な目印」

また、目的・目標・ゴールの具体的な例として、アスリートの例をあげられていた。

  • 目的 : 自分が可能性に挑戦することで、子どもたちに夢を持つことの素晴らしさを伝えたい
  • ゴール : 今度のオリンピックで金メダルを取る
  • 目標 : 今月、合計五百キロを走り込む

そして、目的・ゴール・目標の関係としては、まず自分が成し遂げたい目的があり、その目的のためのゴールが複数あり、それぞれのゴールのためのステップとして目標があるということだった。

目標設定の仕方

確かに目標を設定するときに、このことを忘れがちになるので、はっきり意識しておいたほうが良いと思った。得てして「どこに行きたいのか」をはっきりさせず、ただ短期的な数値目標を個人目標にしてしまい、目標の意味がわからなかったり、なんとなくノルマに感じるだけになってしまったりする。例えば、 会社は真面目に経営されるほど「学習しない組織」になってしまう | iXキャリアコンパス にあげられているデメリットは、まさにゴールとかを決めずに短期的な目標を作っていると陥るようなことについて紹介されているのではないか、と思った。


これらから、目標設定をするときは、まず目的やゴールをはっきりさせ、その上でステップとしての目標を決めなければいけないなと思った。自分の中ではゴールと目標のイメージは下図のとおり。

f:id:shiba_yu36:20161023134206j:plain

この図から考えると、目標設定の手順としては

  • まず目的やゴールをはっきりさせる
    • ゴールは、その人がイメージしやすいものでいい
    • 例えば3年後になりたいエンジニア像とか、クリエイターを応援するためのサービスを作るとか
  • 次に自分の現在位置をはっきりさせる
  • 現在位置とゴールを比べれば、差分が明らかになるので、その差分を埋めるためのステップを目標として置く

となりそう。このようにゴールをはっきり作って目標を決めることで、目標1や2はゴールに向かって一直線になっているのでよい目標だとか、目標3は少し外れてしまったから微妙だったかもしれないとか、振り返ることもできそうだった。もしゴールを定めなければ、振り返るどころか自分のめざしたいところの逆方向に行ってしまうかもしれない。

以上のように、今後はこのような手順を意識して目標設定をしていきたい。

このテーマの蛇足

このテーマについて読んで、経営の話とかでよく出てくるミッション・ビジョン・バリューという言葉を思い出した。ミッション・ビジョン・バリューという言葉は、この目的・ゴール・目標と近いと思った。しかし、個人的にはミッション・ビジョン・バリューという言葉はあまりしっくり来ていない。そこで、今回の本で出て来るワードを使って、ミッションを目的、ビジョンをゴール、バリューを価値観(このワードもこの本の別のところで出てくる)、そしてそれを達成するためのステップを目標、という言葉に言い換えたほうが、自分の中でなんとなくしっくりくるなと思った。

会社の目標と個人の目標の接点を見つける

組織が人に目標を与える時のコツとして、会社の目標と個人の目標の接点を見つけて共有するとよいということが書いてあった。会社にも何かしらの目的とゴールがある。そして個人にも同様に目的とゴールがある。なので、会社のゴールと個人のゴールをすり合わせ、それらがある程度一致できるような部分を目標にすると、個人としてのモチベーションにもつながるということだ。

自分の印象では、このような接点を見つけて目標を立てるということをちゃんとしている会社は、あまり無いだろうなとも思った。例えば会社に、今期のチームは◯億円売上をあげることだから、チームの人数で割ると君は◯百万の売上を目標に頑張ってくれと言われる会社が多い印象である。これでは目標に納得はいかないだろうし、それは会社の都合でしょとしか思えない。

この時に、もし会社の目的がIT技術を使って社会を豊かにするとかになっていて、またAI技術について興味がある人がいた時に、個人目標で「AI技術を社会に活用するために、半年間AI技術の学習をする」とかになっていたら、先程の目標よりはもっとやる気になるだろう。

このようなことは目標を一緒に立てるマネージャと部下の両方共に意識しないといけないだろうなと思う。マネージャは決められたチーム目標を単にブレイクダウンして押し付けるだけにせず、部下のやりたいこととすり合わせる必要がある。逆に部下はチーム目標を理解した上で、それと一致するような自分のやりたいことについて、もっとアピールしなければならないだろうなと思った。部下としてもマネージャのせいにばかりしていては進歩がない。

まとめ

今回は「ザ・ゴール」という本を読んで、目標設定について学習したことについて書いてみた。非常に面白い本で、すぐに読める本なのでとにかくオススメ。マネージャだけでなく、誰かの教育係となっている人にも参考になると思う。

今回の本はコーチングのことについて学ぼうと思い、読んでみた。しかし、コーチングという分野を体系的に学べるような本ではなかったように思った。

そこで今後はもう少し体系的に学べそうな本を読みたい。「コーチングのすべて」、「コーチング・バイブル」あたりを考えている。他にも学習パターンとかを知りたいので、「経験学習入門」という本も読んでみたい。他におすすめな本があれば教えてください。

読書メモ

読んでいる時に書いた読書メモを貼り付けておく。今回書いたところ以外にも、「ゴールを設定することを妨げているもの」というテーマを書いていた部分も面白かった。

夢・目的・目標・ゴール・ビジョンの意味とは何か
  • 夢・目的・目標・ゴール・ビジョンの意味 464 ☆
  • 目標とは「目的を達成するために設けた目当て」。目標はあくまで、目的に向けての目印でしかない 479
  • 目的とは「成し遂げようと目指す事柄」 479
  • 目的を実現するために目標を定め、それに向かって行動するのが大事 479
  • ゴールとは「目的のための最終的な目印」 495
  • 目的・ゴール・目標の三つが揃って初めて、目標を立てることの効果が生まれる 526
  • 夢とは「将来実現させたいと、心の中に思い描いている願い」 526
  • ビジョンとは自分自身や家族、チームや会社の「将来の理想像や未来の光景」 561
  • ドリームツリーの図 599
    • 自由に「夢」をリストアップする。その中から大事ないくつかを選ぶ。なぜそれを手にしたいのかといった「目的」や「ゴール」をはっきりさせる。そして、ゴールを手にするために、具体的な通過点の「目標」を設定する。さらにゴールに向かう行動を促進するために、「ビジョン」のイメージを心のなかに描く
    • まず目的があり、その目的のためのゴールがいくつか設定され、ゴールのための目標がさらにいくつか設定されるイメージ
夢・目的・目標・ゴール・ビジョンを明確に設定して行動していくことで、自分が得られるベネフィット
  • 人間は物質的なこと(車や家など)をゴールとして設定するが、実はゴールを手にして得られる感情を求めている 747
  • 「夢」「目的」「ゴール」を意識していると、それに関係する情報をキャッチできる可能性が高くなる 772
  • ゴールを目指すことは決断の連続なので、自身の選択力と決断力が磨かれる 792
  • 夢・目的・目標・ゴール・ビジョンを設定することによるベネフィット 811
夢やゴールを設定することを妨げているもの
  • ゴールや目標を設定するときのブレーキ一覧 967 ☆
    • 結果だけで決められる評価
    • ゴールという意味についての無知
    • 変化や選択、決断に対する恐れ
  • ゴールを設定するブレーキを軽くするには ☆
    • ブレーキを感じたらゴールを小さくする 975
    • ゴールや目標に対する知識を教える 996
    • 目標を決めたら最後までやり遂げる必要があるという考えを、あくまで通過点なので再設定して良いという考えに変える 1006
    • 結果に価値を置く考え方を、成長の過程に価値を置く考え方に変える 1015
    • 失敗の意味付けを悪いことではなく、学習のチャンスという意味に変える 1022
  • 人に教えるときは、Why(理由や根拠、目的の明確化)、What(何が必要か、どんなことが全体を構成しているか)、How(実際にどのようにすればよいか)の三つを与えると、行動しやすくなる 996
組織において部下にゴールを設定する時のポイントは何か?
  • 組織が人に目標を与えるときは、会社の目標と個人の目標の接点を見つけて共有する 1148 ☆
    • これがブレイクダウンの本当の意味でもある
    • しかし、あくまで個人からも提案する必要あり
  • ゴールを設定するときは、ゴールを手にする目的をゆらぎなく持って、道筋である目標設定は柔軟に考える 1211 ☆
    • ゴールを手にする方法は無限にあるので、目標は柔軟に変えても良い
  • ゴール達成を構成している要素を分解し、そこに期日・量・基準を盛り込んで目標を立てる 1238 ☆
  • その人に合ったやり方に合わせて、ゴールや目標の設定を行う 1246
ゴール設定をより効果的にするポイントは他にあるか
  • ゴールの構成要素を分解したリストを用意する、ゴールを手にした時のイメージを用意する、ゴールを手にする行動計画を用意する 1282
    • 分解したリストが目標、ゴールを手にした時のイメージがビジョン、行動計画がアクションプランかな
    • さらに時々立ち止まって、誰かと一緒に確認する 1291
  • 行動のエネルギーになるものは何か、つまり動機を明確にすると、ゴールへの行動を促進できる 1310
  • ゴールツリー 1347
  • 目的はいきがいややりがいにつながるものにし、それとセットにゴールを決める 1377
  • ゴールのための行動計画(例えば毎日n分勉強するとか)を目標とすると、ノルマ化して意欲が下がる 1395 ☆
  • ゴールを設定したら、ゴールツリーを書いて、そのゴール達成を構成する知識と能力とツールに分解する 1462
  • 目標を考えるときは、いつ、何が、どうなっているかという状態を表すものにする 1536
  • その人の価値観を組み込んだ目標文にすると、より良い目標文となる 1771
    • 価値観を知る言葉リスト 1788
  • ゴールに向けて行動する際のポイント 1860
  • 目標の達人、というのがこの本のタイトルでもいいくらいな気がする ☆