読者です 読者をやめる 読者になる 読者になる

プログラマでありたい

おっさんになっても、プログラマでありつづけたい

「テスト考2014」考

 テスト考2014が面白いです。記事本文は無論のこと、それに対するブックマークやTwitterの反応が興味深いです。反応としては、主に以下の2つにまとめられます。

  • 賛成。テストの費用対効果を考えるべきだよね
  • 反対。現実の開発の現場を見ろ

2つの世界



 何故、ここまで賛否両論になるのしょう?恐らく2つの世界から見た意見なのです。
1つは、職人の世界。あるいは少数精鋭の開発者達です。ベンチャー企業やWeb系の企業が多いですね。こちらの世界では、少数精鋭で開発者の個々の能力が高いことが多いです。生産性をあげるには、元々もっているパフォーマンスをいかに出して貰うかが、組織としては大切になります。そうすると開発の方針としては、生産性を落とさない為の足かせを無くすということが大切になります。簡単にいうと、開発方式をトップレベルに合わせるということですね。
 もう1つは、SIerにみられるような、大量の人を投入してつくり上げる世界です。言い方悪いかもしれませんが、開発者の質は玉石混交です。玉石混交なので、開発者の能力の振れ幅は大きいです。そうなると怖いのが、品質の低いコードの混入です。またその結果としての、バグの頻発による開発遅延です。それを防ぐ為に、開発工程においてバグを出さないようにするか、もしくはバグを検知出来るようにするかです。開発方針としては、下のレベルに合わせて誰が作っても同じようなコードが出来るようにすることです。SIerが開発ツールやフレームワークが大好きなのは、ここが理由になります。

どちらの世界が正しいのか?



 私としてはどちらの意見も正しいと思います。難しいのが、どちらの世界が正しいかということです。前者の職人・少数精鋭の世界は、別の言い方をするとアーティストの世界です。アーティストなので余人を持って変えがたくなることが多いです。その為、人を探すのが難しいです。これに対して後者の世界は、エンジニアリングの世界です。働く人を交換・代替可能である必要があります。工場をイメージして頂ければ解りやすいと思います。
 では、システムの開発・運用の現場を、少数精鋭で回し続けられるのかというと中々難しいです。今までにないようなイノベーティブなサービスを作るのであれば、少人数でがっと進める方が成功する確率が(多産多死という意味で)高いでしょう。一方で、ある程度成長したサービスを少人数で回しつづけるのも難しいです。
 例えば一般的に、Googleは天才集団と思われています。実際のところは、全世界で5万人以上いる大きな会社です。シリコンバレー在住の時に、知人が何人かGoogleで働いていましたが、特別凄い人達ばかり集めていたという訳でもなく、役割に応じて求職をするという形態のようでした。ルーチンに近い作業をひたすらするという役割もあるんでしょうね。

まとめ



 長くなりましたが、住んでいる世界が違うので意見が違うのは当たり前という、何ともつまらない結論です。しかし、住んでいる世界が違うから、他から学ばないというのは勿体無いです。真似できることは、真似したら良いと思います。



See Also:
Web画面の自動テストの導入に失敗する理由とその対策
Selenium2.0 WebDriverで複数ブラウザのUIテスト もう一度、Selenium再入門
JenkinsとSelenium WebDriverでUI層のテストも自動化&永続化する


参照:
テスト考2014 - Hidden in Plain Sight
RE: テスト考2014 #SWTestAdvent — うさぎ組