Diary?

2009-05-28
Thu

(21:01)

2009年5月28日は、実質的に僕が今の勤務先で働く最後の日となった。明日社長に最後の挨拶をして、書類をいくつか受け取って、それで終わり。要するに退職だ。


僕がこの会社に入った時、具体的には最初の出社日の朝までは、多少なりとも希望を持っていた。それでもその希望は、同期のほぼ全員がまったくのプログラミングの素人で、そして僕自身は入社して二週間ほどで現場に出された時点で潰えていたように思える。それでも稼がなければいけなかったわけだし、あの頃の僕にその後の状況を想像しろというのは無理だろう。

何かがおかしいと気がついたのは、実質的に僕が初めて本格的に参加したプロジェクトで、そこではきっと多くの人が狂ってると思える数々のルールが定められていた。以下はそれらのほんの一部だけど、思い出せる限り正確に書いたものだ。

  • ソースコードを書く前にプログラム仕様書を完成させること。プログラム仕様書の凡例は以下
    • 「ワーク変数 a に FooClass#barMethod(arg) の戻り値を代入する」
  • 最新のソースは構成管理ツールから取得せず、構成管理チームが作成したソースアーカイブをコピーして使うこと
    • そのソースは個々の開発者が適切なリビジョンを構成管理チームに伝え、それを元に構築する
    • 結合テストサーバへのソースの配置も、すべて手動で行う
    • マージは完全に手動で行う
  • 検証対象の成果物は編集可能な PDF に変換すること(この作業は手動で行われる。また、対象となるものは以下のようなもの全部)
    • ソースコード
    • テストドライバ
    • テストレポート
    • プログラム仕様書
  • 検証対象の成果物は、共有フォルダに手動でコピーする
    • ミスが続出したが、最後まで手動でやるものとされた

まだ山のように酷いルールがあったけど、僕の脳は思い出す事を拒否し始めたようだ。少なくとも覚えているのは、30秒で発見したバグを3分かけて修正し、その修正したソースのレビュー依頼を出し終えるのに3時間かかっていたということだ。

このようなルールの制定されるプロジェクトにおいて、プログラマは基本的に自力では何一つまともなコードが書けないクズとして扱われ、本当に「変数 a に 0 を代入」レベルのプログラム仕様書に従ってただひたすらタイピングするだけの猿(あるいは豚)として扱われる。僕はフレームワーク・ライブラリの開発やプロジェクトの標準策定のチームにいたけれど、そこでも基本的に猿のための秩序に頭を垂れる必要があった。

僕はそれが我慢ならなかったし、それでは僕のいたチームがとてもじゃないけど仕事にならなかったので、元請けに交渉してルールの適用対象から除外してもらったり、作業の順序や納期を入れ替えてもらった。でもそれはあくまでも僕のいたチームだけを救う方法で、プロジェクトを救う方法では決してなかった。何もかもが非効率で、何もかもが間違っており、とあるチームはメンバーの30%が精神を病んでリタイアした。

結局そのプロジェクトには2年目の終わり頃まで関わっていて、離任したころには結合テストが始まっていた。聞いた話では結合テストの時点で単体テストで潰しておくべきバグが相当数残っており、それは先に出したルールのせいでオーバーヘッドが大きくなりすぎ、単体テストの工程を飛ばしてしまったチームがいたという話だ。僕のチームはかなり問題が少ないチームだったらしいというのが、唯一の救いだ。


その後の僕は比較的研究開発に近いポジションで一年と半年を過ごし、ちょっと人手の足りないプロジェクトの手伝い(あるいは火消し)をしつつ、場合によっては研修の担当官をして過ごしていた。その間に辛うじて面白かったかもしれない仕事といえば Ogg Speex を使ったストリーミングとブラウザ埋め込みのプレイヤーの開発で、それも顧客の都合で本格的に始まる前に終わってしまった。

この頃になると僕もいい加減スレ始めてきて、この会社では面白い仕事はまずできないだろうと思うようになった。明らかに他の社員と比較して桁違いの能力の持ち主――つまりは僕――が入社してきて、僕を使えば今までやろうと思ってもできなかったことができるようになると思ってしまった人もいて、確かに僕はそれだけの能力はあったけれど、それが僕の嗜好に合うかどうかは別問題だった。それに他の社員が追いついてこないことには僕が辞めることでそれらの技術は失われ、元の木阿弥になってしまう。

