速さは力

その昔そんな広告があったと思ったあなた、30歳超えてますね。

思い立ったら行動は早いので早速デスクトップPCを購入。予定通りCPUはE8400。バスクロックもメモリの速度も2ndキャッシュ容量もビデオも今まで使っていたVAIOのノートPCとは段違いに高速化しているはず。

パーツ 変更後 変更前
CPU Core 2 Duo /3GHz Core Duo /1.66GHz
2ndキャッシュ 6MB 2MB
バスクロック 1333MHz 667MHz
ビデオ GeForce8600 GeForce7400GO
メモリ DDR2/800-2GB DDR2/667-1.5GB
HDD 7200RPM 5400RPM

アンチウィルスソフト、データベース、JDK、NetBeans6.0(お仕事環境のため)、glassfishV2、Firefox、メーラとセットアップ完了。

実際にお仕事で使っているearファイルでアプリケーションサーバー(Grassfish V2UR1)のデプロイの速度を計ってみる。中身はwarファイル*3+ejb-jar*1と比較的ヘビーなものだ。アプリケーションサーバ側もjmsやコネクションプール等設定はしてあるので、素の状態より重いはず。

結果はantの表示時間。もちろん、NetBeansによるいわゆる「主プロジェクトの実行」、つまりF6を押しただけ。

デプロイ時間 ・・・ 6秒!

ぎゃー早い。earファイルのコピーと展開でそのほとんどの時間がとられている感じ。実際に開発するときと同様アンデプロイの時間も含めてこれ。単純にデプロイ単体ならば「4秒」という表示だった。


そこでディレクトリデプロイをしてみる。メモリに余裕があって、生成物の削除と構築をするときにだけアンデプロイをするということを心がけるならば、こちらも使い物になる(Tomcatはつかみっぱなしになってだめだったはず。また、NetBeansのデフォはこちら)。


デプロイ時間 ・・・ 3秒!!!

なにこの速さ。メモリも2GBへ増やしたので、Glassfishにメモリを割り当てるようにして、ディレクトリデプロイを本気で考えるというのもありかもしれない。


金で時間を買えるならマシンを買い換えるというのはありだなー。このデスクトップは自作でもなんでもなくてショップブランド。省スペースタイプで価格も8万円台なので、ビデオはいらないとか筐体はあまり小さくなくてもマイクロATX程度でいいやとなるとさらに値段も下がるだろう。

ベテランかどうかはあまり関係ないかも

ソースコードがドキュメント足りえないのは訓練していないから

 駆け出しのプログラマは、仕様書をトレースしたような(つまり手続き型的な)ソースコードを書きがちです。それは仕様書に忠実ですが、読みやすいソースコードになるとは限りません。下手をするとこれだけでSEなるお化けに彼らはなってしまいます。こうして、SEたちは仕様書至上主義者となっていくわけです。

 いっぽう、ベテランプログラマは、仕様書を一度そしゃくします。そしてわかり易いソースコードになるように再構成するわけです。すると、仕様書というものが空しく見えてきます。SEなるお化けは、仕様書をトレースするようなコーディングしか経験していませんので、仕様書を詳しく書くことこそがコーディングさせるのに最良のものと考えます。

ベテランかどうかはあまり関係ないかも。おいらが新人として配属された1年目ですらそういうソースコードにそのまま起こすための仕様なんてものは渡されてなかったし、やりたいことをちゃんと理解させて、コードは自由に書けというスタイルだった。つまり、環境のせい。

そもそもそんな仕様書を書く暇があったらコードが書けるわけで、効率がひたすら悪い。


でも日本語によるプログラム設計書と違い、ソースコードの場合、使用する言語やフレームワークによって大幅に構成は変わってくる。それらをすべて自称SEクンに読ませるのは骨が折れるだろう。そのSEクンは現場によって違う、ありとあらゆる言語やフレームワークを理解してもらわないといけないのだから。


とはいえ、言語やフレームワークにはそれなりにあった使い方というものがあり、日本語で指示されたコードがその流儀に従っていない場合どうしたらいいのだろう。つまり、日本語で書かれたトレースさせるような設計書自体役に立たないことを現してしまう。だからいつまでたっても、コボラーのようなコードといわれるのだろう。


言語によって思想が違うというのはこちらにもあったが珍しくはない。だから、すでに言語を1つ知っていれば一ヶ月もあれば追加の言語をマスターするのは簡単だという人は信用できない。それはうわべを覚えただけでマスターとは程遠いだろう、と。たとえばJavaも最低でも1年、まともに使い物になるには2、3年は要するはずだ。

つまり、言語やフレームワークにあわせた最適な日本語によるトレースさせるようなプログラム設計書は事実上不可能になってしまう。数種類の言語を使い分けることができるころには10年以上を要することになってしまうからだ。


言語を選択するってことはとても大事なことで、会社として新人にどういった言語を勉強させるか、2〜3年後の収穫期(バリバリコードを書けるようになる時期)を考慮しながら教えていかなければならない。3,4年たったのでプログラマからSEへクラスチェンジをしてもらうという会社も多く存在するが、稼げる時期をなくしてしまう理由が個人的にはわからない。プログラマってのは設計もコーディングもするクラスなのだからみんなやればいいじゃない。

新人のOJT用としてトレースしたような設計書を渡すのは、ぜんぜんトレーニングにならないのだからやめたほうがよい。最初からこのプロジェクトの背景にあるものとか、DB選択の理由、こういった設計になったわけなどを教えていけばよい。その辺がしっかりわかっていれば、人のコードを見ながら(できればペアプロがいい)自然と必要になるテストコード等がわかってくるはず。そんな状況で鍛えられた新人ならば1年後には仕様の間違い等もしっかり指摘できる頼れる人材になっているはずだ。


そもそも、日本語からコンピュータ言語へ変換するだけの作業ならば、将来に絶望してこの業界をやめていく人が大量にいそう。夢と希望と不安を持って新卒の内容がこれだったら絶望しか生まれてこないでしょ。できる人ならなおさらというあたりがたちが悪い。モチベーションって大事だよね。