むかし読んだ『UNIX プログラミング環境』はいつのまにか絶版になっていた。UNIX を勉強するには何がいいんですかね? と聞くと
% cd /usr/bin % man *
とか、いや man は環境に依存した記述があるから SUSv3 がとか、あの、えーと、研修でつくったサービスのセキュリティホールをつけるようにとか、NoSQL ブームに参加できるようにとか、そういうはなしをしてるんじゃなくてですね。
ただ、はじめから獅子を目指さないやつは猫にすらなれねーんだよ、といわれるとそうなのかなあという気もする。
お勉強好き
実際のところ、われわれは「お勉強」が好きだ。
最近、(プログラマじゃなくても) 良いプログラマを見分けるには というはなしを読んだ。そんなに目新しいことは書いてなくて
- 情熱 - IT が「良いキャリア」だから、ではなく、プログラミングに情熱をもっていること
- 自分で勉強し、学ぶことが好きなこと
- 知性 - 社交性と同一視はできないけど、人当たり最悪なのもだめだよ
- 履歴書に書かないような経験 - 子供のころとか
- 幅のあるテクノロジ - Java ひとそろえ、とかではなく、新しい技術を学んでいることがわかるように
- 認定試験とかはあんま気にするな
と、わりと「いつものやつ」だった。ブログでこういう話題をあつかうのは明らかに母集団にかたよりがあり、Web 上のアンケートでインターネット利用率を調べるような感じがある。高橋征義さん のようなことを書いてくれるひとは少ない。
自分で本を買って読むのはよいことだ。就業時間以外にコードを書くのもよいことだ。しかし、それは個人のたのしみのために行われるべきものであって、職業上の義務としてなされるべきものではない。それでは単なる時間外労働である。
業務のために、就業時間外にたくさん本を読め、と説く人々は、時間外労働を対価なしに(むしろ本代を払って)行え、と説いていることに他ならないはずだ。これを問題だと思わないのだろうか。私は非常に重大な問題だと思う。そのような行動をとらなければキャリアに支障を来たすというなら、それは業界そのものが深く病んでいるとしか思えない。
「え、病んでるんですよ」という認識はあるかもしれなけど、目指すところではないですよね。
技術的負債
一方で、決められた時間に仕様をみたした仕事をしてるんだから、お勉強なんて十分ですよ、といわれると、それもそれで不安になる。CS はそんなに関係ない (もっとほら論文とかだよたぶん) けど、コンピュータサイエンスはこう学べ (2) には面白いはなしがあった。
それは簡単で、Code Complete (ASIN:489100455X) とか、そういう方向だよね。チームで仕事をする時に、同僚の邪魔をしない為のコード、ってのはあるんですよ。最低の品質を保証するためのコード。OSとかコンパイラの本ってのは、読んで無くても割と大丈夫で、そういう本を読んでないとローレベルなレイヤーのものは作れないけど、それはそれで大丈夫で、仕事だとそういう仕事は作れる人に回っていくので。それがただ回して貰えないだけで。誰もが普段書くコードの品質ってのは重要で、そいつにインパクトのある本と、そうじゃない奴ってのは別なんだよ。コンピュータサイエンス寄りなやつってのは、自分の満足度とかハイテク路線。チームとか仕事としてコードを書く時に、他人に迷惑を掛けない為の本というのは、主にデザインとかプロセスの話。
これは確かにそうだ。
世の中には技術的な負債というのがあって、それを加味しない仕事を私は支持しない。負債が仕様に含まれないのは、それを測るのが難しいからであって、それが重要じゃないからではない。負債というものが全くわからない人がいるとしたら、すごく恵まれているか、勉強が足りないか、どちらかだと思う。
そういいながら『Code Complete』は読んでないんだけどね。
まとめ
どうやってもまとまらないですね。身に余ります。
私は、お金でいったら計算機と関係ない本も買うし、時間でいったらライブハウスに行ったりもするけど、やっぱり計算機まわりに費やしている個人的な資源はおおきい。これは、もっと仕事ができるようになりたいというのもあるし、どうしようもない事情で (自分が引っ越したいとか、会社が京都に引っ越すとか) 辞めざるをえないときに、路頭に迷いたくないというのもある。そもそも楽しいというのも、もちろんある。
でも、そういうのは、個人的な時間のつかいかたを他人に強制することは、ブラックとまではいかなくても、ダークグレー企業だなあとは思う。あんまりやりたくないし、やる立場にも無いのです。