プログラマというお仕事

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

技術

システム会社の営業マン

例えば車を買うとき、普通はディーラーの営業マンから買いますよね。メーカーの開発部門の技術者から直接買うなんて事はありません。
興味を持った車について、あれやこれやと尋ねたり説明してもらったりするのは営業マンとの間で行われるわけです。
つまり車の営業マンは車の事について、とりわけ自社の車の機能や性能について熟知している必要があります。車のプロでなくてはいけません。
そのプロであるはずの営業マンに、その店で扱ってる車の事について何か質問したら『それは私にはちょっとわかりません。後日技術者を呼んで来て回答します。』なんて言われたら、オイオイこいつ大丈夫かよ、って思うのは当たり前の反応ですよね。
当たり前なんですよ。営業はその世界のプロとして顧客と一番身近に接するのが仕事なんだから。
もう一度言います。当たり前なんですよ。システム業界以外の営業マンなら

もちろん、みんながそうだとは言いません。技術に明るい営業だっていっぱいいます。けどそれ以上に、システムや技術について一切知らない営業っていうのが、この業界には生息しています。本当にド素人です。ひどい場合にはPCが使えなかったりします。ワードやエクセルの使い方を知らなかったり、メールの送受信が出来なかったりするんです。まあそこまでひどいのは滅多にいませんけど。(でも確実にいます。)

別にコードを書けとは言いません。けど顧客との会話でちょっとでもコンピュータ用語が出てきたら『それは持ち帰って技術者に・・・』ってのはどうなんだろうか。もしくは相手にそう言うのがはばかられたのか、顧客の喋った内容がまるで外国語のようにしか聞こえてないくせに、わかった振りして受注して来ちゃって、そんなすげースキル持った奴なんかウチにいねーよって事になって、あせりまくってたって話も聞いた事あります。

彼らは自分の仕事について『自分は人を売っている』って、悪びれもせず普通に言います。自分の会社が売っているのは技術力だって意識がそもそもないんです。だから勉強して技術的な知識を身に付けようなんて考えがあるはずもないです。

業界に本当に必要なのは技術のわかる営業マンではなくて、営業もできる技術者なんじゃないかって思うんですよね。ただの御用聞きしか出来ない人間はマジいらないって思うのは私だけ?

技術者の値段

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

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

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

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

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

デキるプログラマとは?

ブログネタ
「できるヤツ」ってどんな人? に参加中!

そこそこ経験も積んで、なんとか一人前にプログラムも書けるようになってきた。そんな3年から5年程度のキャリアのプログラマが実は一番難しかったりします。何が難しいって、その後の育て方です。
このくらいの時期にひとつターニングポイントが来るような気がします。

まずは自身過剰タイプ。自分はもう一人前だ。どんなプログラムだって自分だけの力で書けるし、もう人から教わる事なんて大して無いよ。むしろこれからは俺が新人君を指導してやるぜ。
言うまでもなく、こういう人はこの時点で成長が止まります。今後新しい技術をキャッチアップしていくのは難しいでしょう。プライドが高く生意気な性格なので周りとのつまらないトラブルも多いですね。

しかし彼の場合、モチベーションという意味では決して低いわけではないんです。
もっとタチ悪いのは、やる気の無い自身過剰タイプです。
自分はもう一人前だ。どんなプログラムだって自分だけの力で書けるよ。ここまでは前者の彼と同じなんですが。
だからもうあんまり新しい事とか覚えるのもしんどいし、普通に仕事してれば給料貰えるわけだし。勉強とかやる必要なくない? あ〜あ、他にもっと給料高くて楽な仕事ないかなぁ...

