http://d.hatena.ne.jp/teruyastar/20091118/1258499089
http://deztec.jp/design/09/11/18_work.html
http://anond.hatelabo.jp/20091120095641

ふと思い出して、休憩がてらに読むなどした。
いきなり最初から全速力のプロジェクトに放り込まれて3か月。最初はサーバーのおもりから始まって、検証要員だったところを歓迎会の席でうっかりコードをたくさん書きたいと言ったら開発要員の方へ引っこ抜かれ、とは言っても規模はでかいが人数が足りないうちの会社で開発と並行して検証もちょっとやらせてもらって。全く知らないUMLとにらめっこして、全く分からなかったシーケンス図やクラス図が次第に分かるようになり、いつの間にか設計書まで書くようになっていた。とはいえ、まだまだ何か問題が起きてもそれほど支障があるようなところではないもしくは、必ず誰かのチェックをとおすという形をとってOJTが進んでいるわけだが。

僕は決してプログラミングができる方ではない。何年やっても未だ初心者と自称するように知識も経験も、新人であることを差し引いたとしても足りなさすぎる。ただ、見慣れないものに関してそれがなにものでありどうやって動き、どう扱えばよいのかを使いながら手繰り寄せ理解していくということにおいてだけ新人にしてはできる、という程度である。

本当に時間のないプロジェクトだった。開発が始まった早い段階から開発チームのメインの人たちは残業時間80時間など軽く超え、それこそ猫の手も借りたいというような状態だったから、僕もできる範囲で必死で毎日云いつけられる仕事をこなしていた。


指示はいつもざっくりである。ベテランというものはそういうふうになってしまうものなのかもしれない。やることはおおいし、時間もないのだから、できるなら自分でやってくれというのが心情だろう。特にうちの部署は新人が配属されることは異例*1なので新人教育に関してのノウハウなどがあるわけではない。
なにかやっておいてと言われ、その何かをまず調べ、調べるついでに出てくるものを試し、失敗し、原因を考え、対策を講じ、それでもだめだと思ったらただの凡ミス、なんてことがはじめは続いた。これでもし僕が学部を卒業したばかりのころだったら、きっと心が折れていただろう。でも、就職を二年遅らせたことで僕が腹の底に縫い付けた思いは、「自分は何もできませんと言える」という自信だった。


学部の頃はそうではなかった。何もできない自分をせめ、なぜできないのかと悩み、いつも全速力で走り、しかしあまりうまくいくことはなくて同じループをたどる。そのループの果てにたどりついたところが、何もできませんと口にすることのできる弱さだった。たぶんそれでいいのだろうと思う。あれができません、これができませんと口にすることができるということ、でも同時にできるようになりたいという一貫した願いを抱えているから、僕はすいませんとありがとうございますを繰り返しながら楽しく毎日会社に通った。



一ヶ月を過ぎるかすぎないかの頃から徐々に開発チームの方の仕事をするようになり、アジャイル的に開発をする必要性(とはいってもアジャイルではない)から席替えをして開発チームのベテランに囲まれるようになってからはさらに楽しかった。隣の席はOJTをしてくれる先輩なのだが、彼もまだ開発経験は浅いので二人して誰かに何かを聞いて回り、誰に相談したらよいかわからなかったらお互いに尋ねるというなんともOJTらしくないOJTであったが、僕にとってはちょうどよかった。気軽に尋ねる相手がいるということ、その相手もよく分かってないということ、わかっていなくてもいいということ、誰に聞けばいいかということを的確に教えてもらえるということ。そういうものは新人にとってはありがたいことだ。
自分でわかりそうなとっかかりが見えると僕は比較的考え込んでしまうタイプだが、自分では全く分からない、めどが立たないとなれば糸口をつかむまで少し頭の中で整理してから、誰かに聞きに行くという癖がついた。