そもそも僕が会社で提供したことの多くは高度な技術とは言い難く、ちょっと勉強すれば誰でも追いつけるものばかりだった。例えばビルドシステムを Ant などで構築する、単体テストを Ant 経由で動かせるようにする、毎日定刻にソースをチェックアウトして先に作った Ant のタスクを走らせる。これらの基本はちょっと調べればわかることだし、実際のところ基本的なレベルでもやるとやらないとでは全く違う(僕はビルドやテストにこけたら TODO 管理システムに通知するところまで作ったけど、結局そちらは誰も使わなかった)。

その程度のことにすら思い至らない、実装できないのは一体どういうことなのかと考えるうち、結局みんな自分達が狂った事をしているのかもしれないと疑っていなかったのだろうという結論に達した。本当にソフトウェア開発について真剣に考えれば、自分達が多くの問題を抱えていることぐらいはわかるはずで、僕がやるまで誰も改善しようとしなかったのは、結局殆ど誰も問題の深刻さに気が付いていなかったのだろう。それに僕の言っていることなんて、ちょっと雑誌や Web を調べるだけで似たような言説が見つかるというのに。


ここ数カ月は本当にろくな仕事がなくて、僕にとってはとっくの昔に通った道を「これは新しい!」と騒ぐ上司を横目に、その気になれば一時間で終わる仕事を一日かけて終わらせるような腐りきった日々を過ごしていた。実際には仕事を出す方も、それが僕にとっては簡単すぎるということは認識していたことが後で発覚したけど、そのことに何か意味があるわけでもなく、僕がただ無為な日々を過ごしていたという結果がすべてだ。

人によっては、僕の立場は悪いものではないのかもしれない。薄給かもしれないけどゆるく働いて、死なない程度に生きていくのは決して悪いことではないと思うし、僕もある一時はそれでもいいかもと思っていたのは認める。ただ、いい加減それが我慢できなくなっただけだ。

多分、景気が上向くまでこの会社はもつのだろうと思うし、その頃になればもう少しまともな仕事も増えるのだろうとは思う。ただ、そうなるまで待っていたら、僕は完全に腐るという確信がある。ボーアウトという言葉を割と最近知って、僕が本当にその言葉に当て嵌まるかわからないけど、恐らく僕の今の状態はボーアウトに近いのだろう。

そういえばここ一ヵ月の間、同じく本社で作業しているプロジェクトメンバーのほぼ全員と殆ど口をきいていない。それでも仕事が回ってしまうのは、僕と彼らではやっていることが全然違っており、僕のやっていることを理解できるメンバーが殆どいないことの現れなのだろう。他のメンバーにとって難しいことを僕がやっていて、誰も僕を気にかけないのなら、僕のやっていることはこの会社にとっては手に余ることなのだろう。

自分にとってどうでもいいだけでなく他の誰にも理解されないことを、どれだけ長い間続けられるのだろうと考えているうち、どうやら僕は限界に達したらしい。「限界を知る唯一の方法は、 限界を越えてることだ」みたいな言葉を聞いたことがあるけど、世の中にはあまり知りたくない限界がある。


そういうわけで、僕は会社を辞めることにした。辞めるに当たって慰留の問いかけは一切行われず、すんなりと退職するに至った。実際のところ会社側は僕に与える仕事が実力に応じていない、能力に対して給与が釣り合っていないなどを自覚しており、三行半を叩き付けられても文句はいえないという認識はあった。

これを「自覚があるだけマシだ」と捉えるか、「自覚があるのに改善できなかったら騙してるのと同じだ」と捉えるかは読み手の判断に任せる。どっちにしろ、僕にはもう関係のないことだ。

僕なしで今までの勤務先が回るかどうかは、多重下請け構造の中でのシノギで食ってる会社なので実際のところ大勢に影響は無いというのが真実だろう。ただ、そのうちの何人かが僕の能力の先に分不相応な夢を見ていただけのことだ。僕が伝えた技術はすべてロストテクノロジーになるだろうけど、誰も理解しようとしなかった・できなかった以上は当然の結末でしかない。

既に次の仕事は決まっていて、具体的なことは多分そのうち公になっていくと思う。少なくとも一般的な SIer の受託開発とは違う形態だけど、現状の明らかに不合理で狂ったシステム開発をどうにかしようという側面が多いにある。


僕の三年と少しの下請け生活から何か教訓が得られるだろうか。これは単に「素人を雇うような企業には行くな」という話で終わるのかもしれないし、そうでないのかもしれない。この SI 業界の何かが酷く間違ってるのは実感できているけど、それが解決可能なのか、それどころか解決すべきなのかもわからない。


追記:今回の転職は、勉強会や Web で知り合った方々の協力がなければ到底無理だった。これは本当に感謝しないといけないと思う。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。