すんません、タイトルは釣りです。多くの人に読んでほしいという煩悩に勝てなかった。
俺のプログラマのしての能力は、めちゃめちゃ高いとは言えないけど、多分高いほうだと思う。OSS にはそれなりに貢献している(特定を避けるために具体的なプロダクト名は出さないけど、rubygems で50万以上 DL されてるようなライブラリにコントリビュートしてる)。そういう背景もあって、最近は「教える側」みたいな立ち位置に配置されることが多くなってきた。そこで見かけるひどいコードの数々といったら、本当に目を疑うレベルのものが多い。正直、こんなやつらにイチから教えてたら俺が勉強する時間がねーよ。
で、そこで立たされたこの岐路である。自分がガリガリ書きまくるのを辞めて「後進を育てる」という部分(単に教えるとかそういうことだけじゃなくて、組織の中でスキルが継承され、さらに良くなって行く仕組み作りも含めての話ね)に重点を起くのか、今後もとにかくガリガリ書きまくって「プログラマとして寡黙にコードでひっぱっていく」みたいな「背中で語る」プログラマを目指すのか。
そういうことを考えてると、いつも自分がまだ駆け出しだったときのことを思い出すんだよね。その頃の自分のプログラミング能力は、それはそれはものすごく低かった。空間効率も時間効率もまったく意識しないから、平気でリソースを食いつぶすような処理を書いていた。「モジュールの凝集性?独立性?よくわからない……」という感じで、ある特定の機能を改修するために 1 行書き換えると平気で 100 行壊れるようなコードを書き散らかしていた。今の自分が見たら「こいつセンスないから育てるだけ無駄ですよ」って言っちゃいたくなるレベルのひどいコードを書いていた。そんな俺も、今はそれなりに書けるようになっている。それを考えると、「今この時点でできてない」というひとを切り捨てていいのかなぁ、って思うんだよね。
というのも、俺はあまり会社の先輩に恵まれなくて(これは転職とかでチャレンジしてこなかった俺も悪い)、ほとんど自学自習で勉強してきてようやく今のレベルになったんだけど、もし身近にもっといいコードが存在していたら、あるいは身近にいいメンターがいてくれたら、もっと早い段階で今くらい書けるようにはなっていただろうな、って。だから、プログラマとのエゴとして「俺よりできる人間たちの中で俺の能力をとことん伸ばして行きたい」って思う気持ちがありつつも、今なら(言い方は悪いけど)「ダメなやつらの底上げ」に関してもそれなりに意味のある仕事ができるだろうな、ってどうしても思っちゃうんだよ。
そりゃさー、世の中のすごいプログラマたちはさー、運もあるし、それ以上に自分が挑戦したことによって「身近にすごい人がいた」って環境に身を置くことができたと思うんだよ。で、そういう人は多分言うだろうね。「チャレンジする気がない人間に手を差し伸べてもしょうがない、できるやつはほっといてもできるようになる。そんなこと考えてないでとにかく良いコードを書け」って。でもさ、俺みたいな凡庸な人間って、チャレンジすることそのものがまず怖いんだよね。そういう人間にも、「良い環境」を与えることには意味があるんじゃないかなぁ。
多分、「いい環境に身を置けるかどうか」って、半分くらいは運だと思うんだよ。だったら、「いい環境」じゃなかった環境を「いい環境」にしていく仕事にも、きちんと意味があるんじゃないかなって思うんだよ。今俺の中には、そういう「環境作り」的な仕事をしてみたいなという気持ちと、いちプログラマとして今後もコードを追い続けていきたい気持ちがあって、どうしたらいいんだろうねマジで。少なくとも「最前線で戦えないと思ったプログラマの逃げの一手」としてマネージメントとか環境作りに逃げたくはないなぁ。
半々で進めたらどや?