brassiere blog

本ブログに記載した内容はただの感想文であり、投資行動を推奨するものではありません。

技術向上のため「試行錯誤」と「早くする」と「難しい」を禁止せよ

概要

技術を向上させるために思うことを自戒を込めて書く。

「試行錯誤」と「早くする」と「難しい」を禁止せよ、は以下を意味する。

  • 思考停止で試行錯誤しないで。知識が身に付かない。
  • 基礎を疎かにして一足跳びに実現しようとしないで。
  • 「難しい」で思考停止しないで。どうやったら実現できるか、または、なぜ実現できないかを考えよう。

「試行錯誤」を禁止する

問題にぶち当たったとき、思考停止で試行錯誤してはいけない。

問題を丁寧に観察し、測定しよう。事実を積み上げよう。

なぜダメ?

思考停止で試行錯誤しても、問題を解決できることがある。 しかし、これでは知識が身につかない。 なぜなら、再現性のない方法だからである。

仮に解決できたとして、なぜ解決できたかを説明できるだろうか。 できないとしたら、なぜ解決できたと主張できるのだろうか。まだ問題は解決していないかもしれない。

仮に解決できたとして、再現性のある解決方法だったと言えるだろうか。 全く同じ問題にぶちあたることはもうないかもしれない。問題と解決策を記憶だけで1対1に結びつけたとしても、未来で使えない解決策なのだとしたら知識は何も増えていないことになる。 それに、少し形を変えた問題には対応できないかもしれない。

問題を丁寧に観察し、測定する

問題を丁寧に観察し、測定したらどうなるだろうか。

問題を丁寧に観察すると方向性を正せる。場合によってはこれだけで解決に一気に近く。 例えば、エラーが起きたときにエラーメッセージをよく読んでみよう。 エラーメッセージに書かれている内容が答えである場合がある。そうでなくとも、問題の方向性を絞り込むことができる。問題の起きている箇所や原因をいくつかの候補に絞れるかもしれない。 問題の観察を怠ると、勘違いで全く見当違いの場所で原因を探してしまうかもしれない。

問題を測定すると情報が増える。つまり、解決するためのヒントが増える。ここでは、「測定」という言葉を広い意味で使っている。客観的・定量的に分析するといった意図で使っている。 例えば、サーバーで動かしていたプログラムが異常終了したとしよう。 この場合、ログを見る(なければログを出力するようプログラムを修正して再実行する)、プロセスを見る、監視系 SaaS で分析する、識者に聞く、などの方法で問題を測定できる。

測定する方法を学べば、あなたの道具箱の中に一つ測量器が増える。 問題を測定するための道具を増やせば、次はもっと多方面から測定できる。多方面から測定できれば、多くの情報をえられるので、前よりも簡単に問題が解決できるかもしれない。成長だ。

「早くする」を禁止する

早く終わらせようとするあまり、基礎を置き去りにしてはいけない。 基礎を身につける(理解する)と上達することを、私は経験と観察からしか語ることができない。それでも十分だと思ったらこの節を読んで欲しい。

基礎を身につけて上達した受験物理

私は大学受験のための物理の勉強でこれを実感した。

高校3年生になった私は受験勉強を始めたが、それまで物理をまともに勉強してきていなかった。基礎がガタガタで、どんな問題も解けないように思えた。 そこで私はまず、一番わかりやすく書かかれていそうな易しい参考書を探し、一歩ずつ読み解いた。何度も戻ったりしながら、ゆっくりと理解していった。理解することを重視した。ぶつぶつ独り言を言ったり、紙に図を書き殴ったりして理解していった。

全て読んで自分なりに理解して、次は同じように教科書を一歩ずつ読み解き、理解した。ただ、教科書といえど簡単ではなかった。演習問題は自分で解けないことがあったので、教科書ガイドを買って解き方を学んだ。

教科書を理解し終えたら、次は学校から支給された基礎的な問題集を解いた。最終的にほぼ全ての問題を解けるようになった。そのために、問題によっては5周ほど繰り返さなければならないものもあった。1発で解けた問題は少なかった。最初は解けなくても、解説を理解できればそれでいい。解き方を理解した上で日を開けて再チャレンジした。

これが終わった時点で基礎は固まってきていた。この時点で高校3年の10月ごろだったと記憶している。

次は、少し難易度の上がった問題集を全て解けるようにしていった。「物理のエッセンス」を何周もして解けるようになった。その後は「名門の森」を何周もして解けるようになった。 ちょうどセンター試験ごろだったように記憶している。センター試験は実力不足で1問間違えて96点だった。

最後は、志望大学の過去問を何十年分か集めて全て解けるようにした。今までやってきた問題集と同じように、理解できるまで何度もやった。

こうして私は(自己採点だが)おそらく物理で8割以上の得点を獲得し、大学に合格した。

「早くする」となぜダメ?

基礎と理解が大切だというエピソードを語った。 技術を早く身につけようとすると、理解が置き去りになってしまうのである。 理解には時間がかかるのである。これは脳みその出来が良い人間でもそうである。

研究室時代に私を指導してくださった教授でもそうである。教授は、とあるプログラミングの本を理解するために10回は読んだそうである。

焦りは禁物だ。理解することに重きを置いて、理解のスピードに合わせてゆっくりと進もう。

実はそんなに遅くない

「ゆっくりと」と表現したが、実はそんなに遅くなかったりする。自分の体感でゆっくりに感じているだけだったりする。

事実、私のエピソードでは何冊かの参考書・教科書を読んで理解し、何冊かの問題集を何周もして理解している。これを1年もかけずにやったので、そんなに遅くないと思う。他の科目の勉強もしなければならなかったので、物理に多く時間を割いていたわけではない。

一歩ずつ進むのが遅いと感じるのは最初だけで、実は案外これが近道だったりするんだ。 ゆっくりでいいから、理解しよう。理解できるまで何度も繰り返そう。

「難しい」を禁止する

問題に直面したとき、「難しい」で終わってはいけない。 精神論だが、「難しい」とぼやいたところで一歩も前には進めないのである。

私がこれまで見てきた優秀な人たちはそもそも「難しい」という思考が欠落しているように見えた。 私もこのマインドを真似して「難しい」と言わないようにしている。

なぜダメ?

「難しい」という評価は問題を分析する上で何の情報にもならないのである。 「難しい」ではなく、あなたが感じた具体的な評価を問題に与えよう。 「問題を解決するのにかかる労力が大きい」だったり「そもそも解決策へのヒントが一つも見つからない」だったりするかもしれない。

前者であれば、どうすれば労力をかけずに済むか、または、解決に割くリソースを増やせるか、という方向に議論を進められる。 後者であれば、専門家に聞くことを検討できる。

「難しい」は思考停止なのだ。まずは小さな一歩でいいから、あなたが進めずにいる理由を具体的に表現してみよう。