プログラマというお仕事

プログラマは職人だ!プロならもっと腕を磨け。
世の中ヘボいプログラマが多すぎる。
少々過激な意見でも言っちゃうよ。

プログラマ

技術者の値段

技術者は、その持っている技術を売って対価を貰うのが仕事のはずです。
しかし業界の実態はちょっと違います。
よくあるこんなオファー

  • Javaのプログラマ若干名
  • 経験3年以上
  • 勤務地都内
  • 勤務時間9時〜18時 残業有
  • 月60万円
  • 作業時間が月180時間超の場合、別途精算
この値段って高いですか、安いですか?
たかだか3年程度の経験で、Javaプログラマですって顔して月に60万も稼げるなんて、近頃の雇用情勢を考えるとなんて恵まれてるんだと思います。
じゃあ私がこの話に飛びつくかと聞かれると
「冗談でしょ!?」こんな安い単価で現場に拘束されるなんて割に合いません。
要はその人次第なんですよ。技術者の相応な値段はピンキリです。本来なら。

上のようなものは、いわゆるシステム開発会社とかSI企業とか言われる会社間で毎日のように飛び交っている、案件情報というやつです。
こういった会社は、同業他社から入ってきたこのような情報を別の会社に流すのを生業としています。
他社に流す時に、一番最後の行を「月55万円」と書き変えて流すのが、これら会社のビジネスモデルです。

このようなオファーを受けて現場に派遣されるプログラマが売っているのは技術ではなく拘束時間です。そのプログラマを派遣する会社が売っているのは頭数です。このさいスキルの高低は二の次になってしまっています。発注する側にも問題はあります。技術者をその技術力で測る指標がないので、どうしても経歴書上の経験年数や拘束時間でしか値段を付けられないのです。受注する会社側はそれをいい事に低スキルの人間をいかに高い値段で現場に放り込むかという事しか考えなくなります。このような会社には何の技術も蓄積されません。また優秀な人間から先に会社を辞めていき、残るのは使えない社員ばかり、というのもこの手の会社の典型です。

このような会社に属している人は、時間を売りに出来る間に自分のスキルを上げる事だけに注力すべきでしょう。大したスキルも身に付かないまま年だけ取ってしまうと、もはや時間すら売りに出来ない時期がやって来ます。プログラマが使い捨てだと世間で言われているのは、ある程度の年齢になるとこのような人達が大勢出てくるのがその理由です。本当に優秀な人は使い捨てられるどころか、もっと自分を高く売れる環境に飛び出して行くのです。そうした人達は自分の技術力に正当な値段を付けて生きていける真の技術者だと思います。

未経験でもプログラマになれる?

プログラマとかSEという職種に興味を持っている人は意外に多いようです。そのような人達の割とポジティブなイメージとしては、時代の先端の職業、スマートで華やかな世界、高収入といったもの。一方プログラマという言葉にネガティブなイメージを持っている人も大勢います。新3K(キツい、厳しい、帰れない)、ヲタク、35歳定年説、などです。どちらも半分正解、半分間違いです。

結論から言うと「未経験でもプログラマになれるか」というと「なれます!
確実になれます。いわゆるソフトハウスとかシステム開発会社と呼ばれる企業にエンジニアとして就職すれば、あなたはプロのプログラマです。ただ当初想像していた「高収入で華やかな最先端の」プログラマかどうかは別として、という条件付きですが。

順番に検証します

・華やか×
・高収入(最近の厳しい雇用環境を聞くと恵まれてると思う)
・キツイ(常に勉強してないといけないのをキツいと感じる人には)
・帰れない(そんな時もままある)
・ヲタク(確かに生息率は高い)
・35歳定年×

その昔3Kという言葉がありました。「キツイ、汚い、危険」の頭文字を取って、大変なのに給料が割に合わない仕事の意味でネガティブに使われていました。主にガテン系の職種です。それに対して時代の先端を行くイメージに捉えられていたITの世界でも新3Kという話が言われ始めました。特に「帰れない」のはツライです。本当にいつ帰れるのかゴールが見えない事があります。
開発の現場は「華やか」とは正反対の、むさくるしい兄ちゃん達の溜まり場のようだったりします。プログラミングとは家内制手工業の世界なのです。ITという言葉に派手なイメージを持って業界に入ってきて、現実とのギャップに失望する人も時々います。

しかしそれ故、なり手が少ないのも事実です。本当は絶対数だけ見れば多いんでしょうが、なにぶん需要の方がはるかに上回っていて、完全に供給不足です。供給不足というのは我々にとっては都合の良い事ではあります。プログラマの供給不足は今後もますます進行していく事がはっきりしているので、未経験だろうが何だろうが、ちょっとでもプログラムをかじった人間なら重宝されてしまうという状況が生まれます。

ただそんな状況にあぐらをかいて、ロクな技術も無いのに一人前の技術者としていつまでも仕事が出来ると思い込むのは間違いです。同程度のスキルを持つ20歳と40歳を比べて、ユーザーがどちらを欲しがるかは言うまでもありません。技術者を抱えるシステム会社も同様です。40歳の技術者は20歳の技術者に比べて数倍から十数倍のスキルを持っていないと勝負できません。若い頃に身に付けた知識だけでは生き残れないのです。そこのところを勘違いして『自分の技術はもうこれで十分』とスキルアップの努力を止めてしまうから、35歳くらいになると淘汰されてしまうんです。

