こんにちは。
この記事を読んでいるあなたは、

プログラミングを勉強することで就職できるの?
そして、就職に有利になるの?
これからプログラマーとして就職/転職しようとしているので、そのあたりのリアルを知りたい!
というような悩みを抱えていたり、思っているのではないでしょうか?
この記事を読んで分かること
この記事を読んでいただければ、プログラミングを勉強することにより、
有利にならないケース
この2つをそれぞれ説明します。
そして、「有利にならないケース」に当てはまった場合、ではどうやったらプログラマーやエンジニアとして就職や転職できるのか?という攻略法も説明します。
なので、この記事を読んでいただくことで、「プログラマーやエンジニアとしての出口戦略」を持つことができます。
言い換えると、闇雲にプログラミングの勉強をするのではなく、計画や作戦を持った上で勉強を進めることができるようになります。
この記事の信頼性
僕自身が企業でプログラマーとして働いていたので、その現場のリアルを知っています。
また、UIデザイナーやプロジェクトマネージャーとして、プログラマーを周りから見てきた経験、そして面接官としていろいろな人を見てきました。
ですので、どのような人が会社に受け入れられやすいのか?という情報を提供することができます。
結論
早速ですが、結論です。
まずどのようなケースでプログラミングが有利になるのか?ならないのか?については、
・有利にならないケース: スキルがイマイチである場合。
という、ごく当たり前の内容になります。
プログラマーやエンジニアとして働く上で必要な様々なスキルの中で、「プログラミング」という断面だけで捉えたら、こういう結論になります。
ただ、プログラマーとして働く上では、もちろんプログラミングのスキルは最重要項目の1つですが、それが全てではありません。
なので、仮にこれを読んでいるあなたのプログラミングの経験が浅かったりしても、
・他にどのようなスキルを伸ばせばよいのか?
といった、より実践的な内容に関しても踏み込んで、お伝えしていこうと思います。
この記事の内容
この記事の流れは、こんな感じになっています。
・プログラミングのスキルや知識が有利になるケース、有利にならないケース
・有利にならないケースに、どうしたらプログラマーとして就職できるのか?
順に説明していきます。
プログラマーとして現場で求められるスキル

まず、プログラマーとして現場で必要なスキルが何か?からご説明します。
プログラマーは一日中プログラミングをしていると思われがちですが、実際はそんなことはありません。
プログラミングも含め、必要とされるスキルは、
・2: ソフトウェアの設計をする
・3: デバッグする
・4: 内容に関して議論をする
・5: レポートする
というような業務をやっています。それぞれ、少しだけ詳細を説明します。
1: プログラミングをする
この部分に関しては、これを読んでいるあなたはご存知の内容かと思います。
そのプロジェクトで必要となるプログラミング言語を使い、プログラムを書く作業そのもの、になります。
2: ソフトウェアの設計をする
今後の拡張性や、企画担当者が考える要件などを考慮して、ソフトウェアの作り方を考える作業です。
一般的には「コンポーネント図」や「クラス図」と言われるような図を書いて、全体像を整理、作り方の大枠を決める作業がメインとなります。
のソフトウェアの設計もかなりのスキルが必要とされます。
本当に出来る人が行った設計は、「美しい・・・」と思ってしまうほど、エレガントな設計だったりします。
3: デバッグする
一度作ったプログラミングに不具合が起こったときに、どこが問題かを探して、その部分を修正する作業です。
自分が書いたソースコードだけであれば割と解決はしやすいのですが、他の人が書いたソースコードに問題があることも多く、このデバッグ作業も非常にスキルが求められる、難しい作業です。
大きなシステムやプロジェクトの後半になってくると、1日中作業をして、修正をしたのはたった1行・・・なんてことも普通にあります。
4: 内容に関して議論をする

