
現場から見た未経験でも欲しくなるエンジニア像
2025年問題などIT人材不足が続いているというニュースもありますが、私の周りで未経験からエンジニアを目指す人が転職活動しても内定がもらえず、エンジニア転職を諦めているケースがここ数年で増えてきました
私は採用に関与していないので実際の転職事情には詳しくないですが、現場目線からこういった未経験の人なら現場に欲しいという特徴を個人の意見ではありますがまとめていきたいと思います
想定している環境
・自社・受託企業
・実際にコードを触る現場
・未経験を無差別に採用しておらず、一緒に働きたいと思える人のみ採用している
積極的に学習して、スキルアップに貪欲な人
エンジニアになるためにプライベートでも学習する人が多い中、エンジニアになった途端、プライベートで一切勉強しなくなる方が多いです
もちろん、休日に勉強したところで給料が発生しているわけではないので企業側が勉強を強制することはできませんが、エンジニアは実力主義の企業が多く、ただの作業者を求めているわけではありません
また、未経験を採用する理由として、
①学習意欲がある
②伸び代がある
といった理由があります
企業目線からして、下記の2人をみて採用したいのはどちらだと思いますか?
①スキルは未経験としては高いが、エンジニアになっても学習しなさそう
②スキルは簡単なアプリを作成できる程度のレベルだが、資格を積極的に取っており、エンジニアになった後も学習する意欲がある
私は②を選びます
理由は①は現時点でのスキルは高くても1年後、2年後という長い目で見れば②にあっという間に追い抜かされると思うからです
現場からすると未経験レベルのスキルで満足する人は、プロジェクトメンバーの士気が下がったり、サポートの手間が増えてしまうのであまり入れたくない人物像です
自走力がある
エンジニアの仕事というのは基本的に業務の手順書がありません
やったことのない実装を公式ドキュメントなどのネット上の情報をもとに実装していくというのが主な仕事となります
もちろん、先輩方が手助けしてくれないわけではありませんが、「このサイトを見ながら実装してみて」などの簡単なヒントしかくれないことが多く、学校の先生のように並走しながら解決してくれるわけではありません
その中で、手順を1から説明しなければ作業できない人を入れてしまうと、先輩が作業したほうが早いということが発生してしまいます
この状況が続けば、できるエンジニアが辞めてしまったり、未経験エンジニアを入れたことでむしろ生産性が下がるということが発生してしまいます
コードリーディングができること
経験が浅いうちはバグ修正などの簡単なタスクを割り振られることも多いです
バグ修正はエラーメッセージやエラーが出ている箇所から問題のコードを割り出さなければならず、コードが読めなければ話になりません
また、業務でコードを書き換える際に他の実装に影響が少なくなるようにしなければなりません
そのため、最低限でもざっくりこのコードは何をしているのかを把握できるくらいのコードリーディングのスキルは必要です
最低限のNG行為を把握している
NG行為が何を指しているのかわかりにくいので例を出します
・個人情報をGETメソッドで送る
・パスワードはハッシュ化せず、そのまま保存する
・クレカ情報などログに出力してはいけない情報を出力してしまう
・他のユーザーの登録情報が編集できてしまう
・他のユーザーの見えてはいけない情報が閲覧できてしまう
・変数名を連番にする(user1, user2…など)
といったITの知識がほとんどなくても、それはまずいのでは?みたいな内容が多いですが、この内容を理解していないエンジニアも実在します
これらの内容は、わざわざ教えることはほとんどないですが、実装に入っている場合はセキュリティ面の欠陥を抱えてしまいます
下記の記事で筆者の方がこういった実装に遭遇したことがあるというのをまとめているのですが、私もこのレベルの実装に遭遇したことがあるくらい珍しくありません
コードが動けば良いと思っていない
ChatGPTなどの生成AIが普及し、未経験の方がAIにコード作成を丸投げして動けばOKというやり方をしている方もいらっしゃいますが、企業でそれをやってしまうとセキュリティ的に問題があったり、書き方に統一性がなくメンテナンスしにくいなどいろいろ問題を抱えてしまいます
AIの使用を認めている現場であれば使用は自由ですが、生成AIはベストな回答をしてくれるわけではないので、実装しても問題ないか使用者がチェックする必要があり、それを行うためには基本的な実装やNGな実装などの知識が必要となります
また、コードの規約もフレームワークや現場ごとにあったりしますので、それを踏まえて書き換えたり読みやすいように修正する必要も出てきます
わかりやすくまとまった質問をすることができる
雑な質問をする方だと、このようなエラーが出ましたとスクショを貼るだけという人がいます
上記の質問をされた側に立って考えてみましょう
①どのようなことをしていてこのエラーが発生したのかがわからない
②エラーが発生しなかった場合は、どのようなことができる想定だったのか
②エラーを検索しようとすると、画像を見ながらエラーメッセージを打ち込まなければ検索できない
③どのような回答を求めているのかがわからない
(エラーの原因が聞きたい or 対処法など)
質問された側は上記の内容がわからないので、質問し返す必要があります
これが何往復も発生した場合は、先輩エンジニアも不必要に時間や手間が取られてしまいます
質問する際は、できるだけわかりやすく、読みやすいようにまとめて先輩の負担が軽くなるように心がけてくださると現場も助かります
最低限以下の内容はまとめて欲しいと思います
① エラーが発生した箇所やタイミング
② エラーメッセージのテキストを貼り付ける
③ 何をしようとしたのか
④ 何の回答を求めているのか
まとめ
リモートワークがしたい、給料を上げたいという理由でエンジニアを目指される方もいますが、その気持ちだけでは未経験からの転職は厳しくなっているのが現状です
エンジニアの世界は実力主義ではありますが、逆を言えば努力する人は未経験であっても評価される世界でもあります
私は努力を続けることができる人は夢を叶えて欲しいと思っているので、少しでも参考になれば幸いです