始めに
最近、本屋に行くと『生産性』と言う本が平積みされています。
コンピュータ業界での生産性とはなんでしょう?考えて見ましょう。
SE業界では人月(”にんげつ”と読みます)と言う特殊な単位が使われます。1人月は「1人が1日8時間、20日働いた時間」(20日とは土日を抜いた標準的な稼働日)と言う意味です。つまり一人160時間働く計算になります。
見積もり時に「200人月分の工数」と出た時に、スケジュールと照らし合わせ、「40人で5か月」とかと見積もりますね。これを山積みと言います。「じゃあ、200人いれば1ヶ月で終わるのか?」と行かないのがこの業界の面白いところでもあります。詳しく知りたい人はCOCOMO曲線(COCOMO法)で検索してみて下さい。適正な数値がわかります。
また、
転職した職場でExcelの集計仕事が毎日あったので、VBA(マクロ)を組んで自動化したら「俺たちの仕事を奪うな!」と怒られた。結果的にそのプログラムは使用中止になった。
なんて笑い話もあります。効率的なプログラムを開発すると、今までのんびりしていた人の既得権益(のような仕事)を奪ってしまうので、雇用を担保する為には必要な(無駄な)作業と言う事になってしまいます。
不思議な話がコンピューター業界ではまかり通ります。
人月=働いた時間の矛盾
例えば、
Aさん:8時間の仕事を4時間で終わらせて他の仕事もして8時間(定時)で帰ると残業代がつかない。
Bさん;8時間の仕事を6時間残業して14時間で終わらせて終電で帰る。残業代が6時間つく。
どう思います?残業代=働いた時間と考えるとそうなりますよね。でも仕事量で考えればAさんに4時間の残業(追加作業)代が出るべきだとは思いませんか?
上司から見れば「Aの奴、毎日定時で帰ってるな。それに比べてBは毎日終電近くまで残業している。よしよしBは頑張ってるな」なんて思ってしまうのかもしれません。この(無駄な頑張りによる)残業が査定に響いてくるのが日本企業の悪い所です。
これが「ラインから流れてくる刺身のパックにタンポポを乗せる仕事」なら、長く働いた方に多く給料が出てくるのなら納得できます。
でも、コンピューター業界は頭脳労働です。頭使って働いてるんです。この計算はおかしい!
と思いながら生活するんです。だから、だらけ(どうせ早く終わらせても次の仕事が降ってくるし少しサボろうと言う気持ち)も発生しますし、その矛盾の悩みに落ち込んで心を病んでしまう人もいます。(僕です)
ベンダーの言い訳
また、意見によっては月に開発できる能力を分けて、『上級PG』『普通PG』『新人PG』で単価を見積もりしているから。というのもあるでしょう。でもそれは、『新人PG』の安い単価を賄うために『上級PG』があるだけで、働いているプログラマーの給料はほとんど変わりません。
正直、ベンダーの見積もりテクニックの一つになりますが、当たり前に工数と金額を計算していくととても予算と見合わない数字(金額)になってしまいます。そこで、相手の予算の勘所(大抵、営業が探りを入れます)に応じてExcelの数字を変えるのです。計算式だらけになっている見積もり(山積み)Excelシートには単価を変えるだけで一瞬にして合計金額を出してくれるようになっています。
あとは「エンピツなめなめ」と言う魔法によって希望に見合う金額になるのです。理由?ーあなたは鉛筆を舐めるのに理由がありますか?ーでも、根拠は「過去の見積もり金額と比較して妥当」の文字で終了してしまうのです。プログラマーの金額は見積りの計算式の掛け算の数値にしか使われません。
また、これは見積りだけであり、実際にプログラマーの給料は劇的には変わりません。
「俺は上級PGだから月収100万円」「僕はまだ新人なので月収20万円」なんて違いはありません。変わって数万円です。見積もる側からすれば数十万円の差を平気でつけたりしますけれど。
なぜ、アメリカのプログラマーは高収入なのか?
「アメリカのプログラマーなんて凄い高収入だ!」「日本だと社畜扱いなのに!」と思われる人もいるかも知れません。確かに海外ではプログラマーに対して高額な報酬を支払います。でも、”仕事”を請負い、報酬を契約で決めます。事前に着手金として、報酬の10%程度を貰い、あとは出来高制です。できなければ訴えられ、シリコンバレーから追放です。
日本みたいに、企業がSIerに企業システム構築を委託して、何百人も集めてシステムを構築すると言うスタイルではありません。
米国ではその会社の『情報システム部門』がシステム開発を担うのが一般的で、米国からしてみれば「なぜ、自製(内製と言う)しないのだ?システム部門は何をやっている?」と言われてしまう訳です。
日本の会社にとって情報システム部門は利益を生まないコストセンターとされています。基本的には現状システムの運用監視。実はこれが実にぬるま湯である程度給料が高いので一流企業の情報システム部門に滑り込むのがゴールなんて考えている人もいます。エンジニアとしてはすでに思考停止です。また、昔はちゃんと人数を囲っていましたが、仕事が暇になると「外部で仕事取って稼いでこい!」となり、アウトソーシングと言う名のリストラに合い子会社化されてしまいました。
海外のエンジニアは自分(もしくは少数先鋭チーム)での仕事に誇りを持っています。日本のように、上流SEが書いた仕様書をプログラムしてテストして、結果をExcelに貼るような仕事の仕方はしません。
そこに人月の概念は存在しません。能力だけが報酬を得られます。
ちなみに、仕様書に従ってプログラムを書くだけの仕事しかできない人は日本(もしくはインド、ベトナムなどの発展国)でしか仕事ができません。でも、安心してください。クビになる事はないでしょう。
米国だと成果を出せないと即クビですから。
まぁ、自分のプログラム技術に自信がないのなら、転職するか仕事と割り切って定時に帰れるように自分の技術を磨きましょうよ、と。
日本人プログラマーが高収入になるためには?
とここまででは希望がないので、日本のプログラマがバッチリ稼げる方法を教えておきます。
1.自分で会社作っちゃう。
給料が少ないのはお客に提示する金額から、色々と中抜きされてしまうからです。お客に単価150万円で提示しても実際に振り込まれるのは手取り25万円くらいでしょう。なら、自分で会社を作るのです。自分が下請け会社になるのです。ただこれは、大量のコネが必要となってきます。親会社への信頼であったり一緒に会社を立ち上げてくれる優秀なプログラマーがいた場合です。これで、一気に中抜きは少なくなりますし、発注元も安い単価で雇うことができます。
但し、会社の規模は小さくなってしまうので、誰かが失敗したら、その穴埋めをする必要があります。社長自身が火消しをしている例も多いです。
なお、コンサルティング会社だったらある程度年棒が増えてくると、「個人事業主になってくれ」と言われる事があります。これはフリー(1人)でやっている場合ですが、同じようにプロパーでは管理費用が高くなってしまうため、委任で雇うと言う条件をつけて発注額を安くします。まぁ、管理費用が掛からない分、年収は変わらないどころか高くなります。
2.革新的なサービスを作る
これはアイデア勝負ですが、Web系のエンジニアをしている人は誰もが考えつかなかったような(そして、誰もが便利だと思うような)サービスを開発しましょう。
FaceBookだって、Twitterだってそう言うのから始まったサービスです。Youtubeもそうですね。人気が出すぎるとサーバの維持費が大変なことになりますが、これには大抵スポンサーが付きます。簡単に言えば、Googleとかがそのサービスを買い取ってくれるのです。そしてその部門の最高責任者になります。一気にゴールですね。あとは税金対策でも考えておけば良いし、余った時間で新しいサービスを考えても良いですね。
海外のプログラマーが優れている所はそう言うシステムを早急にサービスイン出来るからです。今の時代ノートパソコンとネットの環境があればどこでも仕事ができます。勿論、サービスインするまでは無給です。残業?出来るまで働け、です。残業代なんて出ません。でも、それに見合った対価が送られます。
ハンバーガーを片手にコークで流し込みゲップでみんなにセイハローしているプログラマが勝つ時代なのですよ。
3.人月が関係ない所まで役職をあげる
僕は一番おすすめしませんが、一番確実な方法です。要は部長とか事業部長になっちゃえばいいんです。見積もり?構築?そんなのは部下がやってくれます。リスクを見て、ジャッジするだけ。あとは週末のゴルフの為に平日の会食のお酒を少々減らすくらいでしょうか?日本の会社の場合、ここがゴールです。ただ、技術力は著しく乏しくなるので、エンジニアではありませんね。
最後に
最後に、エンジニアである僕から一言添えて終わりにしたいと思います。
無い物は作れ。西部時代からの鉄則だ。