GoTheDistance

ござ先輩と言われています。(株) クオリティスタートという会社をやっています。

JavaとRubyの間にある、ベルリンの壁

ネタ元はこのあたり。

弊社の某エロい人がRoRに萌えており「おお、なんて生産性が高いんだ。もうWebアプリなんて全部これでいいじゃないか。」とか本気で思ってそうなので萎える。言語の違いは時にはビジネスモデルの違いにつながることが理解できないようだ。言語ってのは文化なの!これからはRubyを全面的に取り入れ開発標準もRubyだぁぁぁぁとか言い出したらどうしよう。グーで殴るしかないかw

本来、コード量の少なさや、CoCを前提とした設定の少なさが価値を発揮するのは、メンテナンスの場面です。読み込まないといけないコード量の少なさと、少ないコードの変更で修正ができることが、その理由です。そのためには、大前提として、Ruby(on Rails)らしい、プログラムを作っておくことが必須なので、マネージャはその辺りに腐心すべきでしょう。今までと同じやり方では駄目です。

そのまま某エロい人に読ませたい。100回ぐらい読ませたい。だけど、絶対分からないとも同時に思う。これを理解できるSIerの経営陣を探すのは太平洋に落ちたダイヤを探すようなものだ。少なくとも例の重鎮様にはご理解頂けないだろう。

前も書いたけど別にJavaでもRubyでも大規模なシステムを作ることは出来ると思う。でも、やり方がまるで違う。Rubyは「大人数」の開発には向かない。むしろ、システム開発そのものが「大人数」でやるもんじゃないだろってことをRubyは匕首の如く人月商売モデルに突きつけていると考えたい。プライム取ったベンダーが下請けに対して「今回の見積はぶっちゃけRoR前提の生産性で取ってしまっているのでそこんとこ頼むわ」みたいな事態に絶対なる。むしろなっている案件だってもうあるはずだ。

とにかく頭数を揃えてガッチリしたものを作るやり方だと、前述の江島さんの指摘のようにいずれコスト面でパッケージに勝てなくなる。なので、これからは、本当に必要な箇所だけを最小限の人数で作る手法が必要。

生産性は言語やフレームワークを適用すれば上がるもんじゃないってことをどう説明すればよいのか。言語の違いは文化の違いであって、それは仕事の進め方の違いにつながるんですっていうのをどう説明すればよいのか。生産性って「less Code,less documents」のことに等しいんだけど、それを実現するために実は相当複雑なことをやっていて、それはあたかも白鳥が水面下で水をかいているのと同じだぞっていうのをどう説明すればいいのか。

このベルリンの壁をどう壊すべきか悩むところです。