同時に規模がでかい割に人員が少ないプロジェクトであったため、自分の分担以外の部分はほとんどの人が設計書の範囲内でしか理解していなかった。ベテランでもそうでなくても自分の担当していないパートはそれを担当した人のところへ聞きに行っていた。僕が尋ねられることもあった。最初はベテランの人たちに聞かれると自分が間違っているのではないかとびくびくしていたが、次第にそれにも慣れ、同時に先輩であれだれであれ聞きに行けばいいのだという気楽さが僕の中に根付いた。
わからないものはわからないのだ。だからわかる人に聞けばよいのだ。質問をされるのは、学校のように誰かを試すためではない。値踏みしているからではない。質問をするのもされるのも、学校では試験だった。評価だった。しかし仕事ではそうではない。わからないから聞くのだ。わからなければならないから聞くのだ。わかっていることを理解の具合を試すために聞かれているのではない。その意識が根付いてくれば、誰かに何かを尋ねることは、たとえその手を止めさせることになったとしても怖いことではなくなった。
同時に誰かの手を止めることになるのだから、ある程度整理し、ある程度一度で理解するように努めるようにした。簡潔にポイントを整理して話すように心掛けた。それでもわからないことはあるし、もう一度聞きに行くこともある。でもだれもそれを億劫がらなかった。わかりやすいこともあったしわかりにくいこともあったけれども、きちんと理解できれば作業は速く進んだ。早く進めばだれかが楽になった。時間が押しているプロジェクトだったので、時間管理も厳格だった。少しでも予定をオーバーすると誰かが誰かのフォローに回った。仕事のおおいベテランほどその割合が高かったから、予定のオーバーは叱責ではなく、本当に手が回らないか見積もりの間違いだという意識が共有されていた。僕がオーバーする分にはOJTをしてくれている先輩が心配する程度で、クリティカルに予定に響いてきそうならきちんとフォローが入った。僕はできそうにない場合は素直にその旨を伝えた。
僕ができることは大したことではないにせよ、その大したことのない何かをするより注力すべきことがある人から仕事を引き受けて毎日消化した。いろいろなものが見え、いろいろなことがわからなくなり、いろいろなことを忘れ、いろいろなことを考えた。考えることはたくさんあった。新しいものはたくさんあった。毎日が飛ぶような速さですぎていった。


僕とわりとうまが合う開発の中心メンバの人にはよく質問をしたし、コードレビューなども個人的にしてもらったりなどした。一部だけ改変や移植ではなく、僕が一から調査し、設計し、ゼロからコードを書いた部分があった。それほど難しい話ではなく簡単にやろうと思えば簡単にはなるが、というような部分だったので僕におはちが回ってきたわけだが、そこはメインの機能と絡む部分だからよくその人と話をした。漠然とした質問に、しかし的確に返してくれる人だ。ざっくりとした要求を、経験のない僕にもわかるように輪郭を描いてくれる人だ。そのために時間を長めに割くことをあまり厭わない人だ。
今まで漠然とかいていたコードは明確に保守性と再利用性を意識したものに書き換えるように指示され、そのやり方もコードではなくあくまでも言葉でフィードバックされた。なぜ保守性と再利用性が求められるのか、そのために時間をかけることは構わないという話。そして、修正すればまたフィードバックが来る。短いやり取りの中で得るものは数えきれなかった。目が覚めるように視界が明るくなる錯覚を覚えることもしばしばだった。初心者がさまよい続ける薄暗がりの中で、一貫したポリシーと経験に基づく予見は階段を照らす光だった。その階段を上るのは僕自身の足だった。しゃべりすぎない、かといって突き放しすぎないその絶妙な距離感は彼がベテランだからという部分も大きいが、しかし波長が合う部分もそれなりにあるのだろうなと思ったりする。
そういえばぼくはしばしば終電ぎりぎりで帰った*2が、9時を過ぎて人が少なくなってくると、雑談もよくした。OJTをしてもらっている先輩と、そのひとと、僕とでくだらない話をして、軽口をたたき合ったりなどした。そうやっているとどんどん腰が軽くなる。わからないことで手が空いていそうならさっと聞きに行くことができる。そうするうちに、わからない部分はどこで、どこを聞けば問題が解決できるかもわかってくるようになる。ポイントを絞って聞くことができるようになるから、聞きたかったことの答えを得られるようになる。そうやって、検証の作業に移っても僕は比較的楽にそちらの作業を理解することができた。