議論をする相手も多岐にわたります。
プログラマー同士
例えばプログラマー同士で、システムのつなぎ方や役割分担に関して議論、方向性を決めることがあります。
基本的にソフトウェアプロジェクトは複数人数で、同時並行で進めることになります。なので、そのつなぎの部分に関しては関連する人との調整が必要となります。
デザイナーと
また、画面のデザインをしているデザイナーと議論をし、画面の構成に関して議論を行うこともあります。
UI(見た目)に関連する部分では、デザイナーが書いた画面レイアウトやアイコンを組み込むことも多くなるためデザインの意図を汲み取って進める必要が出てきます。
デザイナーはエンジニアやプログラマーと全く違う思想を持っていることも多く、違う思想の人とコミュニケーションをしたり落とし所を探る難しさがあります。
5: レポートする
マネジメント層やプロジェクトマネージャーに対して、現状や今抱えている問題点をレポートする作業です。
ソフトウェアプロジェクトでは、エンジニアだけで完結することはなく、マネジメント層やプロジェクトマネージャーに現状を共有することもあります。
このとき、彼らは
・プロジェクトがうまくいっていない箇所や懸念のある箇所はどこか?
・そこに対して、どのような対策をすればいいのか?(人を追加するのか?プロジェクトのスケジュールを伸ばすのか?)
ということを知りたいと考えています。ですので、そういった関係者には、端的に状況を説明するスキルが必要となります。
上記1〜5で必要となるスキル
ここで挙げた1, 2, 3に関しては、プログラミングの一貫として行われることもあります。
一方、4や5になると、少しずつプログラミングとは違うスキルの、
・プロジェクトの流れを把握しつつ、コミュニケーションするスキル
というようなものも必要とされます。
ちなみに僕の感触では、1〜5はそれぞれこんな感じで上達していきます。

ある程度プログラミングの経験を持っている人であれば少しずつできるようになる人が多いイメージです。
1は一人でも勉強できる範囲が多いこと、3は書いたプログラムを修正する必要性に迫られるので、自然とできるようになっていくことが多いです。

複数人が携わるようなプロジェクトだと、プログラミングの前に、この「設計」を実施します。
これは、実際に現場で生きた教材を使いつつ、少しずつ上達していくことになります。
ちなみにこの設計スキルも非常に重要なのですが、このスキルはなかなか一人では学べないため、これを学びたい場合は早めにエンジニアになって、現場で学ぶことをおすすめします。

これらはプログラミングスキルももちろん必要ですが、コミュニケーションスキルの方が重要になってきます。
なので、優秀なエンジニアやプログラマーでも3や4になると苦手・・・という人が多いようです。
もしあなたがこれらが得意であれば、こういうスキルも使いつつ仕事をしていくと、「他の人にはない強み」を使って仕事ができるので、おすすめです。
以上が、前提となる「プログラマーに求められるスキルの全体像」となります。
プログラマーにはプログラミングだけではないスキルも求められることが伝わったのではないでしょうか。
プログラミングのスキルや知識が有利になるケース、有利にならないケース

それでは、「プログラミングで就職や転職が有利になるか?」という話に戻りましょう。
ここでいうプログラミングは、上記の全体像のうち、1番の部分を指すことになります。
結論としては、この1番の部分だけにフォーカスすると、かなり高いレベルが求められることになります。
具体的な経験年数に置き換えると、
「経験者」として就職(転職)するのであれば、3〜5年の実務経験は必要となります。
また、新卒からの就職であれば、大学である程度プログラミングを勉強していることが前提(最低でも学部の4年、できれば学部4年と院の2年間の合計3年間)
このくらいのスキルがないと、「プログラミングスキル自体が就職や転職に有利」とはいえないと思います。
特に転職の場合、企業は即戦力を求める傾向にあります。中途採用をしようとしている企業は、ゼロから教える余裕がないことが多いからです。
それでは、プログラミングの経験が十分ないとプログラマーになれないのか?
ここまで読んだ方は、

