カネの為のプログラム、勉強の為のプログラム

 生業としてプログラマをやっていると「仕事」として依頼されてプログラムを作ることになる。

 システム開発ってのはお客さんのやりたいことを実現するのが目的になる。「じゃぁこういう風にしましょうか」って仕様が決まると、後は淡々と作ってテストして動作確認をするという作業なんだ。いつも自分の技術のギリギリのラインでプログラムを書くなんてことはなくて、業務システムの8割ぐらいはプログラミングの技術的には比較的簡単な仕事。たまに技術的に困難な部分とか設計の難しいところがある。共通部とかは比較的難易度高め。

 んで、システム開発ボリュームゾーン、つまり一番労働力が必要なところってのは技術的に簡単な部分になる。というか、この部分をいかに簡単にするかってのがフレームワークの役目なわけだし、一番労力がかかるところを省力化するのが手っ取り早く効率化できるわけだから、ボリュームゾーンってのは簡単であるべきなんだ。

 仕事として「作ってくれ」と依頼されるプログラムの多くは、このボリュームゾーンのところ。毎度毎度、職人の超絶技巧が必要ってんじゃ、産業としてやってられないとはいえ、ぶっちゃけて言えばこの「仕事で作るプログラム」ってのは単純で簡単で退屈なんだ。

 ある程度プログラミングの技術が身についてきて、もっと挑戦したくなったとしても「作ってくれ」の中にはそういう仕事がなかったりする。いやまぁ難しい部分ってのも0じゃないんだけど、そういうのは技術的に信頼されているベテランとか新進気鋭の若者にお鉢が回るんだよね。仕事として腕試しをさせてもらえるってのはなかなかなくて、普通にIT業界に入って普通に依頼されたプログラムを作ってると、マンネリ化しちゃう。

 でもその難しいところってのを自分に任せて!と言ったところで、遊びじゃないんだから会社だって変にリスクとって、やれるかやれないか分からない奴にやらせるなんて賭けはしないわけで、「あいつならやれる」と思われないとだめなわけだ。

 あいつならやれる、と思わせるには技術がいるわけで、技術を身に付けれる仕事を割り当てられたければ技術的な信頼がいるわけで、という鶏と卵のような話になるわけなんだけど、会社が割り当ててくれないのが悪いと愚痴ったところで問題は解決しないから、自分で技術を身につける選択肢をとるしかないと思う。

  1. 「作ってくれ」と依頼されて作るプログラム。カネになる。
  2. 誰も作ってくれと言ってないプログラム。直接カネにならない。

ってのがあって、技術向上には後者が効果的なんだけど、後者のプログラムを業務でやらせてくれる会社ってのはなかなかない。

 まぁそうなると、勉強会出て、プライベートでプログラム書いて、技術を身に付けて「技術的に難易度の高い仕事」を分捕るしかないわけで、自分の書きたいコードを書け - 脱職業プログラマのすすめ - yvsu pron. yasって話になるんだな。コメント欄で

職業プログラマでなければ書けないプログラムはたくさんあります。
大規模なシステムとか組み込みのソフトウェアとか
プラント制御のプログラムを趣味で書けますか?

ってのは確かにそうなんだけど、そういうプログラムを設計する仕事ってのは自分で技術を磨いて分捕らないとやらせてもらえない。そういう仕事を任されている人ってやっぱり趣味でもプログラムするような人なんだよね。やっぱり好きこそものの上手なれってことなんだろうね。