底辺の技術者からみた感想

http://d.hatena.ne.jp/ryoasai/20110109/1294581985
底辺な技術者が見てみた感じでは…


試験のコード軽く斜め読みしてみた感じでは確かに突っ込みたいところは多いですが、基本的にはstartThisメソッドをインターフェースで記述すればいいだけに見えます。使われ方として例外がないようなので。

この試験は業務の実装技術を競うものではありません。試験名等を見る限りあくまでもJava言語の試験です。ですから、出来るだけ必要とするクラスを減らす必要があります(2,3級の範囲から見るとそういうのはあると思われますし、暗記するのも厳しいでしょう)。これでもだいぶ業務系によりすぎている、業務系のJava書きが有利すぎる試験内容だと思うくらいです。あくまでも特定用途方面で一般的になっているだけという書き方は広く存在します。同じく汎用言語であるC/C++あたりも汎用試験をみてみると結局タブ区切りを配列で扱うといったことはごくごく普通で、業務系をやっていない場合この仕組みを理解するところからはじめないといけません。

ですからその一部の範囲では当たり前と思うコードを前提にするのはおかしなことです。それだとJavaを手足のように使いこなせている人にとっても解けない問題が出るということになります。業務系しかやってない人にフルスクリーン化とか描画のフレームレート管理とかタスクの管理とか効果音の発音タイミングとかいわれてもついていけない可能性はありますよね?もしくは並列化やキューやFutureなどの非同期方面とか。業務系に関するところでもプリンタ印刷系とかもよく使いますが、出来ない人もそれなりにいると思います。そしてこれらはすべて標準APIの範囲内です。

信じられないことに2級での範囲でjava.awt.imageパッケージが出てくることを考えると(java.awt.Imageの間違い?)実はかなり画像処理周りに力を入れた試験かもしれません。java.awt.eventパッケージもありますが、これはゲームでも業務系でもどちらでも頻繁に使われるパッケージということでバランスはいいですね。たまにマウスホイールイベントとかとりたいときありますよね。

まぁコレクションやenumくらいはあってもいいとは思いますけどね。EnumSetとかQueueとかも頻繁に使いますし。


なので、即戦力を求めるのであればその内容よりの試験を作る、というのが正しいのだと思います。業務系ならばもちろんJavaEEの覚えることのオンパレードになりますが。ほとんどJSFJPAEJBあたりで実装でしょうね。でもこの組み合わせは生産性が高すぎて試験内容が簡単になりすぎるのでどうかとも思いますけど。IDEの使用は許可されていますので。むしろそうではない2,3級のほうが難しい場合もあるかもしれません。


というわけで、あくまでも汎用言語の試験である、ということを考えるべきだと思います。汎用言語では一部の仕事内容に特化したものは試験にしづらいでしょう。仕事でゲーム作っている人もいればツールを作っている人もいるはずです。そしてこれらもすべてビジネス用途です。


個人的にはどちらかというとサポートが終了しているJ2SE 5.0を対象としているほうがだめだなと真っ先に思いました。3級だとStringBufferとかを使えることになっているのもいったいいつの話をしているのだ?と思うことがあります。

学習時間の目安を見るとわかりますが、つめこめば3ヶ月で1級までいけるという程度のものです。他の言語をやってきたのかとかもあるとは思いますが、3級がこの時間数で初学者を対象としているということから考えると複雑には出来ないでしょう。むしろ、本当に初めてだと3級ですらこの短時間で理解するのは難しいのではないかと思います。


あと、コメントが個人的に一番同意します。PGとかって言われだしたのはつい最近のこと。それまではごくごく一部の組織内のみで使われていたはずなのになぜか一般化。おそらく派遣が一般的になったときに上がそういう単語を使ったので、下まで普及してしまったのでしょう。人を動かすのが一般的な仕事になってしまったとも。10年ほど前から規模が大きくない仕事も大きいところのみに集中してしまった弊害ですね。だから小さいところは下請けをするしかなくなった。ほかの業界も大手が小さいところの仕事を奪いにくるって一般的なんですかね。


資格ってのは即戦力になるかどうかの判断基準ではなく、戦力になる基礎をもつかどうかの判断用なんですわ。だからたとえば2種は即戦力になるためのものではないけど、この試験範囲は基礎、素養としては役に立ちます。たとえば浮動小数点演算の基本とかビット操作は今でも使わないといけない技術です。50年後はBCDが普通になってるかもしれませんけど、5年先程度ではかわってないでしょう。BigDecimalは2進で数値を持っていて10進スケールでゲタはかせた浮動小数点用クラスです。C言語あたりもいまだにやってもらいたいとよく言われるのはメモリという概念がいまだに切り離せず、いろんなことの対応で必要になるからというのにも似ています。Stringの連結が重くなるとかハードよりの技術を多少やっていればすぐに理由がわかります。無理やり中小どの高いJavaのまま理由を覚えさせるよりはC言語を覚えさせたほうが早いわけですね。