優秀なプログラマーとは?要因を4象限で考えた

優秀なプログラマーかそうでないかを分ける要因として何があるかを考えた。


「センス」と「努力」だ。
図に表すとこんな感じ。


プログラマー4象限

プログラマーを4象限に分けてそれぞれについて考察を書く。
前提として、

  • センス=飲み込みの早さ
  • 努力=学習意欲の高さ・学習を行うスピード

を指す。


第1象限(センスがあり努力する)

いつもOSSをはじめ、各種ツール・ライブラリ・イベント・ブログなどでお世話になっているのはこの人達。


具体的に言うと誰かと言われるとわからない。
名前を上げたところで謙遜して、単に努力しただけと答えるだろう。


パレートの法則に見るように、こういうプログラマーが全体のレベルの底上げをしているのだと思う。
今後もお世話になります。


第2象限(センスはないが努力する)

日々学習することをいとわない人。


われこそは凡人だという人は、基本的にここを目指すべき。
その結果、いつかは第1象限にたどり着けるのだと思う。


多くの人が「自分はこの象限に属している」と考えている。
実態は、努力の方向性が間違っていることがざら。


たとえば残業や雑務が多い人。
その代わりに、残業する原因のスキル不足を補うための勉強をしたり、
雑務を人がやらなくていいようにシステム化(コードに限らずルールの場合も)するのがプログラマーとしての態度だと思う。


第3象限(センスはなく努力しない)

たまにいる「なんでこの業界選んだの?」って人。
上で書いた「努力の方向性が間違っている人」はこの象限に属する。


開発するために必要な技術や知識は常に誰かから下りてくるものだと考えていて、受け身である。
会社ってそういうものだよね、と言われればそうかもしれないが、プログラマーみたいな自己学習の必要性が高い職業には向かない。


ほかに、我が強く人のアドバイスに耳を貸さない。

今までと同じ考えや行動を繰り返して、異なる結果を期待するのは狂気である。
アインシュタイン


第4象限(センスはあるが努力しない)

自己学習がなくてもなんとかなるのがここの人。
会社に所属して働くうえで適宜教育すると、その教育だけで仕事に必要なスキルの必要条件を満たしてくれる。
初心者に陥りがちな、「複雑さを防ぐために説明しない部分が気になってしまう」ことがない。
フォーカスした部分に対して任務を遂行してくれるというイメージ。


キャリアのはじめのうちはいいが、後から第2象限の人に追い抜かれる。


最近はこの人達の存在が第3象限の人の存在を助長しているようにも思える。


最後に

こうして考えると、自分は第3象限と第2象限を行ったり来たりしている。

プログラマー4象限 現実

どうせなら上を目指して、こういう流れに向かっていきたい。


プログラマー4象限 理想


情熱プログラマー ソフトウェア開発者の幸せな生き方

情熱プログラマー ソフトウェア開発者の幸せな生き方