自然に偉大と呼ばれるエンジニアになるたった6つの方法

XP(Extreme Programming)で有名なケントベックは言いました。

僕は、偉大なプログラマなんかじゃない。偉大な習慣を身につけたプログラマなんだ。

今まで出会ってきた「偉大だ」と感じるエンジニアには共通した習慣があるように感じます。

道具に拘りがあり、常に研鑽する

道具というとキーボードなどを思い浮かべるかもしれませんが、道具とは物理的なものに止まりません。
エディタ、OS、言語、モジュール、フレームワーク、ライブラリ、様々なものがそれにあたると思います。
勿論、キーボードもマウスも、ディスプレイも、ガジェットもそうです。
そして、それらを使いこなそうとします。
深く探求し、自分なりのリズムを刻もうとしています。

コードリーディングから始める

新しいものを学ぶとき、「書くことから始める」か「読むことから始めるか」という違いです。
多くの場合、新しい言語を与えられると人は「書くことから始めよう」とします。
これはある意味正しくも見えますが、偉大と感じるエンジニアは大抵の場合、「読むことから始めよう」とします。
未知のものに触れるとき、良いと言われるものを探し、その場所で良いものとは何か?ということを追求し続けています。
なぜなら、新しい分野で自分の経験が通用しない可能性があることを十二分に知っているからです。

推測で物事を言わず、常に自分から疑う

不具合が起こったとき、「まず誰のバグか?」ということを考えないでしょうか。
よくあることとして、「誰かのバグなんじゃ?」もしくは「ライブラリやフレームワークのバグなんじゃ?」と感じることがあると思います。
優れたエンジニアの場合、「自分が何をしたか?」といったようなところを疑う傾向にあります。
新しい技術を扱う場合も同等で、以前の自分の経験に照らし合わせるだけでなく、
「自分が知らないのではないか、自分が間違っているのではないか」ということを常に考えています。
そして、憶測で「〜だろう」というのではなく、「まず計測してみよう」という姿勢を崩しません。
空疎な議論よりも自明であることが何よりも優れていることだと知っているからです。

知らない事を知らないと言うことが出来る

変にプライドが高いエンジニアは知らないことを知らないと言わず、取り繕うとします。
なぜなら「知らないこと」を恥だと思っているからです。
でも、優れたエンジニアは知らなければ「知らない」と素直に言うことができます。
それは、「未知である」ということが新しい見識を得るチャンスでもあり、かつ面白いことだからです。

つまみ食いだけでなく、1つの事を掘り下げることができる

常に新しいものを追い続ける人はつまみ食いだけで興味を発散してしまうことがよくあります。
物事に関して深く理解するよりも、パッとできることで満足感を得ようとするからです。
でも、優れたエンジニアはそれが必要なことであれば、必要なだけ掘り下げていくことができます。
理解する、ということは楽しい行為であり、弄ぶのではなく、使いこなそうとするからです。

インプットをアウトプットに変え、そのサイクルを継続できる

どんな小さなアウトプットも恐れない傾向があります。
「こんなこと書いても誰も見ないだろう」と考えてブログなどで発信をしないエンジニアはもの凄くいると思いますが、
実際にアウトプットがどんな影響を及ぼすかは誰にも解りません。
よって、えり好みせずにアウトプットするという行為が自然になっていきます。
アウトプットすることで、反応を得られ議論に発展させることもできます。
即ち、インプットしてアウトプットし、それを議論に発展させ、さらにインプットする、というサイクルを自然につくっているのです。


これらは、自己組織化と言い換えることもできるかもしれません。
「偉大な習慣」を身につけ、それを実践することで、自然に良いエンジニアへと昇華されると私は信じています。
そして、そういったエンジニアが集う場所ではもっとそのサイクルが高まると感じています。

それこそが、「偉大だ」と呼ばれるに足るエンジニアへの最短の道なのかもしれません。