WCEDという物自体を今回初めて知ったし、 毎日コードを書く事は意識していなかったし、WCEDしてない。
自分の仕事でのコード書きはどんな感じか
オリジナルのWCEDとmorritaさんの話は既に結構違う所なので、 仕事でどうなの?という事だと思うのだけれど、 自分は毎日は書いていないと思う。 そもそも毎日働いてはいないのもあるが(今は60%稼働の契約なので週休4日)、 稼働日も毎日はコードを書いてはいない。
今回の仕事は、大雑把には「今から作るプロダクトが業界でNo.1になるのに必要な機能を作ってくれ、何を作るかは好きに決めてくれ(意訳)」みたいな仕事だ。 何を作るかも自分で勝手に考える(相談はするが)し、割と綺麗に切れている大きめの機能をスクラッチから単独で数ヶ月かけて実装するものが多い。 チームが小さすぎてレビューを頼める相手が居ない事情もあり、 レビュー待ちとかミーティングとかはほぼゼロ。コードを書く以外の仕事は無い。
だいたい2週間くらい何かを調査し、3ヶ月〜半年くらい掛けて実装するみたいなのが多い。 調査期間の2週間くらいはほとんどコードを書いていなくて、 実装期間である三ヶ月〜半年の間はほぼ毎稼働日コードを書いていると思う。
ただ実装期間でもたまに一日以上調査が必要になる事もあって、 完全に毎日という訳では無く、たまに空く日はある。 でもこれはそんなに頻度は多く無いかな。数週間に一回とかのレベル。 これはmorritaさんの言う2つ目のパターンですね。jmukが言っているのも同じ感じに思う。
一日の稼働日のほぼすべてが調査とコーディングだけ。それ以外の時間はほぼ無い。 実際は一日中コード書くのは大変なので、午前中だけの日とか夜だけの日ともある。一週間ではだいたい3稼働日くらいの労働量という形態になっている。
だから毎日書いてはいないけれど、コードを書く量に関しては結構な量書けていて、コードとしてのアウトプットにはまぁまぁ満足している。
コードを書く事、前に一歩進む事
自分はmorritaさんのエントリを見て、Joelの射撃しつつ前進の話を思い出した。
メールとか経費精算とかミーティングとかで、コード書きになかなか取りかかれない。 そんななか毎日ちょっとでも、FogBUGZのカラースキームを改良することだけでも、 とにかくコードを書けていればOKだ・・・という話。
雑用と、パフォーマンス計測とかで時間を溶かすのとは違う気もするけれど、 なんとかコーディングの時間を捻出してそれにしがみつくのが大切な事なのでは? というのは似た話に感じた。
もともとmorritaさんの言っているバグレポート解析とかコードレビューとか性能問題の分析というのは、 無駄な雑用という訳でも無いし、それ自体コードを書くより価値がある場合もある。 メールとかはだいたい無駄な気もするけれど、これだって必要と思っているから書いているはず。
でも、あとで振り返った時に、そうした活動があまり価値を生んでないように感じる事はあるんだよなぁ。 四半期を振り返って「あれ?これだけしかやってないのはどうなんだ?」というような。 そしてこの感覚はだいたい正しいとも思う。
コードを書くという選択
ソフトウェア開発の仕事でも、なるべくコードを書かないで済ますのが重要な仕事とか、 人の仕事を助けるような形でチーム全体のアウトプットを増やすのが重要な仕事とか、 いろんな形態がある。 コードを書くというのがいつも前に一歩進んでいる事で、それ以外がいつも無駄という訳では無い。
一方でコードを書く事で前進するような仕事はあるし、 「自分の今の仕事はそういう物でありたい」という希望の元に日々頑張ってコードを書く選択をすることもあると思う。 コードを書く事が一歩進む事であるというよりは、コードを書く事が一歩になるような仕事をするという。
自分は今は「コードを書く事が重要な仕事」を選んで受けている。 Individual Contributorとして、自分1人で書くコードでシニアとしての存在価値を示すのを最近の自分のテーマとしている。 仕事を選ぶ段階で「コードを書くという事が前進となっている仕事」を選択している。
結局我々はプログラムが好きなので、そういう選択をするのもまぁ当然ではあるよなぁ。
余談だけど、Individual Contributorって日本語ではなんて言うんですかね?