paiza開発日誌

IT/Webエンジニア向け総合求人・学習サービス「paiza」(https://paiza.jp ギノ株式会社)の開発者が開発の事、プログラミングネタ、ITエンジニアの転職などについて書いています。

ITエンジニアを目指す就活生は知らないとマズい、自社開発と受託開発の違い

f:id:paiza:20161205140334j:plain
Photo by blupics
f:id:paiza:20140916135428p:plainこんにちは、谷口です。

ITエンジニアを目指す就活生の皆さん、応募企業はどのような基準で選んでいますか?「プログラミングがしたいから、エンジニアを募集している企業ならどこでもいいや」という感じで、あまり業務について調べないまま応募を決めていませんか?

実は、エンジニアを募集している企業に入社さえできれば、ずっとプログラミングをしていられるというわけではありません。むしろプログラミングをするのは最初の1年だけで、その後は設計書作りや、スケジュールや人員の管理をする仕事に回されてしまうという企業も多くあるのです。

一言で「新卒エンジニアを募集」している企業と言っても、業種によって業務内容は全く異なります。これを知らずに適当に企業を選んでしまうと、入社後に「思ってたのと違った……」「仕事でプログラミングをする場面がなくなってしまった……」という悲劇が生まれてしまうのです。

今回はエンジニアを募集している主な業種ごとに、業務と求められるスキルの違いについてご紹介します。ご自分がどんなエンジニアになりたいか、どんな企業でどんな仕事をしたいのか考える参考になればと思います。

■どんな企業がエンジニアを募集しているのか

f:id:paiza:20161205140435j:plain
Photo by francis mckee
まずITエンジニアを募集している企業ですが、大きく分けて自社開発をしている企業と、受託開発(元請け・下請け)をしている企業に分かれます。

もっと細かく分けると他にも家電等の組み込み系や、その企業に特化したシステムを社内で内製するエンジニアなど多岐に渡るのですが、今回はニッチな部分はちょっと置いといて、新卒求人が多い企業の主流として、自社開発・受託開発の元請け・受託開発の下請けという分類でご説明していきたいと思います。

◆それぞれの業務内容と利点・欠点

◇自社開発系企業

自社でWebサービスやサイト、アプリ、ゲームやパッケージソフト等を開発・運営している企業です。例を挙げると検索エンジンサイトやネット通販を行うECサイトのような独自のWebサービスを運営しているYahoo!やAmazonクックパッド等がこれに当たります。

上記は大手企業ですが、自社開発を手掛ける企業にはまだ少人数のスタートアップ企業も多くあり、新しい企業がひっきりなしに起ち上げられています。

多くの自社開発企業では即戦力が求められ、採用も中途がメインでしたが、最近ではある程度のプログラミングスキルがあれば新卒採用もするという企業が増えてきたため、求人は増加傾向にあります。

自社開発では常に新しい技術の検討や導入が必要とされるため、日々自分のスキルを研さんしていく必要があります。若い世代のエンジニアが活躍している業界であり、早いうちから大きな権限を持って仕事をすることもできます。

その一方で、これまでになかった新しいサービスを企画・制作・運営し、ビジネスとして軌道に乗せるというのはかなり大変なことです。頑張って作ったのに思いのほかお金にならない、競合に似たようなサービスをリリースされてしまった……などといったこともありますし、軌道に乗せられなかったサービスが終了になってしまった……ということも珍しくありません。ですので、着実に安定した企業で働きたいという人にはあまり向かない環境かもしれません。

ただ、技術があってキャリアビジョンもしっかりしている人なら転職や起業も叶いやすい業界であると言えます。(ちなみにpaizaを運営している弊社も自社開発に当たります)

利点:比較的自由な社風の企業が多い・新しい技術にチャレンジできる・周りも技術力の高い人が多い
欠点:安定性に欠ける・小規模のスタートアップだと会社の制度が整っていない場合もある

◇受託開発の元請け企業

様々なシステム作りに関する業務を、顧客から依頼を受けて行っているのが受託開発企業です。

例えば、銀行ではATMに関するシステム、役所では住民からの各種届け出を管理するシステムなどが必要です。そこで、銀行や役所からの「こういうシステムを作ってください」という注文を受けて、その通りに作るのが受託開発企業の仕事です。

この例で言えば、銀行や役所などの顧客から直接注文を受けるのが元請け企業元請けの要請によって必要なシステムをさらに細かくパーツのように分解し、パーツごとに実際のプログラミングを行うのが下請け企業となります。

日本では、前述のような金融系や官公庁・流通を支えるようなシステムは規模も金額も大きく、IT企業と言うと、この受託開発企業がまだまだ主流となっています。

受託では顧客と「この日までにいくらでこのシステムを作ってください」という契約を交わした上で開発業務に取り掛かるため、システムを作ることさえできればお金は入ってきます。また、元請けは大企業が多く、経営も安定していることが多いです。

元請け企業のエンジニアは、主に大規模開発において開発者全体をまとめるプロジェクトマネージャーとしての役割を務めます。運用・保守における仕事も多く、社員は入社後大体1~2年ほどでプログラミングをするよりもマネージャー側の管理業務を任されるようになります。

設計をすること、スケジュールや人員を管理することが得意な人、安定した企業で手堅く収入を得ていきたい人には向いているかもしれませんが、自分でプログラミングをし続けたい人、仕事で新しい技術を使いたい人にはあまり向いていないと思われます。

利点:大企業で経営が安定している企業や社内制度や昇給制度等がしっかりしている企業が多い
欠点:新しい技術を試したりすることは難しい、数年でプログラミングする必要がなくなる

◆受託開発の下請け企業

上記の元請けから業務を受注して、開発を行うのが下請け企業です。構造がややこしく思えるかもしれませんが、大規模な開発案件は、発注元から大手元請け企業が受注をし、元請けが分割してさらに二次請け、三次請けへ発注する……という行程をとっているものがほとんどです。

即戦力を求める自社開発や大手の元請け企業に比べ、比較的入社がしやすく、プログラミング経験がなくても長期の研修で習得させてくれる企業が多くあります。

ただ、中小の下請け企業では元請けからの受注で経営が成り立っている企業も多いのですが、二次請け、三次請け……と下請けになればなるほど労働対価の中抜きが発生し、末端の技術者は小額しか受け取れないということもよくあります。

下請けの場合、業務の大変さは投入されるプロジェクトによると言えます。スケジュールが過密でなく、安定したプロジェクトに配置されればそこまで大変なことにはなりませんが、スケジュールの厳しい業務に入ると相当な激務に陥ってしまうこともあるので、全てはプロジェクト次第といったところです。

また、大規模プロジェクトの末端として配置されると、開発タスクはシステムや機能の全容を知らなくても作れるようなものになってしまうことが多くあります。作るパーツ自体は難しくないかもしれませんが、その分仕事を通して技術力を身につけられることはあまりないでしょう。

加えて下請けの場合は、元請け企業や顧客企業で常駐して開発をしなければならない場合が非常に多くあります。ここで先輩達とチームで常駐する場合はまだよいのですが、新人のうちから一人で常駐をさせられると、仕事について聞ける人がいなかったりするので、一人で抱え込んでしまって大変なことになりがちです。

さらに言うと、前述の通り労働対価の中抜きもあるため、正直言って給与もなかなか上がらない傾向にあります。その割に、下請けに振られる仕事はなかなかなくならないので、何となく辞めずに居続けてしまったという人も多くいます。

利点:研修を行っている企業が多く、プログラミング経験がなくても入社しやすい
欠点:新しい技術を試したりすることは難しい、スケジュールが遅れたときのしわ寄せを受けることが多い

■それぞれの企業で求められるスキルの違い

f:id:paiza:20161205140543j:plain
Photo by Ole Houen
自社サービス開発企業では、以下のようなスキルが求められます。

・プログラミングスキルと技術を追い続ける感度
・機能が追加になったらすぐ公開みたいなスピード感についていける
・ユーザーについてなどの調査、分析、企画スキル

Webサービスの場合は、受託開発のように顧客との間で明確な要求を詰めてから開発に取り掛かるということはありません。企業にもよりますが、開発のプロセスはニーズの仮説を立て、それを検証するための最低限のシステムを作ってリリースし、ユーザーの反応を見てまた開発に取り入れるというような形式となります。

特にスタートアップ企業であれば、大企業で一ヶ月単位で進めるような業務を1~2日でとりあえず作ってしまって公開する、公開してから徐々にカスタマイズの手を入れていく……ということも珍しくありません。

自社サービスの方は、計画に基づいて着実に業務を進行していくよりも、変化に対応し続けること、またよりよいサービスを開発していくために常に最新技術を追えるような感度の高さが重要になってきます。IT技術が好きでそれが苦にならない人ならよいのですが、流行り廃りが激しいものを追い続けるのは厳しい面があります。

一方、受託開発企業では下記のようなスキルが必要とされます。

・スケジュールを作成・管理し、納期までに作りきる
・プロジェクトに携わる人員をまとめて管理できる
・設計ができる

受託における開発手法は、金融や保険、役所関連等の業務的に革新が起こりにくい領域に向いています。長期的な計画を立てることが可能で、着実にシステムを構築していくことが強みとなるからです。

決められた環境で開発することが多いので、あまり最新技術に関するアンテナは必要なく、それよりも期日と予算範囲を厳守しながら、システムを作り上げて納品する管理能力が必要とされます。プロジェクトの人員やスケジュールを管理するスキルというのは、小規模な自社開発企業よりも身につけやすいでしょう。

■まとめ

同じエンジニアという職業でも、業務の進め方はこのように異なっています。

どちらがよい・悪いということではなく、企業を選ぶ前・応募する前に、業務内容や特徴をよく調べておくことができていれば、入社後に「思ってたのと違う」「こんなはずじゃなかった」といったミスマッチを起こりにくくすることができます

また、お勧めなのが一度インターンに参加して業務内容や雰囲気を知っておくと、企業選びの際に役立つと思います。

私自身も転職経験者ですので、「ミスマッチが発生したときは転職を視野に入れるとよい」「仕事で悩む人がいたら転職を勧めたい」とは思います。しかし転職活動というのは決して楽なものではありませんし、転職さえすれば前職と比べて必ず幸せになれるというわけでもありません。

最初から自分に合った企業に入社できて、ずっと転職を考えることなく幸せに働き続けることができればそれにこしたことはないのです。

前述もしましたが、エンジニアを目指す学生の方の中には「プログラミングできたらどこでもいい」「就活が嫌なのであまり準備に時間を割きたくない」といった感じで、よく調べないまま企業を選んでしまう方が多いのが現状です。

せっかく入社した企業でミスマッチが起こってしまってはもったいないので、自分のやりたいことや特性と、企業の開発手法や業務内容に大幅がズレがないかということはよく調べてから選んだ方が確実だと思います。

■学生向け「ITエンジニア就活特化」プログラミング学習コース好評公開中

paiza新卒の学習コンテンツ「paizaラーニング就活パック」が、先日公開となりました。

paizaラーニング就活パック」は、企業からの「こんな開発スキル・知識を身につけている学生がほしい」という要望と、ITエンジニア志望の学生からの「就活を上手に進めるためにはどうしたらいいのか」という悩みに応えるための特別コースです。

単純なプログラミングスキルだけでなく、業界・キャリアに関する知識やWeb周辺の知識の習得、選考用ポートフォリオとなるサービス作成までを行える就職特化型の講座内容になっております。

paiza.jp

youtu.be



この度paizaは、ITエンジニアを目指す学生の皆さんに向けてpaiza新卒をオープンいたしました。

paiza新卒は、大手企業からベンチャー企業まで、規定のプログラミングスキルがあればES選考なしで応募ができる就職活動支援サービスです。また、Skype面接OKの企業も多数掲載しておりますので、自宅にいながら面接を受けることも可能です。「東京の企業に就職したいけど、就活は交通費がかかりすぎる」「研究で忙しいのに、就活は移動に時間がかかりすぎる」というITエンジニアを目指す皆様もぜひご利用ください!
paiza.jp


paizaではITエンジニアとしてのスキルレベル測定(9言語に対応)や、プログラミング問題による学習コンテンツ(paiza Learning)を提供(こちらは21言語に対応)しています。テストの結果によりS,A,B,C,D,Eの6段階でランクが分かります。自分のプログラミングスキルを客観的に知りたいという方は是非チャレンジしてみてください。

http://paiza.jp


プログラミング入門講座|paizaラーニング

PHP入門編Ruby入門編Python入門編Java入門編JavaScript入門編C言語入門編C#入門編アルゴリズム入門編