プログラミングのスキルや経験がないとプログラマーとして就職や転職できないってこと・・・?
と思われているかもしれません。
確かに、プログラミングスキルのみで戦っていくのであれば、答えは
と言わざるをえません。
競争相手は、もう何年もそれだけをやってきている人がいる世界です。
これから経験を積む人がそういう世界に入っていくのは厳しいのが現状だと考えます。
ただ、まだ、諦めるのは早いです。
これは「プログラミングスキルだけ」で戦っていく場合です。全体像のところで説明したとおり、プログラマーにはプログラミングスキル以外にも、2〜5のような、いろいろなスキルが求められます。
特に、ずっとエンジニアをやっていた人は4と5の部分のスキルが特に弱かったりするので、もしあなたがこれまでに
・人をまとめるような仕事をやってきた
というような経験があるだけで、その部分では彼らに勝っているといえます。
そういう強みも生かして、プログラマーを目指すはどうでしょうか?
プログラミングが有利にならないケースにどうしたらよいか?

すでにほぼ答えは書いてしまっていますが、この記事の結論としては、
プログラミングスキルが就職や転職に有利にならない場合の対策としては、
・ただし、そこに加えてあなたがすでに持っている強みを生かして、他のプログラマーとは差別化
をすることで、十分にプログラマーとしての就職や転職も可能
ということになります。
要するに、あなたがすでに持っている他スキルとの掛け合わせをするということですね。
他スキルとの掛け合わせ
これをやることで、他の、何年もプログラミングだけでやっている人が多い「プログラマー」という枠の中ではなく、システムエンジニアという、より広い活躍が出来るようになります。
具体的にいえば、プログラマーに求められるプログラミングのスキルが例えば
だとすると、システムエンジニアでは、
くらいでよいケースもあります。
その代わり、あなたが別で持っている
・コミュニケーション力
・営業力
などのスキルを持っていれば、
プログラミングをするだけではなく、お客さんに何かを提案したり、今、開発の現場で起こっていることをわかりやすくまとめてマネジメント層にレポートしたりといった、他のプログラマーとの差別化をしやすくなります。
僕はプロジェクトマネージャーとして仕事をしていますが、このように開発の現場で起こっている問題や懸念などをわかりやすく伝えてくれる人は、非常に貴重だったりします。
プロジェクトマネージャーも非常に忙しいので、端的に今の問題点が分かると、対策が打てるのです。
そういったレポートや共有をしてくれる人とは、他の人とよりも密にコミュニケーションしたくなりますし、仕事の評価も高くなっていくのは当然です。
なので、プログラマーとしてだけではなく、そういう「社内の関係する人と円滑なコミュニケーションをする力」というのは非常に有用で、結果的にはあなたの年収を上げることにも繋がります。
現在、現場の流れはとても早く、人と人の間を繋げられる人が重宝されている

特に今はビジネスの状況がシビアになっている企業も多く、「より早い」成長が求められています。
そういった会社だと
は、あまり必要とされていません。
どちらかというと、
こういった「人と人をつなげることができる」ような人が求められています。
なので、あなたがもしこれからプログラマーやエンジニアとして転職をする場合は、
・プログラミングスキル以外に、あなたがすでに持っている他のスキルも掛け合わせることで差別化をする
という観点で、一度あなたのスキルの棚卸しをしていただければと思います。
結論
それではこの記事の結論です。
・ただし、あなたがすでに他の仕事で培ったスキルがあれば、そのスキルとの掛け合わせをすることで、「プログラミング x 〇〇」という、他の人との差別化をすることは十分に可能。
・なので、「プログラミングスキルの習得」と同時に「既存スキルの棚卸し」が必要になります。
この「スキルの掛け合わせ」は、自分の市場価値を上げる上で必須の考え方だと思っています。
それは、プログラミングスキルがイマイチだったとしても、他スキルもあることで十分、あなたがプログラマーやエンジニアとして生きていける手段になりえるからです。
プログラマーやエンジニアになるために、

何としてもプログラミングスキルを身につけなければ!
というように頑張っている方を多くみます。
ただ、プログラマーやエンジニアで求められているスキルは(もちろんプログラミングはある程度できるようになる必要はありますが)、それだけではありません。
改めて、あなた自身がすでに持っているスキルもフル活用して、プログラマーやエンジニアを目指していただければと思います。
この記事は以上です。
ここまで読んでくださり、ありがとうございました!
コメント