楽園から一歩踏み出してしまう

私はどこにいたのか

今の会社に入社し、以後半分以上の期間をいわゆるシステムエンジニアとして、ソフトの仕様をまとめる仕事をしてきた。「仕様書なんて書いたことがない」と言う顧客の側からは当然のように完璧な仕様書は出てこないし、それをそのまましても結局は検収を通過するソフトはできあがらない。誰がやるべきかは置いといて、確かにこの仕事は必要だと感じている。
同じ部署の人たちにあわせるため、というよりは「おまえにはできるかもしれないけど、他の人には出来ないからやるな」と言われたため、自分の持っている技術の大半を封印した状態で仕事をしていた。「○○を使えばすぐなのに、どうしてこんなこと手作業でやんなきゃならないんだ」そう思う度に苦痛でしかたなく、なれるまでにはかなりの時間を必要とした。その苦痛から逃れるため、一時期はコンピュータ関係の新しい技術について一切の勉強を止めたし、学生時代も仕事も組込みだったため毎月必ずチェックしていたインターフェースを見ないようにした。
仕事ならなんでもやる(非合法なのはやらんけど)と考えていたが、結構厳しいもんだねぇ。

私は今どこにいるのか

現在勤務している会社を退職する事にした。理由としては「ソフト開発についての技術力が低いと感じた」から。「ソフトの技術力」と言っても色々あるが、ここで言ってる「ソフトの技術」は、プログラム言語やプログラミングパラダイム開発プロセスオペレーティングシステム等々の実装よりの知識や経験の事を指している。
作業省力化のために人が手でやっている事をコンピュータにやらせるのがセオリーだと思うし、ソフトの会社は自社でそれをやれるべきだと思う。そのためにはそれなりの技術力が必要たが、一方で自分以外が触れない程高度なものを作ってしまうのも組織としては問題だと思う。それを満たすのは自分と同じか自分より技術力をもった人達が回りにいること。

Rubyはもう駄目かもしれない
うちの職場はちゃんとしたプログラマが集まるような会社じゃなくって、よくある泥の中。たまたまうちのチームだけその泥の中に浮かんだちっちゃな浮き島になっています。

運なのかid:minekoaさんの力なのか、とにかくそれを満たす浮き島がある。私も自分が楽をするために、浮き島維持に少しは貢献してきた(はず)。
しかし私はもうそろそろ、その浮き島を捨てる。退職の理由は確かに上の通りである。また、誰かを説得する事が仕事の中心となり全然ソフトを作ってない事や、その他にも色々と積み上がった事によるものでもあるが、最後の最後にトリガを引いたのは、浮き島の人を入れ換えると言われたからだった。
ただでさえシステムエンジニアをやってる事でソフト屋としての技術力が落ちていってるのに、この上出来るやつを奪い取られて出来ないやつ入れられたら、またもやサービス残業の嵐になる。「サラリーマンだからしかたのないこと」だと我慢するべきかもしれない。でもやっぱり私は暇か技術力か、少なくともどちらかが欲しい。
浮き島維持できないなら、ここで我慢してシステムエンジニアやってることねーや。

私はどこに向かうのか

少なくとも後5年位はソフトの技術者として仕事をしていきたい。これから先の技術ってなんだろう?
そう考えた私の出した答えは「マルチコアで並列プログラミング」。「マルチコアだのマルチプロセッサだの昔からあるだろ?」と言われればその通り。ただ昔と今とで違うのは、大型の計算機だけでなく、家庭用ゲーム機やパソコンにまで広く浸透したと言う事(家庭用ゲーム機は結構前から2個くらいプロセッサもってたらしいが…)。そして「高速化=コアが増える」となればなるほど、既存のシングルコアを前提としたソフトは相対的に遅くなっていく。
そうなってくるとシングルコア前提の既存ソフトを並列プログラムにする仕事が色々出てくるだろう。そして性能はそこそこでも楽にマルチコアのプログラムを書きたいというのも出てくるだろう。その方法として、既存のプログラム言語のライブラリが吸収するかもしれないし、新しいプログラム言語が出てくるかも知れないし、昔からある並列関係の理論が設計に顔を出すかもしれないし、OSレベルで対処するのかもしれないし、とにかく何かが起きそうな気がする。
何も起こらなかったら…まぁそのとき考えるか。

それはそれとして

id:minekoaさん、ありがとうございました。色々無理な仕事を押しつけてやってもらったことも、オブジェクト指向プログラミングを懇切丁寧に教えていただいた事も、本当に感謝しています。それに対して全然お礼ができていないですが、そのうち必ず何かの形で返します。…ってゆーと「礼はいいから、その新しいプログラム言語をおまえが作れ」っていわれそーだな。まぁErlangとかOccamとCellとか勉強しながら、ちょっと考えときます。