こんにちは、tosumaです。
すこし前に友人からIT業界への転職の相談を受けたので、IT業界への転職に向けての考え方を書いております。これからIT業界へ転職される方の参考になれば幸いです。
が、かなりネガティブな事ばかり書いてますので、あくまでも1つの意見として見て頂ければと幸いです。
[目次]
本件の発端
すこし前にずっと連絡を取ってなかった高校時代の友人から相談があると突然連絡がありました。
お?同窓会の連絡か?
マルチの勧誘か?
「転職しようと思っとる、相談乗ってくれ」と。
あぁ、そういう話なら
聞くだけだけどな!
しかし、結婚してまだ数年しか経ってないし、最近子供も産まれたって年賀状に書いてたのを覚えていたので、チャレンジだなぁという印象が強かったのが本音。
まぁ色々あるんでしょう。←絶対聞かない
相談内容
※この相談自体はコロナ騒動の少し前です
聞くに、もともとホテル関係の仕事をしていた友人、IT業界に転職を検討しているというものでした。
また、どえらい飛躍だな、と。
ぜんぜん畑違うし。
高校時代の友人の中で地元(福岡)を離れ、東京や大阪のIT企業で働いてるのが私だけだったようで連絡してきたもようです。
かいつまむと彼の相談 兼 質問は以下。
①プログラムは何から勉強したらいいか?
②プログラム勉強用のパソコンはどう選ぶか?
③いまからプログラム勉強して通用するか?
まぁ最初に気になる所ですよね。
IT業界といっても導入コンサル、ソフト系やインフラ・ハード系、組み込み系と色んな種類がありますが、きっとソフトウェア関連のエンジニアの方向で検討しているんでしょう。
とりあえず一人のエンジニアとして友人には自分の意見を回答しました。
1.プログラムは何から勉強したらいいか?
1.1.私の回答
この点についての私の回答としては「何の言語でもいいから、ネットで調べて自分一人の力で開発環境を作り、拾ったサンプルプログラムでも使って1つ動くものを作ってみろ」です。
まず、この業界で一番大事なスキルは「自分で調べる力」なので、自分で情報をいかにかき集められるか?って所が素養の多寡が見えるポイントですね。
私の回答をゴールとして、それに向かって自分で「何が必要なのか?」と「何をすればいいのか?」と1つずつ調べてクリアしていくのが大事です。
だいたい最初は1つの事を調べると、その内容の中でまたわからない事が幾つか出てくるので次から次に調べる状態になります。
そういうのを自分で1つずつ紐解いてくのが非常に重要です。
人から聞いた事はすぐ忘れてしまいますが、自分で調べて理解したことは頭に残りやすいです。
仕事始める前にそこまで必要?と思うかもですが、他に武器があるなら話は別ですが、文字通り未経験となるとやっぱり弱いと思います。
「自分で少し勉強して触ってみたことがあります~」という状態はやはり必要かなと。
あと実務に入っても調べる事は尽きないので「調べる技術」は必須のスキルですね。
1.2.どの言語を選ぶべき?
プログラミング言語は世の中にはJava、PHP、Ruby、Python、Swift、Unity、C、C#、VBとあげたらキリが無いくらいあります。
当然それぞれ目的や特性などあるにはありますが、何を選択すべきか?
おそらく多くの現職の方が同じ事を言うかと思いますが
正直、何でもいいです。
大事なのは言語の種類ではなく、考え方なので、基本的にプログラムの基礎さえ身に着くなら1つ身に着ければ潰しが効きます。
(いや、まぁCOBOLとか選ぼうとしたら流石に止めますけどね苦笑)
とわいえ初心者はそれだと途方にくれる気もするので、「自分だったら何を選ぶ?」という視点になって選ぶなら、世の中の情報の多さや環境準備の敷居の低さからPHPを私はお勧めします。
あとは、もしパソコンがWindowsかつExcelのライセンス持っているならVBAもお勧めですね。ITに限らず、Excelを使う業務全般に効果が期待できます。
1.3.プログラムで大事な事
プログラムの理解で大事なのは以下2点です。
1)構成の理解
2)基礎の理解(処理の流れ/変数/繰り返し/条件分岐)
やれフレームワークが~とか、MVCモデルが~とか、オブジェクト指向が~とか、そんなのは後回し。というか会社入ってからでいいですね。
1)構成の理解
まず構成の理解ですが、例えばWeb上でPHPのプログラムを動かすためには準備するもの幾つもあります。
そういったものを1つ1つ理解する事が非常に重要です。
これをどうやって理解するかですが、まぁ色々調べますよね。
そして実際にやってみる。
これに勝る学び・経験は無いです。
けっこう現職の方でも「これアーキテクチャ理解してます?」と問うと回答できない人多いです。Apatchって何?とかそういうのです。
この辺りは自分で1から開発環境を整えるだけで間違いなく理解がグッと深まります。
実際に作業するパソコン(OS)のバージョン、状態、選択するPHPなどバージョンが様々ですべてが合致する条件の手順をネットなどで見つけられることはまずないです。
類似の情報から自分の環境に合わせて手順を手探りで調整しつつ、やっとゴールにたどり着くパターンがほとんどです。
この過程含めての理解です。
2)基礎の理解(処理の流れ/変数/繰り返し/条件分岐)
あとは自分で書いたプログラムがどうやってWebに表示されるのか?処理が動くのか?この辺りも非常に重要です。
凝ったものを作るとかではなく、まずはシンプルなものを作成して「ここに描いたものがどう動くのか?」というイメージを持てるようになることが非常に大事です。
ソフトウェア、ミドルウェアの関連性、プログラムが実行された際にどの順番で処理が動いているのか、どのプログラムが動いているのか、この辺りを100%理解できなくても、感覚的にイメージを持てるところはたどり着きたいですね。
流れを抑える上で、変数、繰り返し(For文など)、分岐(If文など)は押さえておきたいところです。
あと、この過程でデバッグの基礎を身に着けられると尚良しですね。
1.4.参考書は必要か?
人によるとは思いますが、まぁいらないですね。
今はネットで情報も山ほど出てくるので、必須か?と言えば当然「No」です。
本派とか、風呂で見たいとか、そういうのがあれば別ですが。
もし買うとしたら比較的コンパクトにまとまったものを1冊に留めておくべきかなとは思います。
2.プログラム勉強用のパソコンはどう選ぶか?
2.1.私の回答
私の回答は「中古でも何でもいいから安っすいパソコンすぐ買え」です。
今どれを買おうとして悩んでるのか?と聞いてサイトのURLを送ってもらいましたが、家電量販店で15~20万くらいのやつを数枚送ってきました。
いやいや。
まぁ人によっては最高の環境でやれ!とかサクサク動かないと非効率だ!とかもっさりした動作じゃ時間の無駄だ!とか言うかもしれませんが。
いやいや。
まずはとっとと1万円台のパソコンでも買って使い倒してこい、と。
たとえば以下のお店なんかだと1万円台で余裕で手に入ります。
ちなみに私はこちらのお店はよく御世話になってます。
だって安いんですもん。
あ、あと、勉強目的であれば言うまでもなくWindowsを買いましょう。
2.2.パソコンに関して
パソコンに関して私の思うポイントは2点です。
1)カスタマイズで使いやすい環境に作り上げる
2)設定などゴリゴリ触ってイジり倒す
これにつきます。
前も書きましたが、パソコンは商売道具になります。
そのため、ある程度の仕組みの理解など必須です。
自分のパソコンを色々とカスタマイズするのが一番理解への近道です。
どうせ自分のパソコンなんですから好き勝手やってしまいましょう。
前述のプログラムと同じ話ですが、実際に触って動きを見るに勝る経験はないです。
ネットで「〇〇をすると効率化~」とか書いてますが、実際にどのくらい効果があるのか?なんか絶対やってみないとわからないです。
あと、フリーソフトなど含め、いろいろ試す感覚を慣れておくのは非常に強みです。
そして、ある程度パソコンの理解を深めてから、ちゃんとしたパソコンを探した方が自分にマッチしたものが見つけられると思います。
パソコン、高いですからね、買い物に失敗したくないですし。
3.いまからプログラム勉強して通用するか?
3.1.私の回答
まず私の回答としては「かなり頑張らないと厳しい」です。
これは完全に個人的な意見ですが
特にこのコロナ禍において、真面目に厳しいと思います。
ネットとか見てると簡単に「30代から始める~」とか書いてありますが、現実は厳しいですよね。
3.2.IT企業における教育環境
IPAの統計資料とか見ても具体的な数値の傾向も見れるのと、私の所感としても昨今は育成に力もコストを掛けてくれるのは大手企業くらいです。
ただし、大手こそ現在はリモートワークの体制が整っており、在宅での離れた作業では孤独感も強く、手厚いフォローが受けづらい実状でもあります。
小さい会社では受託で請負の仕事よりも、圧倒的にSES事業が多いので、若手はちょっとした研修を経て、外へ売られる事が多いです。
外に出てしまったら教育は基本的に現場任せになります。現場は必要最低限の事は教えてくれるでしょうが、ビジネスマンとしての教育はしてくれないです。
勿論人によってはその現場で成長されますが、ほとんどの人は与えられた仕事だけこなして、契約終了で別の現場へまた移るので、1つ1つのスキルが大成しづらいです。
そういった方には契約の縛りもあり、責任ある仕事も渡しづらいので業務の領域も拡大しづらいです。
で、最終的に何が起こるかというと、「単価があがらず安く使い続けられる」もしくは「年齢に応じて単価があがるがスキルが紐づいてないため採用されづらい」というエンジニアが出来上がります。
私は週に1度はパートナーさんの面談をさせて頂いてますが、そういった方がほんとに多いです。
あと、最近だとコロナの影響で「今は仕事が無いので自宅待機しています~」という人が3人に1人くらいいますね。
ネガティブな事ばかり書きましたが、「教育制度が整っている」、「案件に恵まれる」、「自学する」が揃えば、十分やっていけると思います。
どんな環境だろうと成長する人は成長しますしね。
総括
まとめると以下ですね。
・ネットで調べて何か1つプログラムを作ってみる
・練習用に安いパソコンでまずはトライしてみる
・中途でも教育をしてくれる企業を探す
プログラマーとしてやっていくなら、この辺りは最低でも必要かと思います。
ただ、ここまでプログラマー目線で書きましたが、プロジェクトを推進するにあたって必要なものは3つあると私は考えております。
①業務の理解
②仕様の理解
③設計~実装に必要な技術力
①はまた別の経験やスキルですが、②や③については基本的な技術的知見は必要になってきますのでIT業界で勤めるのであればコンサルを目指そうが、SEを目指そうが、どうしても通る道になります。
なんにせよ、彼の転職の成功を祈ります。
あとがき
尚、この相談から半年以上経ってますが、最近状況を聞いてみたらIT企業への転職は辞めておりました。
まぁ色々あるんでしょう。←絶対聞かない
お読み頂き有難うございました。
※よければもう1本 IT関連の記事をお読み頂けると幸いです