Line 1: Error: Invalid Blog('by Esehara' )

または私は如何にして心配するのを止めてバグを愛するようになったか

>> Zanmemo

あと何かあれは 「esehara あっと じーめーる」 か @esehara まで

理想的なチーム

 スタートアップの人達は、チームという言葉が好きで、確かに俺もプロジェクトメンバーといわれるより、チームというほうがわくわくする。なぜなら俺たちは仲間だという感じがするからだ。僕も、実はチームということばは好きだ。しかし、綺麗な言葉は、汚い現実を隠すように作用することもある。チームと念仏のように唱えていても、たんに烏合の集というか、たんなるプロジェクトを遂行する個々の集まりは変えられない。

 そこで、自分なりに、もしチームとして言われた場合、想像する理想的な状況としてのチームを考える。ちなみに、想像上のチームであるからメルヘンだ。現実はもっと複雑で過酷だ。

 まず、普通のプロジェクトだったりすると、分業体制が敷かれる。Web製作だったりすると、例えばデザイン、フロントエンド、バックエンド、そしてアプリケーション、といったような区分が生まれる。そこで、お互いはお互いの話の進行状態は共有されない。知っているのはプロジェクトマネージャーという人だけだ。そこではデザインの人は終始デザインだし、フロントエンドは終始フロントエンドだ。

 これは、僕が思うに不信なのだろうと思う。要するに、貴方達はデザインがわからない、だから私がデザインをやるというように構築されている。したがって、デザインの話は共有されない。フロントエンドからバックエンドの話も共有されない。なぜなら、私のやっていることなんて説明してもしかたないからだ。だから、お互いは独立し、たまに接点があるときに仕様上の質問を投げ合うだけである。そして、マネージャーも進捗状況にしか興味が無い。

 しかし、チームは優秀な技術者達が集まっている。優秀な技術者だから何でもさわる。ある人はJavaScriptを書きながら、Arduinoをいじっている。ある技術者はClojureを書きながら、compassで趣味のWebデザインをしている。またiOSエンジニアをやりながら、データベースをいじっている。このように、技術に対して好奇心を持って接すると、プロレベルというわけではないが、そこそこ知っていることになる。

 この状態のとき、単純にフロントエンジニア、デザイナー、バックエンドといったような区分は、単にその人が一番詳しいからそれを門番を行っているという認識にすぎない。彼らは優秀だから、それぞれ書こうと思ったら書けるのだが、あえてやらない。なぜなら、それに詳しい人間がいるから。

 さらにいいことに、彼らは自分たちの書いたコードを説明しようとする。なぜから、自分たちのコードは価値があるものだと考えているからだ。そして、彼らは自分のコードを共有しようとする。ほら、おいしいお菓子があったらおすそ分けするじゃない?だから、そういう感覚で自分たちのコードを書いている。もちろん、全部が全部ではないけれど、たまに興味があるものがあるなら、自分の範囲でなくてもソースを読んだりする。彼らは面倒くさいからといって、自分が行ったソースの変更を飛ばさないし、同じ文言でまとめたりしない。

 なぜなら、全てのログに意味があることを知っているし、そして意味があるからまとめられた。そしてそれは適切にコミットの粒度が整えられているから、誰にとっても読みやすい(そもそも、知らない言語を知らないからって飛ばしたりするようなエンジニアはいない)。自分が書いたコードは価値を生み出すコードだということを理解している。

 ソースの変更履歴、例えばGitなど、全て何らかのチャットで逐一流れてくる。その場にいなくても凄い一体となって働いているようだ。もし各エンジニアレビューが終わり(その人とは別の人がマージするが、いろいろな人が覗きにくる)、ユニットテストで破壊されないことを確認すると、Jenkinsでサーバーにpush。新しいユーザー体験いっちょ上りだ!そして、すばやくユーザーにソーシャルメディアを使ってお知らせする。「ほらいっちょあがりだ!」

 こういう状態のとき、信じられないことが起きたりする。

 バックエンドはあるほげ実装について悩んでいた。そしていろいろあったあげく、なんとか実装した。それはぱっと見あまり綺麗なものではない。そのコミットを見ていたたまたま聞いた話を共有する。それを聞いた瞬間、パンと閃いてバックエンドの実装が一気に綺麗になる。デザイナーが知っていた知識が、バックエンドのソースを改善したのだ!彼はデザイナーの人に感謝をするわけだ。

 これは信頼関係に基づくものだ。なぜなら、自分のコードはちゃんと理解できるチームであるということだ。それは、自分が行っている作業の過程を共有してもいいということでもある。その人が、それを責任持ってやっているというだけである。彼らはやろうと思えばきちんとできる才能を持っている。

 経営陣もそうだ。彼らを単なるシステムを作る道具とは考えない。彼らはユーザーに真剣に価値を提供しようとしている。だからこそ、彼らは自分たちが考えていることを共有する。全てが全てを共有するわけではないけれども、しかし、エンジニアリングが戦略上重要であることを理解している。だから、彼らの意見を求めるし、自分たちからも意見する。ただの金のことを知らないギークではない。立派な、ユーザーの友のギークである。

 これが実際に何を果たすのかは全く分からない。これは物語的美談である。結局泥臭い現実には泥臭い物語がある。ただ、あまりにも綺麗な夢だったから、記録しておきたかっただけだ。

 追記: 実は『Team Geek』を持っていたけれども、誰かにあげてしまった。もしかしたら似たようなことが書いてあったのかもしれない。