はじめに
未経験からエンジニアに転職を決意したのは20代後半の2019年でした。
「エンジニアは、ブラックだからやめておくほうがいいですよ」
「エンジニアの何がいいの?」
なんていう話をいろいろ聞きました。
この時期に転職した人も比較的多いんじゃないんでしょうか?
JavaとJavaScriptの違いもわからないし、ソースコードを見て「文字の羅列がすごい」くらいのレベルでした。
ITパスポートに書いてある内容を1文字読むだけで眠くなったりは懐かしいです。
それでも、「面白そうだしやってみなくちゃわからない!」が勝って転職しました。
結論から言うと、転職してやることは増えるし常に自分の見ていた世界は狭かったと思うけどやって良かったと言う話です。
現在、転職して4年半、経緯を振り返るとともにこれから先をどう生きるかを整理したいと思います。
転職初期の挑戦
冒頭で話しましたが、ソースコードも全く読めないところのスタートでした。
年齢は20後半でギリギリ第2新卒の年齢です。
どこから手をつければいいのかわからず「scratch」でアルゴリズムを学んでいました。
初めて行った技術セミナーの交流会で、「scratchやってます!」と話をした時に「え・・・?」と聞き返されたのは今でも覚えています。
他に転職前にやっていた勉強
ITパスポート
MOS(Excel,Word)
謎のパソコンスキル資格
???
流行りのスクール
そのころに大金を叩いて始めましたが、怠惰すぎたのと仕事疲れで途中で辞めてしまいます。
(今思うととても勿体無い・・・)
唯一、ITパスポートが一番エンジニアらしい勉強でした。
そもそも用語自体も何を言っているのか何度読んでもわからん!レベルです。
ひたすら暗記だけしていました。
未経験エンジニアの転職活動
「エンジニアきついですよ」
転職活動は、エージェントと転職サイトを併用しました。
エージェントさんには、
「未経験なんですよね?経験ついても毎日終電とかになるんでやめとくほうがいいですよ。今の職歴活かせる別の職業にしましょう。」
と言ってくれた方もいました。
優しさの上で言ってくれたのがひしひしと伝わってきましたが、それでもエンジニアやってみたいと気持ちが固まった瞬間でもありました。
エージェント以外でも自ら数社応募し、上京して話を聞いたり、どんな会社があるのか、学びながら面接を受けました。一瞬で合格をくれる怪しいところもあればしっかり考えてくれるところもありました。
エージェントさんから、単価が安定しているBtoBを専門とするSES企業を勧められました。
BtoCのシステム開発をやりたないぁとなんとなく思っていて、本当にそれでいいのかなぁと思いながら、どうするのが一番いいか判断できませんでした。
決め手になったのはリモート面接をした時、対応してくれた方の誠実な態度、優しそうな雰囲気でした。
リモート面接でそこまで断定するのもリスクはありますが、結果的にその会社で、技術以外にもいろいろ学ばせてもらえたので正解でした。
リモートで採用が決まるのもなかなか今時だったなと思います。
未経験からの入社
上京して、初めての出社でした。
Googleマップを頼りにいくと、とてもデカいビルで「おー!」っとなりましたが少しピンが外れてました。
横にある小さな雑居ビルでした。
ちょっと落胆しましたが、SESなのでオフィスにお金をかけなくていいっていうのは今では理解しています。
研修スタート
Javaの基礎的なことを学びながら計算機の作成をしました。
面接の時に「勉強していきます!」と意気込んでしまっていたのに、勉強の仕方もわからず少ししかできていませんでした。
プロジェクトの作成もできず冷や汗をかいて、「使えないやつって思われたらどうしよう・・・」って思って必死に考えて悶々としていた時間が多かったです。
今はなんでもわからないことは調べて聞いて早めに動くので、そこまで深刻に悩まなくて良かったなと思います。
少しでも頑張れるやつだと思われたくて必死に研修問題を解いていました。
その時は「どうすれば要件を叶えるロジックが作れるか」を小休憩でベランダへ出て考えて、思いついて試してみての繰り返しがとても楽しい時間でした。
ちょっとは問題を解くのが早かったようで、少しバグのある計算機でしたが一通りは早くできました。
ただ、時間をおいて振り返って見てみましたが、カオスコードで頭がパンクしそうになるレベルでした。よくこれをこねくり回したなと感心しました。
初めてのプロジェクト入場
初めてのプロジェクトはフレームワークのリプレースでした。
「役に立つぞ!」と意気込んで入場したのも束の間、何をすればいいか全くわからない・・・。
ネットワーク設定やらアカウント準備、初めてだと全てが恐ろしい。
これでもしリモートスタートだったらと思うと、何もできなかったんだろうなと思います。
開発作業ができるレベルじゃない
それでも、ゴタゴタしながら準備は整いました。
「ソースコードもしっかり読むぞ・・・」と実際見てみたら、何が書いてあるかわからない。
そう、ピュアなJavaは研修でやってきたけどフレームワークは一切触れてこなかった。
フレームワーク自体を知らなかったので動きが全然理解できませんでした。
できる先輩エンジニアが横で黙々と作業を始める。
これは困ったので積極的に聞いても何を言っているのか全くわからず、眠くなる体たらくでした。
手順書作業と画面テストとパチンコ
発注元の社員さんが手順書を作成してくれて、それを元にコピペしてコードを打っていく作業とひたすら画面テストばかりしていました。
この時期は暗黒期だったと思います。
勉強する習慣があれば良かったですが、勉強することが嫌いで全くできていませんでした。
類は友を呼ぶのか、仕事ができず勉強の嫌いな先輩と仲良くなり、一緒にパチンコやら水草売りを始めてたりしました。
良い悪いの判断がつかず流されやすい人間でした。
自分でやっているのにこの時は「なんのために東京へ来たんだろう…」と悶々とし、流され、焦り、空回りばかりする日々でした。
コロナ流行&二つ目の現場へ
2020年といえば、コロナが流行し始めました。
リモートになったと同時にコスト削減のため、僕と水草売りの先輩は退場しました。
もうお終いかなと思ったと同時に、やっと暗黒期から解放されたとホッとしたのを覚えています。
そして運よく、懐の広い上司に拾われ、次のプロジェクトへ入場が決定しました。
次のプロジェクトでのリベンジ〜焦らないでいいからじっくりやってみろ〜
前のプロジェクトでの反省点は、3つでした。
①教えてもらった業務知識の整理/復習をしっかり行わなかったこと
②スキルのインプットとアウトプットをしなかったこと
③自分の意志がなくただ流されていたこと
これを改善しないと次のチャンスはもうないと思いました。
同時に上司に言われた言葉に救われました。
「焦らないでいいからじっくりやってみろ」
その時の僕はうまくいかない焦りから全てが空回っているのに何かしなくてはと地に足がつかないような日々を過ごしていました。
その言葉をかけてもらえたことで一旦ゼロに戻って落ち着いてやり直してみようと思えたのです。
この気持ちの切り替えは今でも役に立っていると思います。
①業務知識の整理/復習
入ってからメモの方法を紙からエクセルにしました。
紙のデメリットは、書き直しができないことです。エクセルに限らずデータの場合は常にブラッシュアップができることは大きなメリットでした。
さらに定型業務に関しては繰り返すたびに気づきがあるので、より詳細な手順が書けることは大きかったです。
整理されたナレッジは、個人だけではなくチームでも共有することができ、プロジェクト内で属人化していた作業が、新人含めて誰でもすぐにできるようになりました。
②スキルのインプットとアウトプット
理想系としては、ほぼ毎日パソコンに向き合って何か勉強することでした。
絶対にやり続けることなんてできないと思いました。自分ができる努力家だと思えなかったからです。
そのためにどうすればいいかを考えた時に、
1:この時間帯なら手が出せるかも
2:これくらいの時間なら苦じゃないかも
というポイントを探しました。
結果として、
30分前に出社して15分程度勉強するでした。
本当に小さな一歩でしたが、これが後々の勉強習慣のスタートとなります。
また少しずつ週一の社内勉強会にも参加し始めました。
③流されやすい性格
自分の意志がなく、ただただ流されていたのは急には治りませんでした。
流されること自体が悪いとは思っていません。自分が賛同することには流されていいと思っています。
流されて悪い方向に行くのは自分の不利益や悪い感情が湧いているのに我慢している状況です。
まずはしっかりと意志を伝えることから始めました。
それは自分が間違えている時はもちろん、自分があっている時もありました。
絶対正しい時はないですが、そういう生き方を続けていくと相手の意志も尊重しながら自分の意志も尊重することができるようになってきています。
ここでのプロジェクト経験は
人との関係づくり、スキルアップのための下地づくりを磨けたと思います。
さらにプロジェクト自体はレガシーでしたが
フロントエンド、バックエンド、データベース、サーバー全てに関わることができました。
きれいなところだけではなかった
人間性でも色々学べたりいいところでしたが、決して僕がいい人間ではないので複雑な感情を持つことも勿論ありました。
「そんなこともわからないの?」
まず、そんなことも知らないの?という皮肉は多かったです。
それに対して怒ることはなかったです。
もっと勉強しなくてはと思えたので、最終的には「〇〇にプロジェクトの仕様を聞けばわかる」ところまで上り詰めることができました。
スキル不足なチームメンバー
この話は、僕自身も環境によっては例外ではないので複雑な感情になります。
先輩社員はプロジェクト経験5年ながら中堅社員の人を毎日2時間、初歩的な質問で拘束していました。
後輩社員は、完成報告を受けたソースがバクで全く動かないレベルでした。上司が指摘し続けても治らず、プログラミングより事務がいいと言っていました。
エンジニアは、勉強が必要と言われる理由がその時になんとなくわかりました。
いいところもあった
やる気のある年上後輩社員をフォローする立場になったときです。
未経験だからスキルは全く無く、指示しても違うことをやる、しっかりした資料が返ってこない、最初はなんでうまくいかないんだと憤慨しました。
愚痴を周りに吐いた日もありました。
ただ、そのことをいろんな方と話して頭の中を整理した時、
「相手がいけないのではなく、指示の仕方や扱い方がわからないからいけないのでは」
と考えるようになりました。
そこからお互いに対話を増やし、特に下記のポイントを意識するようになりました。
①相手のスキルにあわせて指示の抽象度を下げてるか
指示の具体性は業務の熟練度によって変えるほうがいいと思います。
例えば、その業務に慣れている人に対しては「あれやっといてよ」の一言で、時間帯や時期、依頼元で「⚪︎⚪︎の業務が⚪︎⚪︎までにですね。わかりました」と推測できるレベルになるパターンもあるかと思います。
では、そのレベルでまだ熟練度の低い人に指示を出したらどうなるかは明らかではないでしょうか。
「あれってなんですか?いつまでに?どういう手順で?誰に報告?」など不明な点で、あらぬ方向に作業してしまうこともあるでしょう。
②聞きやすい状況を作り出しているか
少人数のプロジェクトだったので、特に報告会などもなく各々頼まれた仕事をやるだけでした。
なので、困ったら聞くことが必要でしたが、常にそれができるわけではないので、初期の頃は朝昼晩の3回で10分程度質問できる時間を作りました。また、すぐに聞けないようなことは、疑問を記載できるエクセルを用意して記載してもらうことにしました。
お互いに質問対応する時間を設けることで聞くことのハードルを下げることができたと思います。
③指示がしっかり通っているか、進捗を把握しているか
他のメンバーでうまく指示が通らないと言っている方もいましたが、指示を出す方にも問題があることは考えておくといいかもしれません。
指示を出した後に、相手には「いつまでに何をどうやるのか」を説明してもらいました。結果的に実際やる作業が明確になったこととこちらも進捗や成果物の予想がつきやすかったため意識のズレが格段に減りました。
最終的には、いい仕事ができる関係になったと思っています。
エンジニアキャリア中期の決意
再度、転職を決意
SES企業ではいろいろなことを教わり工夫しました。
報連相からナレッジ作成、後輩指導、チーム開発、技術以外にも学べることが多かったです。
ただし、技術がレガシーなこと、他のプロジェクトになかなか移動できず井の中の蛙になりそうなこと、年収の上限が見えてきたこと、上流工程の単価が高いからそちらを勧められたところで、目指したいイメージと何か違うなと転職を決意しました。
資格取得 & ポートフォリオ
転職を決意したときに、資格取得を重視しました。
下記は一年で取得した資格です。
基本情報技術者試験 & 応用情報技術者試験 & 情報セキュリティマネジメント試験
応用情報技術者試験までの勉強法をまとめました。
OracleJavaSE11 bronse & silver & gold
AWS Certified Cloud Practitioner
ポートフォリオ
下記のツールと環境で簡単なサイトを作成しました。
使用ツール等:InteriJIDEA(CommunityEdition)、SpringInitializr、pgadmin4、teraterm、GitHub、Cacoo
実装環境:AWS Lightsail(Amazon Linux2)、tomcat、JDK(Amazon corretto-17)、SpringBoot2.7.2、Maven4、Thymeleaf3、bootstarp5、Postgresql9.2
転職軸
2回目の転職です。
改めて自分がどうしたいかを考えるために下記の動画を参考に自分の軸を作りました。
なぜそう思うのかを5回繰り返して本質を絞り込むことを行いました。
一番重要なのは 内定が欲しいから相手に都合のいいようなことを言うことは禁止 にしました。
転職活動で心掛けたこと
①面接が落ちたりしても心を折らない
やっぱり自分なんかと思うと本当はいけたかもしれない企業へのチャンスを自ら潰すことになります。自ら固めた転職軸を崩さずに取り組み続けました。
②面接は自信を持って取り組む
プレゼンをやった時に見た動画で、自信がない・ハードルを下げる相手の発表ほど無駄な時間はないというのを見ました。面接も自分のプレゼンです。ヒーローインタビューを受ける選手のように取り組みました。
③短期集中
内定が出た時など、他社と比較しながらなら短期集中に挑むことをお勧めします。僕は仕事をしながら1ヶ月で30社に応募、真面目に熱心にやってくれそうなエージェントさんにフォローをお願いしました。現在よりもキャリアアップを狙える企業がターゲットでした。
結果
ありがたいことに、企業数社から内定をいただきました。
転職軸を決めたこと、素晴らしいエージェントさんや企業さんとお話しできたことが納得の行く結果につながったと思っています。
経験を積んだ今、見えてきたこと
資格だけでは仕事がバリバリできるようになるわけではない
資格取得で得られたものは、会議やプロジェクトの把握の時に専門用語や知らないシステムの話が出ても遅れを取りづらくなることでした。
ネットワークの話が出ても、なんとなくこういうことだなというレベルです。
ただ全体像を把握したことから、具体的な話がこちらからできるのかというとそれは資格だけで網羅するのは少し難しいと思いました。
一つのプロジェクトでできても新しいプロジェクトでもできるわけではない
4年半積んで得た技術的な知識は全体を網羅した実践的な内容でしたが、レガシーな開発体制でした。
他のところに活かす方法や比較もできなかったので実際に転職した後にその知識をそのまま流用するのは難しかったです。
仕事は一人でやるものではなかった
この業界は一人で黙々とやるんだと考えてました。
面倒なコミュニケーションがないというのも魅力の一つだと思っていたからです。
実際は、そんなこともなく、関係者とのすり合わせや議論が必要で前職よりもコミュニケーションが増えました。
一人でできるようにならないといけないという意識は変わりません。
ただ、人とコミュニケーションをとるほうが仕事のスピードが断然違うこともわかり、みんなでやることが好きになりました。
現在担当しているプロジェクトやチームでの役割
現在は新規プロジェクトで開発メンバーの一員の他、レビュー担当メンバーやチーム内の技術相談も受けています。
また社内でもミートアップ開催に協力して、技術研鑽しやすい環境を目指しています。
これから先をどう生きるか
勉強は一日最低1時間になった
最低でもこの二つを習慣化できるようにしています。
・ 一日1冊五分✖︎10冊読書
・ 30分プログラミング
週一回は、アウトプットも含めて記事を書くことを目標にしています。
休みの日は時間があれば、勉強する時間も増えたと思います。
出社前に15分が精一杯だったのに、数年間続けるとここまでできたんだなと自分で誇らしく感じました。
実践的なスキルを身につけていきたい
現在のプロジェクトの技術スタックの勉強会に参加する、手を動かして開発をして問題を解決するスキルを身につけることが目標です。最終的にはその技術ならサラッと作れます!となり別の技術でもこの書き方ならこうすればいいかな?と進めていきたいです。
指標として、下記サイトも参考予定です。
資格取得も並行していきたい
資格取得のことを悪いとは思っていません。体系的な知識は実践的な勉強の時の理解促進にとても役立ちました。
並行して行うことで相乗効果を期待します。
下記サイトを指標に資格を取得する予定です。
自分だけでなくチームメンバーが無理せず働ける環境を作りたい
チームを取りまとめられることが直近の目標だと思っています。
チームメンバーが能力を発揮できるようにドキュメント整備やタスクをわかりやすくするなど進めていきたいです。
先のことは結局わからない
こう書いてはいますが、数年後に何を望んでいるかわからないな〜というのが本当の気持ちです。
終わりに
未経験からの挑戦はわからないことが多すぎて不安でした。それでも不安を踏まえた上でやりたいと思ったことは挑戦しても後悔しないと思います。少なくとも僕は勉強する時間どんどん増えていますが今のところ後悔はしていません。
最終的には勉強しなくてもなんとなくついていけるし、貢献できるぜってレベルになりのらりくらりと過ごしていきたいなと思います!