未経験の方は、高卒の18歳の新入社員と同じスタートラインに立っている事を認識して下さい。そして同じスキルならば年齢的に不利な立場にいる事を理解してください。その上で、そんな新卒に負けないようにスキルを身に付ける努力をして下さい。その先にあるのは、最初にあなたが想像していた華やかで高収入を得られるプログラマでしょう。

プログラマって不当に扱われてない?

私はよくシステムの開発を家を建てるのに例えて説明する事があります。

 設計の段階で図面をよく考えておくのが大事だよ。
 いったん付けちゃった窓はそう簡単に10cm右にずらすわけにはいかんよ。
 どうしてもやりたかったら壁を丸ごと引っぺがしてやり直しだけど、当然費用と納期は大幅アップですよ。

とか、まあ他にも色々と引き合いに出すんですが、その昔『設計をする建築家がSEで、のこぎりやかなづちを使って実際に家を作る大工がプログラマですよ』という例えをユーザーにした事があります。しかしこの例えは正しくない気がします。いや実際は正しいんでしょうが、意図を間違って受け取られやすいって事です。

この業界には 営業>SE>プログラマ というヒエラルキがあるようです。実際にシステム開発会社の多くで指揮系統がこのようになっています。新人君はまずプログラマ見習いから始まって、何年か修行したらSEとして設計を覚える。まあここまではいいでしょう。ベテランSEになってくると、もっぱらユーザーとの打ち合わせとプロジェクトのマネージメントだけが仕事で、自分でコードを書く機会は全く無くなります。この辺から様子がおかしくなってきます。
まずマネージメント能力はプログラミングスキルとは全く別物で、プログラマを何年経験しようが出来ない奴には出来ないものです。
次に開発の第一線から離れると技術に着いていけなくなるという問題があります。そもそも経験だけは長い割に大したスキルも無い人間の方が多いという話もありますが。
営業に至ってはスキルうんぬんどころの話ではありません。営業マンの問題は「システム会社の営業マン」で語っています。

で、そういう人間が指揮系統の上にいるという構造が、プロジェクトが火を吹く一番の原因だと私は考えています。
営業とかSEってそんなに偉いのか?どう考えたって実際に動くプログラムを書いてる(書ける)人間が一番すごいでしょ。

そもそも営業と開発サイドはどっちが上とかの話じゃなくて役割の違いです。営業が仕事取ってくるから開発者は開発が出来るし、開発してくれるエンジニアがいるから営業マンは営業が出来るって事なはずなのに、多くの会社では営業マンがエンジニアに対して仕事を与えてやってるっていうスタンスです。営業がユーザーに言われるままに無茶な予算と納期で仕事を取ってきて、あとはエンジニアに押し付けるだけではこっちはたまりません。

SEの場合は役割分担という事とはちょっと違うと思います。ロクにコードも書けないSEがユーザーと要件定義をやったりすると、無茶な仕様が出来上がって作る側が苦労する事になります。コードを書けない人間に設計は出来ない、というのが私の持論です。コードを書けないという事は極端な言い方をすれば、プログラムがどうやって動いているのか知らないという事です。それを知らずにユーザーの要望をハイハイと何でも安請け合いすると、やっぱり苦労するのは開発者です。

大工が建築家の先生の指示に従って家を建てる、という構図はSEとプログラマの間には当てはまらないだろうと思うんです。
設計はプログラマの中でも上級のプログラマの仕事だと思います。その場合に 設計者>コーディング担当者 の関係ができるのはもっともな事だと理解できるのですが、設計=SE,製造=プログラマ という分業があって、SEは設計しかやらない(できない)人という定義はおかしいんじゃないでしょうか。だから私は自分のことをプログラマですって言っています。

営業やSEは上級職でプログラマは兵隊としてこき使われるっていう扱いは不当だと思います。でも本当にそういう会社とか現場が多いんですよ。

プログラマというお仕事

デキるプログラマとは。
どうすれば優秀なプログラマになれるのか。
プログラマとして身を擦り減らして働く先に未来はあるのか。
こんな事をいつも考えつつ、日々お仕事をしております。

私の究極の願いは、本物のソフトウェア技術者が1人でも多く世の中に輩出される事です。そして偽者の技術者がこの業界から消え去る事です。それはユーザーの利益につながります。ユーザーの利益は、結果的に我々技術者の利益にもなるはずです。

今の(昔からそうなんだけど)ソフトウェア業界は残念ながら悲惨な状況です。なんと大勢の偽プログラマが、質の悪いソフトウェアをユーザーに押し付けていることか。料理人に例えると包丁もまともに使えない板前(もはや板前とは言えんが)が、一人前の技術者として給料を貰っています。その給料を払わされているのは結局はユーザーです。

こんな事がまかり通るソフトウェア業界に身を置く人間として、これをラッキーと考えるか、危機感を覚えるかは人それぞれでしょう。ラッキーと考える人間に未来は無い、と信じたいところです。だけどラッキーと考える人間にも明るい未来が待っていそうな予感もしてしまうあたりが、この業界のヤバいところです。