たまたま余裕のないプロジェクトに、全く何もわからない状態で放り込まれて時間がないまま追い立てられ、ある程度は自力でやることを求められつつも誰かを頼ることが当然の雰囲気の中にいられたのは本当にどうしようもなく幸運なことなのだと今、思う。一応チェックが入るとはいえ、すべてを精密に調べる時間のないプロジェクトだったから、責任を持って自分に任せられた仕事はするようになった。それはごまかしやうまくやっていることをアピールするためのものではなく、他の人に手間をかけさせないためだったり良い製品を作るための責任だった。座学の新人研修ではどうしても自分に能力があることをアピールすることに目が向きがちな人が多くて疲れるが、そういうことはなかった。それがよかった。
人数が少ないのもよかった。質問が飛び交い、フォローがすぐさま入り、身軽で距離が近く経験が浅いひとよりベテランの方が多い環境というのはそう得られるものではない。示唆に富んだアドバイスもずっこけるような質問もカオスのように内包して一人やたら遅れて泳ぐ僕も流れに飲み込まれるように先へ先へと進むことができた。コーディングをするそのそばから、昨日できなかったことがわかり、一昨日までできなかったことができるようになり、一年前に調べることもできなかったようなことを思いつくようになる。そういう経験。

はたしてこういう経験をふつうのOJTでできただろうか、と思ったりなどする。僕はいまだに質問をしようかどうしようかためらっているのではないだろうか。それともやっぱり今のように過去を振り返っていただろうか。
質問をするのが当たり前だということ。
新人にも質問をしに来る人がいるということ。
質問をすればそれに対して答えた人が思っている以上に得るものはたぶん多いということ。
そういうことがわかると質問をしに行くのが苦にならなくなる。楽しくなる。手を止めさせることに対する申し訳なさもその分何をかを得ようという意気込みと責任に変わる。僕はそういう風に思ったりする。
特に、質問をされるというのはいいものなんじゃないかな。新人は質問をされると一生懸命答えますよwだってね、一生懸命調べてやってみて、できて、それを聞かれて、よくわかりませんとかやってみたら出来ましたとか答えにくいじゃないですか。たとえもし答えたとしても、じゃぁ何をやってみたのかとか具体的なことを聞くとたぶん一生懸命答えます。新人にとって振ってくる仕事の一つ一つが大事なので試されているわけではなく聞かれるというのは一生懸命になるものなのです。えぇ。


まぁでも僕はそんなに新人がうんぬん考えてたわけじゃなく、かといって僕がたいそうなことができると思っていたわけでもなく、口癖のように新人は謝るのが仕事ですとか迷惑をかけるのが仕事ですとか言ったりなどしてたし、早めに出社して、かつ毎日休まないように体調管理することだけは意識していた。いやぁ、ほんとなんもできてなくて…とかできたと思ったらできてなかったりとかして本当に申し訳ないとか当たり前のように言っていたら部長さんに「新人ってのは何でも完璧にできた気になっちゃうもんだけど珍しいねぇ」などと笑われたりなどしたけど、僕が口にする言葉が当たり前のように出てくるのは、そういう環境があったからなのだろう。何度も書いているけれども、本当に楽しかった。本当に勉強になった。たぶん折にふれて、この体験は思い出すのだろうという確信を抱いて、プロジェクトは収束へ向かおうとし始めている。

*1:とはいえ今年は二人だが

*2:今もだが