最悪なのはやる気の無い言い訳タイプ
日々勉強して新しい技術を身に付けようという意識が無いのは前者と同じ。さらにはそれを他人のせいにして自分を正当化しようとするところが、怠け者なのを自認している前者の彼よりタチ悪いです。
私「VBしかできないんじゃこの先駄目でしょ。そろそろ他の言語も勉強してみたら?」
彼「でも仕事が来なきゃなかなか勉強できませんよ。ならそういう仕事ください。」
私「仕事が来てから勉強始めたんじゃ遅いでしょ。それじゃひとまず課題でも出すからやってみたら。」
また別の時
彼「給料いつになったら上がるんですか。」
私「君のスキルがどれだけあって、それが会社にどのくらい貢献できてるかをアピールしてくれれば上がるよ。」
彼「そんなのまず会社が評価してくれるべきじゃないですか!」
私「結果を出せてるなら評価しますけどね。ところで半年前のあの課題、どんな具合?」
彼「・・・(しばし沈黙)・・・やっぱ仕事じゃないと思うとやる気起きませんよねえ。やっても残業代とか出ないんでしょ!?」
こういう人は、こっちが良かれと思って待遇や勤務環境などを考えてあげても、それに甘えるだけで生産性アップの方向には向かいません。加えて自分の権利や都合はキッチリ主張してきます。

自分にある程度自信を持ちつつも常に謙虚である。上には上がいる事をちゃんと知っている。
新しい知識を吸収する事に貪欲だ。盗める人間からは何でも盗んでやると思っている。
日々努力し勉強している。というか本人には努力という意識もない場合が多い。
あれこれ主張や言い訳しない。給料増やせと言う前に結果を出して上司を納得させる。
俺に任せときゃ間違いない、とは言わない。彼に任せれば間違いないね、と他人に言わせる。
あとは黙ってても勝手に給料上がってる。

こういう人がいいプログラマになると思うんですが、どうでしょう。

偽装請負? 二重派遣? で?

で、何が問題なの?

イヤ、もちろん法律で駄目だと決められてるんでしょう。労働者を本人の意思に反して不当に扱っちゃイカンと。確かにここ数年、悪質なケースが話題になりました。けしからんという感情を持つのはわかります。私自身も『技術者の値段』で、このような二重派遣を生業とする名ばかりのシステム開発会社を批判的に書きました。ただソフトウェア業界ではこのような形態でプログラマが現場で仕事するのは、もう何十年も前から普通に行われていた事だったりします。だから「え!?それっていけない事だったの?」というのが、大企業も含めてこの業界にいる大半の人達の正直な感想だったと思います。

わざと挑発的な書き出しにしてしまいました。もちろん駄目なもんは駄目というのはわかります。しかし私があえて誤解を恐れずに言いたいのは「法に違反している事自体が問題なのか」という点です。「何も問題ないよね?」と言いたいのではなく「問題の根本はどこですか?」と問いたいのです。

例えば偽装請負ですが、派遣の許可を持っている会社なら何も問題ないですか?それなら会社が何割マージン取ろうが、残業時間が何百時間だろうが、派遣先の社員からいわれの無い不当な扱いを受けようが構いませんか?
もしくは国会で法案が通って明日からは違法でなくなれば、今文句を言ってる人たちは、それなら無問題だと黙るんですか?

私が問題視しているのは技術者個々人の労働環境です。無茶なスケジュールを押し付けられ、徹夜や休日出勤を当然のように強制され、リリース間際の仕様変更や自分に非の無い不具合などの為に管理職連中やユーザーから責められるような事態は、会社間の契約が法に触れていたから起こった事なのでしょうか。

システム開発は家作りに似ています。私がよく言っている例え話です。大手ハウスメーカーは顧客の要望に沿って設計図面を書きます。それを元に下請けの大工や左官屋や電気工事屋に発注をして、実際に建築を始めます。この段階では大手メーカーは各下請けの仕事の進捗を管理して、顧客にその状況を伝え、問題や遅れがないか確認するのが主な仕事です。
ここで顧客であるあなたが建物の進み具合を見学しに建築現場に行ってみたら、若い大工見習いの兄ちゃんが、かったるそうにチンタラ仕事している姿を目にしました。オイオイもっと真面目にやってくれよ、と一言注意すると、その兄ちゃんは『俺は○○工務店に雇われてんだからお前に指図される筋合いはねぇ』と。そこであなたが取るべき態度は?

顧客であるあなたは、彼に対して何の文句も言う権利は無い、というのが法律です。

どんな大企業でも大きな案件の全てを常に自社の技術者だけでまかなうのは不可能です。自然と他社の技術者の応援を頼まざるを得なくなります。そのようなニーズに答える為に中小システム会社の存在価値があります。さらにその下請け一社だけでまかなえなければ協力会社にも応援を要請する事になります。そのようにして集められた技術者達は一致団結して顧客の要望に答えるべく、より良いシステムを開発する為に仕事をします。そのようなチームでは皆が仲間意識を持って同じ目標に向けて働くし、誰がどこの会社からどういう契約でやって来たかなんてどうでもいい事です。

