なんとなーく違和感がー

経過年数0年*1Javaプログラマがちょっと書くよ。

って言うか、Javaの極々基本的な知識である
equals/hashCodeの実装
Serializableの実装
Iteratorの実装
が全く出来ないんだよね…。

経験年数2年半のJavaプログラマがちょっと書くよ。

なんとなく思ったのは、これって実装できるかどうかを問題にしたというより、『どんな時に実装すればいいか』という問いかけを行っているような印象を受けた。how じゃなくて what と where と when と why を問題にしているみたいな。

地味にマジレスするなら equals/hashCode の実装は eclipse あたりに自動生成させれば良いんじゃね? とは思う。ただしどんな how であれ、理解してコーディングしなければバグ入る余地が増えるよね。問題はそこのはず。理解しないことはすなわちコピペの悪しき文化ですし。
で、良くある「フレームワーク設計者がちゃんとしていれば良い」って意見だけどさ、これも若干ずれていて、コーダーこそ実装(とくに when と why) を意識しなければならないと思う。equals/hashCode 実装してないオブジェクトを Map のキーに突っ込んで「うまく動かないのはフレームワークが悪いからです」って責任転嫁だけは容易にしてもバグは解決しないし。まあ責任転嫁できるだけの能力あれば平気のような気はするけど。

あと、ついでに取り留めないこと書いておくと、カスタムシリアライズクラス作るのは本当に面倒で困る。あと C# を扱っていると Iterator が「hasNext - next 型」なのか「Next - Current 型」なのかで若干迷う。


ぶっちゃけ、『自分が今使っているツール*2の基礎知識もありません。学ぶ意欲もありません』 って台詞は冗談でも言わないでほしい。込み入ったことを知る必要は無いけど、なんか涙が出てくる。
あと基礎知識すら知らないプロ集団ってなんだろう。業務に支障をきたすくらいまで知識を削っていって「忙しくて学ぶ余裕がありません」ってどれだけ切羽詰まった業界なんだろう。

あと半年で自分もその業界に飛び込んでいくんだ。もう覚悟は済んだと思っていたけど、ちょっと辛いような気がしてきた。

*1:業務に関して。Java 自体に触れたのは10年も前から

*2:プログラム言語とか OS とか諸々