良い技術者になるための頭の使い方

最近思っていること。

 

実装で詰まった時、これ以上ジタバタ考えても無理だってときがあります。無理とか言ってられないし、やるしかないんだけど、でもやっぱり無理ってときがあります。完全に実力不足で不甲斐ないです。でも無理なもんは無理なのです。残念無念。もし自分がたった一人で全ての責任を抱えるような立場で仕事をしていたら、社内の熟年の技術者を頼れなかったら、どうすればいい?考えてしまいます。さらに、直面している困難な問題が現実的に不可能というわけではなくて、他の人が出来ているのに自分には出来ないとか、情けないがこれは本当に悔しいし実際にそういうことはあります。あゝ実力不足で不甲斐ない。

 

幸いにもまだ、自分は社内にヘルプを求めることが出来ます。だから、最善を尽くして助けてもらおうと思ったのです。助けを求めるというのは安易な選択ではないと思うからです。安易に助けを求めるのはダメなような気もしますが、今はどっちにしろ助けはが必要な状況だということを前提に書いているから、この議論は不毛ですね。それに、Google人工知能チームのRachel Thomas が提言していた「15分ルール」というのを参考に考えてみたんです。彼女曰く、【1】最初の15分は自分自身で解決を試みる【2】15分後も解決していなかったら必ず人に聞く【3】前者を守らないと他人の時間を無駄にし、後者を守らないと自分の時間を無駄にする。⇦なのです。

 

 

 

15分って早くね?と少し思ったんですが、一理あると思ったんです。んで、話が逸れましたが、実装で詰まったときっていうのは、多分テンパっていることが多いと思うのです。テンパるのは絶対ダメですよね… ロジカルに物を考えられなくなります。落ち着いて落ち着いて、リラックスして今目の前で何が起こっているのか考えるんです。

 

なぜうまくいかないのかを落ち着いて考え、理解できない部分を細かく詳細に書き出し、どこをどのように解決(理解)すれば上手くいくのかを推測し、何がわからないのかを詳しく他人に説明できるように頭の中で整理します(プレゼンするときみたいに)。大きな問題というのは大概小さな問題の合体形態です。目の前の小さな小さな問題を分解して、一個一個理解していくんです。そして、なぜそうなるのかきちんと理解する。ここのクラスをコピペして、こういう風にここにペースト!で動いた〜じゃ全然スキルが向上しない。ダメ絶対!

 

1から10まで結論に到るまでの過程をいかに理解するかが、大事だと思う。答えだけ覚えても全然意味がない。論理の厳密性をとことん追求する、プログラミング言語で組まれた文字のロジック(仕組みや意味)を一文字残らずしっかり理解する、良い技術者になるためにはこれが必要だと思っている。そして論理の厳密性という観点は数学と似ているやっぱり理科系なのだよなプログラミングって。