私も業界に入ったばかりの頃は色々な現場に派遣させられました。その当時の私の頭にあったのは、いかにして自分のスキルを上げて一人前のプログラマとして成長するかという一点だけでした。会社の規模やネームバリュー、ましてや契約形態がどうのこうのなんて、現場にいる私には関係ありません。ただの素人に勉強させてくれるどころか給料まで貰えるなんて、感謝こそすれ、文句なんて出てくるはずもないです。

今となっては立場上、常駐という形態の仕事は受けたくても受けられなくなってしまいました。もう十数年も受託の仕事しかしていません。ある意味ではスケジュールや人材のアサインなどこちらの裁量で自由にできるのは楽なのですが、何と言うか刺激がないんですよね。色々な会社からやって来たプログラマ同士が切磋琢磨して開発に携わる、あの現場の緊張感というか。初めて出会う技術者の、例えばエディタを使いこなす鮮やかな手さばきに『おお〜っ』と感動するあの新鮮さを体験する機会が全く無くなってしまいました。短期間でいいから開発現場に常駐して働きたいなぁ、と懐かしく思う事があります。

違法な契約だと祭り上げて告発や問題提起をする事がいけないと言っているのではありません。というか法的には正しい事なんでしょう。そこを責めたいのではありません。むしろそんなビジネスモデルだけしかない、名ばかりのシステム開発会社はこの世から無くなって欲しいとさえ願っています。そうではなく、自分がまともな職場環境に付けないのは自分の能力不足ではなく違法な事をしてる会社のせいなんだと訴えておいて、そのくせ、じゃああなたはどんな能力を持ち合わせているのですか、という問いに対して主張できない人達の甘えの構造はどうなんだろう?という点に疑問を感じるのです。

JAVAってそんなにいい?

作ろうとしているシステムに一番いい言語は何かを決めるのはSEと呼ばれる人の仕事のひとつです。顧客の要件を分析し、開発工数やランニングコストなどを総合的に判断して最適なプラットフォームを決定します。が、そのSEがコードすら書けないようなダメ人間だと別の基準でプラットフォームを決めてしまい、その後の開発工程でやっかいな事になるケースが多々あります。別の基準とは『最近流行ってるみたいだから』という、その辺のコギャルと同程度の思考回路です。

最近は何にでもJAVAを使いたがるシステムを良く目にします。スタンドアロンで特定の端末でしか使用しない小さなプログラムなのにEXEにしないでJAVAアプレット。セキュリティが問われる情報を扱うでもなく、IT専門の部署がある訳でもないし、とにかく安価に拠点間を結んで情報共有したいというだけのニーズなのに、自前でサーバを立ててJAVAサーブレット。こんなソリューションを提案するSEの頭の中にあるのは『JAVAなら安心安全で生産性も高くて、なんだか知らんけど立派なシステムなんでしょ?』みたいな、どこで聞いたかわからないあやふやな知識だけです。
JAVAならみんな使ってるから、JAVAなら有名だから、JAVAならオブジェクト指向だから・・・だってJAVAなんだから・・・。

誤解の無いように言っておくと、私自身はJAVAは割と好きな言語なんですよ。特にオブジェクト指向は正しく使えばとても強力な考え方だと思います。しかし上記のようなヘボいシステムでは、まず間違いなくオブジェクト指向とは程遠いコードで書かれています。もっとはっきり言います。世の中の自称JAVAプログラマの95%はオブジェクト指向を知りません。かなり過激な意見だと思うでしょうが、私の経験上では決して大げさではなく実感です。

そのシステム、PHPとMySQLで良くない?
こう言うと訳知り顔の技術者(上記のヘボSEを含む)から一斉攻撃に合います。それを承知で、そんな攻撃を技術的に論破できるだけのスキルを持ち合わせた上であえて勇気を持って主張できる人って本物の技術者だと思います。
技術者はユーザーの満足の為にシステムを開発するべきです。ユーザーが良しとするならそれでいいんです。自身の知的欲求や自己満足の為であってはなりません。そういうのは趣味で好きなだけやって下さい。我々はプロなんですから。