はじめに
自分はエンジニアとして生きていくために必要な思考整理術を身に着けていない。
なので、様々な書籍から知見を得てエンジニアとしての思考整理術を身に着けていく。
まず最初に、「世界一流エンジニアの思考法」(著者:牛尾 剛)という本を読んでいき内容を整理していく。
また、今回は生産性向上・情報整理・心構え(マインドセット)の3つのパートに焦点を当てて思考整理術を整理していく。
Part1:生産性向上
要点
- 試行錯誤は悪である(試行錯誤自体は悪くない)
- どんなに頭が良くても理解には時間がかかる
- 感覚で判断せず、ファクトを積み重ねる
- 頭の中にメンタルモデルを作る
概要
1.試行錯誤は悪である
この考え方は簡単に言うと「試行錯誤するのは良いけどやみくもに手を動かすのは効率が悪いよ~」という内容である。つまり無計画で思いつきによる試行錯誤はやめたほうが良いということだと自分は認識している。
個人的にこれが一番共感できる考え方である。
自分も何かしら問題が起きた時は考えられる原因を片っ端から試していく方式を取っており、無駄に時間を使っているのを実感している。それに加えてその問題を解決したとしても闇雲にやってしまっているため、そんなに自分の力にはならないことも問題である。
なので、何かしら問題が起きた時はいきなり手を動かすのではなく何が起きているかある程度推測し、仮説を立てることが生産性向上の第一歩ということである。
ただ、理屈は分かっても今までの習慣で勝手に手が動いて闇雲にやってしまうので、なかなか難しい・・・
2.どんなに頭が良くても理解には時間がかかる
この考え方は個人的に「まあ、そうだろうな」という感じで、頭が良いと言っても別に魔法が使えるわけではないし、難しい概念は理解するのにそれなりに時間がかかるだろうと考えていた。ここからは自分の考えになるが、頭が良い人はただ賢いというよりも賢く物事を行うためのやり方を理解して実行できる人であると考えている。
この本で登場している優秀なエンジニアも難しい概念は何十回と理解するまで学習を行っているが、これは当然と言えば当然なのかもしれない。
具体的に例を挙げるとJavaScriptのフレームワークにVue.jsというものがあり、その中にrefとreactiveという概念があるのだが、自分はこの2つの違いがわからなかった。ここでこの2つの公式サイトの説明をそれぞれ記述してみる。
ref:
これは特殊な属性です。特定の DOM 要素や子コンポーネントのインスタンスがマウントされた後に、そのインスタンスへの直接の参照を取得することができます。
reactive:
リアクティブな状態を宣言する方法として、reactiveを使う方法もあります。内側の値を特別なオブジェクトでラップする ref とは異なり、reactiveはオブジェクト自体をリアクティブにします。
大分長かったので少し削ったが、だいたい上記の通りに説明されている。
多分これをはじめて見て完全に内容が分かる人は凄く少ないと思う。
何十年JavaScriptや似たようなフレームワークを触っている経験豊富な人なら「ああ。あれと同じような概念ね」とある程度理解できると思うが、少なくとも自分はJavaScriptを3年以上学習してきたが分からなかった。色々調べて最終的に分かったことはとりあえずref使えばOKということだった。
これと同じかこれ以上に難しい概念が次から次へと出てくるのがプログラマー・エンジニアの仕事なので、そりゃプログラミングやこの仕事で挫折する人がいるのも無理ないなという感じである。
この本では理解を深めるために、サンプルコードを自分なりに手を加えて学習することや学んだ知識をブログを書いてアウトプットする手法が紹介されており、自分は特にブログを書く方が効果が高そうだなと思ったので、今こうしてブログを書いている。サンプルコードの方もいずれ試していく予定である。
本当にブログを書いて理解が深まるのかはまだ分からないし効果が出る保証もないが、難しい難しい言って何もしないよりは有意義であると考えている。
3.感覚で判断せず、ファクトを積み重ねる
個人的な考えとして人間の感覚は数値化もできないし、漠然としているのであまり当てにしないほうが良いと考えている。少なくともその感覚を人に説明出来たほうが良いと思っている。(というよりも人に説明できない曖昧な概念を参照するのは個人的に凄く怖い)
この本でも感覚で問題を決めつけたり物事を判断するのはあまり良くないので、実際に存在するファクト(事実)を積み重ねて課題などを検証していった方が良いと記述している。
基本的に人間は勢いで大抵のことはなんとかなってしまうことが多いが、それは大分不安定だと思うので、身近に顔を出してくれたファクトを大事にしながら堅実に物事に取り組んだ方が良いと思った。
4.頭の中にメンタルモデルを作る
メンタルモデルとは、人々が世界を理解し、予測し、解釈し、新しい状況に適用するための、自己の心の中のイメージや理論のこと。
世界一流エンジニアの思考法から引用
上記の内容を読んだ時に思ったことは「なんか難しそうだけかっこいいな。メンタルモデルって」である。正直内容はあんまり理解できていない。
このメンタルモデルを作ることで、頭の中で思考を整理したり問題解決力が大幅に向上するみたいなので作っておいて損はないだろうというのが私個人の考えである。(作れるかどうかは別として)
詳しい概要はこの本で紹介している本を読めば体系的に理解できると思うので、その本をちゃんと理解できるまで読了し、メンタルモデルを作っていきたいと考えている。
最終的な目標はなにか問題が起きた時に「私の中にあるメンタルモデルを使えばこれぐらいの問題、すぐに理解できます!!」と言えるようにすることである。(そんな魔法のような方法では無いと思うが・・・)
個人的にメンタルモデルという名前は凄く惹かれる名前で、なんだろう...あまり言語化はできないが凄くかっこいいと思う。
上記のメンタルモデルはまたブログを書いたりして、身に付けられるよう取り組んでいく。
※思っていたよりも長くなってしまったので、情報整理と心構え(マインドセット)は他の記事で整理していく。
今回内容を整理した本
- 「世界一流エンジニアの思考法」(著者:牛尾 剛)