今日はSE的な話ではなく開発者技術者として、最近のプラグラム開発について思うことを。
20代は主にUnixワークステーションのハードウェアと一部ファームウェアの開発を担当してました。そのころはようやくC言語が登場してきて、それまでアセンブラで組んでた組込み系のソフトも16bitCPUが出てきてZ80時代の64KBのアドレス空間の制限からも解放され、ようやくC言語でクロスコンパイラを使って開発できるようになりました。
当時はプログラム言語の選択肢もほとんどなくてハード屋さんはアセンブラか組み込みC言語、アプリ屋さんはC言語やShellScript、テキスト処理系でawkやsedを駆使してツール開発するといった感じ。
僕は30代では開発から離れてSE職が長かったのですが、40代後半で一時期開発職に戻り、一回り若い連中とBDレコーダの動画DLサービス開発を担当していました。
その当時、少しPerlを使ったことがあります。
この時に出会ったエンジニアで凄く優秀な後輩が居て、外注さんが作成したソースコードを1~2日で読みきってしまう。
人が開発したソフトのデバッグをいとも簡単にやってしまう奴が居ました。
むしろ人が書いたソースコードを解析することに喜びまで覚えてしまうような感じでした。
彼は、C言語、Shell,Script、Java、Perl、PHP等々、なんでもござれで、状況によって使い分けも出来るオールマイティな天才児で、私が現在の会社で見てきたエンジニアの中では3本の指に入る逸材でした。
最近はここまで出来る逸材って見なくなりましたねぇ。
最近の若い開発者と話していると、平気で「僕はC言語はわからないので」「Javaしかわからないので」とか言語仕様から入ってくる方々が多いこと。
「わからんかったらこれを機に勉強しろよ」
と言いたくなるのですが、最終的には自分の出来ることしかしなくなる。
教育するほうも教育するほうで、新人研修とかでは「Java入門」とかから入り、あたかも言語仕様を覚えることが大事であるかのように教えます。
そもそも教える連中のスキルレベルも低い。
プログラム開発ってのは、「プログラム言語」を覚えることではありません。
「プログラム言語」ってのは手段しでしかなくて、アプリケーションを開発する上で重要なのは、その基本設計力やアルゴリズムを習得することあったりする訳で、そういう基本的なスキルがあって、手段の有効的な使い方を知っていることが重要なわけです。
そこをきっちりと教育しかないから、質の悪いプログラマ(コーダーですね)が出来上がってしまうのだと思います。