デバッガがあるから有利とはとても思えない

そろろろRailsについて本音を書いてみるか

言いたいことはよくわかるしほとんど同意。

でも、Javaソースコードデバッガ(シンボリックデバッガ)が充実しているからデバッグで有利というのはちょっと違うと思う。ソースコードデバッガはあることにこしたことはないけど、必須なものではないはずだ。

少なくともほとんどのある程度の年期のある技術者はまずソースコードを追ってバグを修正するはずだ。最近はちょっとしたことでもデバッガをすぐ起動してしまう人が多いのも知っている。そんなのソース見ればすぐわかるだろうという箇所でデバッガ多用で開発効率を落としているのを見るとかなしくなってくる。ソースを読めない人が増えてるのもこれが原因ではないかと勘ぐってしまいたくなる。

おそらくスクリプト系の開発者が最終的にターゲットとしている人はそういう人だ。自分が思い描いたとおりに出来るだけコードを打ち込むときの負担を減らして思考を妨げないことで、バグを減らすと。スクリプト言語はその見た目の敷居の低さに初心者向けともてはやされているけど、実はそうじゃないんだよと俺はいつも言い続けてる。

おいらはJavaに出会っていまだ業務用アプリの開発効率でJavaを超える言語に出会っていない。Javaがでたとき世の中Appletがもてはやされたが、おいらはJavaアプリケーションでゲームやらアプリやらいろいろいじっていた。そのとき圧倒的なJavaの硬さにほれた。

while(1){}

というコードが通らないというところですでに虜。開発していて何が一番の負担だったかといえば、それは結合だったりデバッグだったりいわゆる単純な実装部分ではないところだ。実装そのもので悩むことなんてまずない。そういうところのあいまいさをなくせるというのはやはり大きかった。1年前に自分が書いたコードはすでに他人のコードだしね。

次に単体テストが簡単にできたこと。JUnitが普及する以前の話だが、Javaではあらゆるクラスにmainを書くことが出来る。ここにテストコードを全て書いていた。テストコードが動いてはじめて完成する。つまり、mainを作らなかったコードは未完成とみなしていた。

だからおいらにとってはJavaは圧倒的開発効率を誇る言語で、Rubyがもてはやされている今でもそれはかわっていない。トライアンドエラーに頼ることが多いであろうPHPとはたぶん交わらないんだろうなぁと思う。そこはBASICやらアセンブラで苦労してきたから。

Javaってもともとコンパイル時間が非常に短いのが特徴なので単体テストの手軽さとかそういうところにも助けられていたと思う。C言語全盛時代はコンパイルを実行したら10分単位で休憩してたことに慣れすぎてたというのもあるかもしれないけど、おかげでインタプリタとあんまり変わらない手軽さがあった。コンパイルに時間がかかるからこそ、コンパイル前にソースをきっちり書く癖もできていたのかもしれない(今となってはこの辺は怪しいけど)。


昔はスクリーンエディタ(死語くさいが、いわゆる上下にスクロール可能なテキストエディタ)すらなかったので全体を頭の中に入れておくしかなかった。そのおかげか30代以上くらいの人は上記のことは大概当てはまるはず。


なんか昔話ばっかだな。

でも、今の時代の新人がつらいのもわかっているつもり。いきなりオブジェクト指向やらWebの基礎知識、マルチスレッドなどの平行プログラミング、セキュリティなど言語そのもの以外に必要とする知識が多すぎる。おっさん技術者ほど技術力がとてつもなく高い(おいらは除く)人が多いのはこれらを言語の流行廃れなどと同時に順序良く詰め込んできたからだろう。過去20年くらいのさまざまな知識が新人1、2年目に求められるというのも酷な話だ。

もし、今後この調子でまた数十年たったとして、そのときの新人に求められる知識ってなんだろう。数学のように体系化されてちゃんと社会に出る前につかえるようになっているのだろうか。そうなってなきゃ想像するのが怖いんだが。

プログラマ35歳定年説とか、30歳にはプログラマやめて管理職になってね、とかわけわからない会社の圧力も多いけど、これがどれほどアホなことかわかってるのかなぁ。デスマーチに耐えうる体力という意味だけなら20代だけにやらせる意味もあると思うんだけど(そんな会社はつぶれていい)、技術の積み重ねが大事な業界だからこそ年寄り技術者は大事にすべきだと思う。おいらが尊敬する上司って言語に対する知識もちゃんとある人だけなんだよね。いわゆる老害じゃなくちゃんと最新の動向も追ってる人ね。