give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

良いプログラマの定義

みなさん、良いプログラマってどんなプログラマを想像しますか?
人によって意見は異なると思いますが、僕はこんなプログラマかな〜と思います。


1から10まで言わなくても1〜2のきっかけを与えるだけで、残りの8は自分で埋めてくれるような、そんな姿勢を持ったプログラマ


もしくは「他人に強制されなくても自分で努力して成長できるプログラマ」といってもいいかもしれません。
英語で言うとSelf-motivatedなプログラマ、ということになるでしょうか。
とりあえず、その姿勢があれば後は本人の努力次第でなんとでもなるような気がしています。


いきなり変な例え話を持ち出しますが、良いプログラマの定義を考えるときに僕の頭に思い浮かぶのは、中学校の理科で習った鉄と硫黄を化合させる実験です。


f:id:JunichiIto:20120828003839g:plain


みなさん覚えてますか?
この実験は最初に少し熱を加えると、あとは勝手に最後まで反応が進むんです。
良いプログラマもこんな感じです。
最初にちょっときっかけがあれば、そこから先は全部自分でやってしまうんです。


でも、平均以下のプログラマは加熱を止めると反応もそこで止まっちゃうんですよね。
つまり、刺激がなくなったらそれ以上先に進まないんです。
ひどい場合は刺激を与えても全く無反応、ということすらあり得ます。


ところで、良いプログラマの例として僕の身近な人物を二人挙げてみます。


一人目はソニックガーデンの「ポンデライオン」こと「まーくん」こと西見さん
先日までEmacs使いだったのに、昨日話してたら「最近Sublime Text 2を試してるんですよー」って画面を見せてくれました。
しかも、ちゃんと便利そうなコマンドまで目の前でデモしてくれるんです。
Sublime Text 2を使い始めた理由は、Ruby Motionの開発にはSublime Text 2がいいらしい、という噂を聞きつけたから、とのことでした。
この場合、「Sublime Text 2が良いという噂」をきっかけにして、そこからさらに自分で便利な使い方を習得していった、ということになります。


二人目はソニックガーデンのCTO*1、「まっつん」こと松村さんです。
彼はCTOらしく、Ruby関連の最新技術情報を色々と収集してくれます。
でも、いつどうやってそんな情報を仕入れているのかが気になったので、ある日それを聞いてみました。
松村さんは「ん〜、電車の中で見てるTwitterかな〜」と答えてくれました。
ただし彼の場合、TwitterのTLだけ見て「へ〜面白そう」って言ってるだけじゃないんです。
そこからGithubに行って、ドキュメントを読んで、さらに中のコードまでチェックしてるんです。
平均以下のプログラマだったら、TL見て「ふ〜ん」で終わりなんじゃないでしょうか。
いや、たぶんTwitterで情報収集すらしてないはずです。


どちらのプログラマもちょっとしたきっかけをただのきっかけで終わらせず、自分で深く掘り下げています。
良いプログラマが持っているこうした姿勢や取り組みが、地道なスキルアップにつながって大きな差を生み出していくんだと僕は思います。


あと、番外編としては僕かな?
今までの職場では「伊藤さんってスゴい〜!」って結構チヤホヤされてたのに、ソニックガーデンに入ってからは急にコードレビューでみんなからボコボコにヤられたりするんですよ。
悔しいっ、許せないっ!!と思って、何とか見返してやろうと努力する・・・これも、ボコボコにされたというきっかけから自分で伸びようとしているプログラマの例になるかな〜と思ったりします。


え?ハードルが低すぎる??
いやあ、プログラマの頭数はやたらいるのに、こういう姿勢をもったプログラマが一人か二人しかいような職場もまだまだいっっっっぱいあるんですって!
幸いソニックガーデンのプログラマは全員大丈夫なんですが。


しかし、こういう姿勢をもったプログラマをどうやって作り出すことができるのか、つまり教育でなんとかなるのかは僕にはわかりません。
良いプログラマを教育すれば、どんどん伸びるのは当然です。自分で伸びようとするんですから。
しかし、教育の終了と同時に、本人の成長もそこで止まってしまうようなプログラマはどうやったら伸びるんでしょう?
教育で教えられるのって、たぶん10の中の1〜2ぐらいまでだと思うんですよ。
Sublime Text 2の使い方を隅から隅まで教えるような教育をしてたら、時間がかかって仕方がありません。
そもそもSublime Text 2の使い方以外にもたくさん覚えるべきことがあるんですから。


こういう姿勢って昔から持ってる素質、ってことになるんでしょうか?
ちなみに僕の場合はオブジェクト指向をバリバリ使いこなすスゴい先輩との出会いが、本気で勉強し始めるきっかけになってます。
だから僕だって何か特別なトレーニングを受けて生まれ変わったわけじゃないです。
詳しい話はこちらのエントリに載っています。(中に出てくるM江さんがその人です)


達人の技芸を継承する方法はこの世に存在するか? - give IT a try


というわけで、今回は僕の考える良いプログラマの定義を紹介してみました。
最初にも述べたように、人によって定義が変わってくるのは当然だと思うので、「自分はこう思う!」という人はぜひぜひアンサーブログを書いてみてください。
楽しみに待っています!

*1:最高技術責任者様の略