GWだから色々書いてみるテスト。
生産性って実際100倍出るとかよく聞きますが、正直胡散臭いと思うんですよ。流石に100倍は「はじめてのJava」を読んだだけの大学生とかが比較対象にならないとそんな差はでねぇだろ、と。
で、まず生産性ってなんなんだよ、って適当に考えてみた訳なんですが、
CのHello worldのプログラム書くのにもレファレンス無しに書ける人もいればCを触った事もなければgccの使い方を知らない人もいるわけで、1分 vs 100分は十分出る差だとは思うんですよ。
実行速度とコードの奇麗さとかにも差が出るとは思うんですが、実行速度に関しては本当に重要なコードってそんな無茶苦茶多いわけでもないし(いや、あるんだけど)、コードの奇麗さはいまいち定量的に測れないので困ります。
コードを書く速度が重要かつ客観的に測りやすいわけなんだが、ぶっちゃけコードを書く速度は大抵書くコードの対象、言語、フレームワーク、APIを知ってるか知らないかで速度が違うくらいな気もする。レファレンス読みながらやってると遅いよね、というレベルな気がする。
知っていればオーバーヘッド無しで、知らなければオーバーヘッドが発生するわけなので、その知らなかった事を知る作業が、作業と比べて時間がかかればかかるほどコードを書く速度の倍率は高くなるわけです。
例:ServletでHello world
- Java 憶える(1日)
- Servletを憶える(1日)
- 環境を整える(1日)
- Hello worldのServletを書く(3分)
実際それぞれのステップがどのくらいかかるかはわかんないけど、サーブレットを書くのが3分なのに対して、そのために知らなくてはいけないことを知るのには3日かかる。一日8時間やったとして480倍くらいの生産性の違いがあります。すごい!
ただ、世の中はそんなに甘く無い訳で、3分で終わる仕事は少ないのです。
例:ServletでSNSのサイトを作る
- Java 憶える(1日)
- Servletを憶える(1日)
- 環境を整える(1日)
- SNSのサイトを作る(60日)
これもまた本当にそれぞれのステップにどのくらいかかんのかわかんないけど、こっちは60日 vs 63日とあまり差がない。どう見ても100倍生産性が高まってない。
そんなわけで、書くスピードに100倍差が出るプログラムというのは大学生の情報の授業の宿題程度のもので、現実的にはそんなに差が出ないと思う。