仕事しない上流SEとおさらばする方法
「SEがろくに設計もせずプログラマーに丸投げ、くそすぎる…」
「なんで仕事しねぇSEやPMの方が単価高いんだよ?納得いかねー」
上流工程のSEやPMがちゃんと仕事していないせいでプログラマーが苦労することって多いですよね。
そのくせSEの方が単価は高くて、納得がいきません。
とはいえ、そのからくりを理解すると見え方が変わります。より良い働き方が見えてきます。
そんなわけで、今回は「仕事しない上流SEとおさらばする方法」を紹介します。
Contents
SE(システムエンジニア)なんていう言葉は本来存在しない
ご存知の方も多いかと思いますが、SE(システムエンジニア)という言葉は和製英語です。
アメリカでは、プログラマー、ソフトウエアエンジニアという言葉はありますが、システムエンジニアという職業はありません。
海外旅行に行った時にバスで隣の席の人と雑談した際に、
「What is your job?(あなたの職業はなんですか?)」
と聞かれたので、
「I’m software engineer!(ソフトウェアエンジニアです)」
と答えたら、ちゃんと通じました。もしも、
「I’m system engineer, SE, SE, you know?(システムエンジニアです、SEだよ、SE、わかるよね?)」
と答えてたら
「hah? SE? I don’t know.(はぁ?SE?何それ)」
と言われたでしょう。
日本でコードを書かないSEをやってる人が外国人に職業を尋ねられたらなんて答えればいいんですかね。
コードを書いてないのだからプログラマーとは答えられないし、ソフトウェアエンジニアというほどソフトウエア技術に精通してないでしょうし。
SEって何やる仕事なんだ?
おおざっぱに言えば、
- SEの仕事 → 要件定義、設計
- PGの仕事 → プログラムの実装
とされています。
しかし、要件定義も設計も本来プログラマーの仕事です。ITの本場アメリカではこのような区分けはありません。
SEがPGの上級職っておかしいよね?
多くの会社がSEをPGの上位職としています。
もちろん、実際は上位ではなく、本来PGの仕事である要件定義と設計を無理やり分割しただけないんですけど、上位とされてる理由は単価が高いからです。これだけです。
SES(ソフトウェアエンジニアリングサービス)=エンジニア派遣をしている会社は、SEを派遣した方がPGを派遣するよりも顧客に高い単価を請求できます。
- PG一人を一か月派遣すると70万円
- SE一人を一か月派遣すると90万円
ってくらい単価に違いがあります。
SEの方が会社に売り上げをもたらすので、SEの方が上級職=お金を多く稼ぐ職となるわけです。つまりは、経済の論理なんです。
顧客は騙されている
本来プログラマーの仕事である要件定義と設計を分離しSEという職業を作り、要件定義と設計の方が実装よりも高度な仕事であると喧伝する(洗脳する)ことによって、SIerは顧客に、より多くのお金を請求できます。
心理学的にも、「人間は理由を述べられると納得しやすくなる」と言われています。
「要件定義と設計は実装よりも高度な仕事でそれを行えるSEはPGに比べて単価が高くなるんです」と理由を述べられたら顧客は納得してしまいやすいんです。
とはいえ、顧客も完全な被害者ではありません。顧客自身にも問題があるからです。
顧客側のITリテラシーが上がればSEは不要となる
要件定義って本来、顧客がするものです。
「こういう風に業務を行いたいので、そのためにこういう要件を満たしたシステムが必要となる」
要件定義とはこういうものです。顧客がすべきものです。
何をしたいかは顧客が一番よく分かっているのですから顧客自身が要件定義をするのが一番早いし自然です。
ですから、本来、要件定義を顧客自身がして、設計と実装は専門家であるプログラマーに発注すればいいんです。
しかし、情報システム部門のスタッフ(社内SE)であってもシステムの要件定義をするのに必要なITリテラシーが備わっていない人が多かったりします。
そのため、SIerのSEに要件定義をしてもらわなければならないんです。
このような背景から、最近は内製化を進める企業も増えています。
内製化が進めば、SEは職を失うことになります。
本来不要な職業であったわけですから当然と言えば当然です。職を失うと言ってもSIerのSEの求人が減って、社内SEの求人が増えるだけですから、職に困ることはないと思います。
プログラマーの地位が高い業界
さて、長い前置きになりましたが、言いたいことはこれなんです。
私は10年程業務システム開発のSIerでプログラマー・SEをやっていましたが、その後、Webサービスやスマホゲームの開発に転身した所、そこには全く異なる世界がありました。
ゲーム、Webサービス、スマホアプリ開発のチーム編成
これらの業界にSEというポジションはありません。
プログラマー、またはエンジニアと呼ばれます。
プロデューサー、ディレクター、デザイナー、運用担当者、そしてプログラマーというチーム構成なんです。
- プロデューサーはサービスのプロデュース(考案、推進)をする。
- ディレクターはプロジェクトのディレクション(監督)をする。
- デザイナーはサービスのデザインをする。
- プログラマーはサービスをプログラミングする
- 運用担当者はサービスの運用をする
皆、名前通りの仕事をしています。名が体を成しています。
システムエンジニアという名前に実体のない職業はありません。
これらの業界には、上下関係はありません。あるのは役割の違いだけです。
私が参加したスマホゲームのプロジェクトではプロデューサーがプログラマーの私の席に来て、「こういう企画があって、こういう機能を作ってほしいのでぜひお願いします」と頼みに来ました。
その後も「この部分、やっぱりこうしてほしいので、お願いできますか?初めから思いつければ良かったんですけど、すいませんね」と謝られました。
サービスの開発って作りながら試行錯誤していくものなので、本来謝る必要なんてないんですけど、企画のプロ意識とエンジニアへのリスペクトがあるからなんだと思います。
リスペクトは何もエンジニアへだけではなく、デザイナーや運用担当者に対しても同様です。
誰が偉いわけでもなく、役割・能力の違う人が集まって、一つの目的に向かって仕事をしている、そんな感じでした。
こういう職場って素敵ですよね。
自社サービス企業への転職は十分可能
Webサービスと業務系Webアプリケーションの利用技術は、ほぼ同じです。ですから、業務システムのJavaエンジニアがWebサービスのJavaエンジニアになるのはかんたんです。なんせ同じ技術ですから。
言語を変えるのもそんなに難しくありません。JavaエンジニアがPHPやRubyを修得するのはかんたんです。
これらは全てオブジェクト指向言語です。言語のパラダイムが同じですから、文法の違いは方言みたいなものです。
東京の人が大阪弁を覚えるのってそんなに大変ではないですよね、プログラミング言語も同じです。
ゲームやスマホアプリもサーバーサイドはWeb技術を使っているので基本は同じです。Javaでゲームやスマホアプリのサーバーサイドを実装してる会社はたくさんありますし、別の言語だとしても修得するのは難しくないのは前述したとおりです。
私の場合、Javaで業務システム開発を10年やった後にPHPやRubyをはじめましたが、かんたんに覚えられました。
一方、ゲームやスマホアプリのクライアントサイドは利用技術が異なりますが、これまた、それほど難しくありません。
ゲームのアルゴリズムって難しいイメージがありますが、最近はゲームエンジンの技術が発達して、ローレベルのアルゴリズムを知らなくてもかんたんに3Dゲームが作れます。
Unityというゲームエンジンがその代表的存在です。Unityはコードを一から書かなくてもIDE上で3Dオブジェクトを配置し、設定を加えることでゲームの土台が作れます。コードもC#で書けるのでC++よりもずっとかんたんに短いコードで実装できます。
私の場合、業務システム開発からWebサービス開発へ転身後、Unityを独学してスマホゲームエンジニアへと転職することができました。
なので、SIerから自社サービス企業に転職することは十分可能ですし、その経験者として、そうされることを強くおすすめします!