文系未経験からエンジニアになって3年が経ったので振り返りと今後の展望を語る
はじめに
はじめまして!自分は都内でフリーランスエンジニアをやってる26歳です。私ごとですが2024年7月5日でエンジニアになってちょうど3年になります。3年というと何かと節目とされる時期だと思うので、エンジニア3年目の間に得た経験や学びなどを書き綴っていこうと思います。
できるだけ専門的な内容は避けたのでエンジニアじゃない人も最後まで読んでもらえると嬉しい限りです。
エンジニアになって最初の2年間の振り返り記事もあるのでよければご覧ください。
ちなみに画像は「左利きのエレン」という漫画に出てくるコマのワンシーンです。僕は右利きです。
自己紹介的な
2021年7月に未経験からWeb系エンジニアとしてのキャリアをスタート。キャリア初期はフロントエンド(Webサイトやシステムの見た目の部分)を開発していましたが、2022年の11月にスタートアップへの転職を機にバックエンド(Webサイトやシステムでユーザーがデータを入力したとき裏側でどのように動くか)やインフラ(システムを動かすネットワークとかサーバーの部分)も兼任するようになりました。
2024年の春からはフリーランスエンジニアとして活動しており、現在は2社の会社様からお仕事を頂いています。実質週7で稼働しており間違いなく働きすぎ毎日開発できているので楽しい日々を送っています。
自己紹介はこれくらいにして、早速振り返っていきましょう!!!
3年目を振り返って(前半戦)
3年目前半はパンのサブスクサービスを取り扱っているスタートアップ企業で正社員としてエンジニアをやっていました。入社してからは半年ほど経ち、会社にも慣れてきた頃です。
未経験だった分野も担当するように
3年目に入ってからバックエンドやインフラなどシステムの裏側部分も担当することが増えてきました。当時7人くらいのチームで開発していたので、1人が複数領域を担当することは珍しくありませんでした。当時はまだまだバックエンドは苦手意識が強く、「もっとできるようになりたい!」と思っていたため非常にいい環境でした。
中規模な機能を1人で作り切れたときは達成感が大きかったですし、少しずつ開発できるようになり明らかに成長しているのを感じていました。
採用面接 / 課題のレビュー
正社員の採用を増やしたいということもあったので採用の面接官を担当しました。
自分より経験年数や年齢が上の方を面接することが多かったので技術的なところを深ぼるというよりは「どんな経験をしてきたか」「チーム内で揉め事をどうやって解決してきたか」「最近気になる技術はあるか」などメンタルやマインドセットを中心的に聞いて「この人と一社に働いている姿が見えるかどうか」「チームに馴染めるか」を重視していました。また求職者の方が最大限面接でパフォーマンスを発揮できるようにアイスブレイクを挟む、笑顔を心がけるなどを緊張をほぐすように心がけていました。
面接とは別に技術課題も求職者の方にお出しし、その課題のレビューも行なっていました。「◯週間以内に〇〇する機能を作成してください」とお願いし、提出されたソースコードを採点する、というものです。自分が所属してるチーム以外のコードを読むことは多くなかったので、技術的な面で学びになりました。
マネジメント業務
社内で複数プロジェクトが動き出すタイミングだったので2チームに分かれることになり、そのうちの1チームのプロジェクトリードを任せてもらうことになりました。(4, 5人程度の小さな規模ですが…)
具体的な業務内容としては、
実装する機能の洗い出し
メンバーがすぐに着手できるようにタスク分解
いつまでにどの機能を作るか、のスケジュール管理
複雑な実装や仕様のドキュメントの作成
新しいエンジニアが参画した時には説明の時間を確保してオンボーディングの実施
社内メンバーに対してヒアリングや使い方の説明会の実施(社内向けステムだったため)
などなど。他には「進捗管理をして必要に応じて自分がタスクを巻き取る」「設計は自分が考えて実装は業務委託の方にお任せする」など柔軟に対応し、メンバーがすぐに実装に取り掛かれるような環境作りを心がけていました。結果的に大きなバグなくリリースできたのでよかったです。
副業を始めた
秋ごろに副業を始めました。副業を始めた理由はお金が欲しかったこともありますが、今まで触れたことのない技術に触れてみたい、もっと開発経験を積みたいというのが理由でした。あとは「本業で積んだ経験が他社でも通用するか」試してみたかった、というのもあります。副業先はX(旧Twitter)経由で見つけ、現在も一緒に仕事させていただいています。
シード期のスタートアップということもあり、開発体制も要件も整っていない状態でしたが、ビジネスオーナーや他のエンジニアの方と議論しながら技術選定から設計、実装まで幅広く担当させてもらえたのはとてもいい経験になっています。
副業を始めて今まで触れたことない技術や開発手法を経験できたり、優秀なエンジニアの方に自分の書いたソースコードをレビューしていたけたりと、金銭以上に得られるものは大きかったです。
本業で得たバックエンド知識も完璧とは言わないまでも、他のエンジニアと議論ができたり、難しい要件の実装も担当できるようになったりと成長を感じることができました。
3年目を振り返って(後半戦)
本業での開発時間が減ったことに気づく
2024年に入り、本業で携わっていたサービスのリリースも終わったタイミングでとあることに気づきました。
「あれ…最近本業で開発してないのでは…?」
上記の振り返りにも書いたとおり、本業ではマネジメント業務や採用の面接官を担当していたことに加え、開発以外の社内メンバーが扱うツールの設定依頼なども引き受けていたため開発に割ける時間が大幅に減ったのです。
マネジメント業務や採用担当は多くの学びを得たし、そういった経験をさせてくれた会社には非常に感謝しています。一方で副業先では設計や実装など手を動かして開発する機会が多く、「副業の方が楽しい」と思うようになりました。
現職に残るか、退職するかの決断
3年という短いエンジニア経験ですが、今後のキャリアについて一番悩みました。簡単に整理すると当時の自分は下記のような状況でした。
本業では開発以外の業務(マネジメントや採用、Bizサイド向けのツールの設定など)が多く、開発に割ける時間が少ない
副業先では設計から実装まで任せてもらっている
どちらの仕事も大切なのは重々理解しているつもりですが、前者のような開発から少し外れた仕事を担当するのは自分のキャリア的にもまだ早いのかな?と思っていました。どちらかといえばまだまだプレイヤーとして戦っていきたい、という思いが強かったです。
悩んだ末、本業を退職することに決めました。副業でお世話になっていた会社様から「早くプロダクトをリリースしたい」と言う話があったことや元々「キャリアのどこかでフリーランスを経験したい」と考えていたので、3月末で退職することを決意しました。
いざフリーランスへ
ということで4月から晴れてフリーランスになりました。副業先(この時点では本業だけど)とは引き続き業務委託契約を交わし、ひとまず週3日ほどフリーランスとして稼働させていただくことにしました。残りの時間は今まで興味があった分野の勉強や、旅行に費やしました。
6月以降は副業先の稼働時間を増やすことも考えたのですが、「せっかくフリーランスになったので他の現場も見てみたい」という思いから新しい案件に参画することに決めました。(※フリーランスは正社員と違い複数の会社と契約を交わすことが可能。会社にもよるが時間の融通も正社員に比べると効きます)
新しい現場では自分が今まで経験してきた中でもかなり大規模なシステムを作っており、エンジニアのレベルも高く、メンバーの方にも親切にしてもらえるので楽しく働けています。これまでの経験や知識を発揮しつつ、今まで経験したことのなかった技術を学ばしてもらえているので、give and take の関係を築けるように心がけています(今のところまだまだtakerですが…)
1年前と変わったこと
システムの全貌が見えるようになった
「開発の幅を広げる」ことをこの1年の目標としていました。実際に3年目ではバックエンドやインフラなど、ユーザーの目には触れない部分を担当することが多かったのですが、そのおかげでシステムの流れを一貫してみれるようになったと思います。
新しく入った案件でも「こことここが繋がっているんだな」「このバグはここを直せば良さそうだな」などの勘所も掴めるようになってきたり、システムを作るときもあらゆる観点から提案、設計、実装までできるようになって自分の手札が増えたと感じています。
一方で今参画しているような大規模な案件では多数のサービスが関わり合っており理解が追いついていないので、まだまだ修行が必要ですね。
ソフトスキルを褒められることが増えた
副業やフリーランスを通して色々な会社様で働く機会が増えたのですが、ソフトスキルやコミュニケーション面で評価いただけることが増えてきました。具体的に評価いただいた点としては
レスが早い
事前に深く調べ込んだ上で質問する
自分の考えも添えた上で発言する
受け身にならず自分からタスクを探しに行く
噛み砕いて状況をわかりやすく説明する
進捗報告はこまめに行う
言われた通りに実装するだけでなく、なぜその機能が必要か理解する
話しやすい雰囲気(おそらくこれは天性のものw)
などなど。いざ書き連ねてみると「社会人として当然のこと」のような気もしますが、意外とできていない人も多いんじゃないかな?と思います。
上に述べたようなことを意識し始めたのは、スタートアップで正社員をしていた時のチームのマネージャーに「こういう仕事の仕方も意識したほうがいいよ」的なことをご指摘いただいたことがきっかけです。2年目までの自分は開発スキルに集中しすぎて見えていなかった部分なので、かなり意識するようにしていました。結果的にこの1年で周囲の方に褒めていただけたのは喜ばしい限りです。
自分が思っている以上に開発するのが好きなんだと気づけた
元々開発することは好きだったのですが、自分の想像以上に開発している時間が好きなんだなと気づきました。振り返りにも書きましたが、「開発できていない時間」が長期間あった時はかなりストレスを感じていました。一方で副業を通して開発タスクをこなしたり、休日に自分の気になっている技術を調べたり触れたりしている時間はかなり幸福度が高く、気づけば時間が過ぎていることも多かったです。
「技術は課題解決のための手段」というのは事実であり否定するつもりはないのですが、せっかくやるなら技術自体も楽しんで開発したほうがパフォーマンスもモチベーションも上がるのかなと思いました。
下記の記事が自分の感情を代弁してくれているので、よければご覧ください。
ジュニアからミドルへ
エンジニア業界には、エンジニアの階級を示す言葉として、「ジュニア」「ミドル」「シニア」という言葉を使ったりします。
上の記事でも述べられているように経験年数だけでは一概に決まらないのですが、経験年数が1年〜3年をジュニアエンジニア、4年〜9年がミドルエンジニア、10年~ がシニアエンジニアと区別するのが(おそらく)一般的と思います。本日をもって4年目を迎えるので、経験年数的にいえばミドルエンジニアの部類に入るのですが、当然それ相応の実力が求められることになります。
そこで3年目の間はミドルレベルのエンジニアに求められるものとはなにかを考えながら過ごしていました。具体的なミドルエンジニアの定義があるわけでもないし、そもそも答えなんてないのですが、「このエンジニアすごいな」「こんなふうになりたいな」と思う人はたくさん出会ってきたので、自分なりに出した「これができたらミドルエンジニアとして見られるんちゃう?知らんけど」的なポイントを3つに絞って書き連ねていこうと思います。
※特定の技術要素にフォーカスしてしまうと専門分野によって色々変わってくるので、あえて言及しないようにしています
周りの人をうまく頼れること
1つ目からなかなか他力本願な内容ではありますが、前提としてシニアエンジニアには技術力では及びません。幸いなことに自分はシニアレベルの方と一緒に仕事させていただくことが多かったのですが、技術力や持っている引き出しの数が桁違いです。自分が「A案でいきましょう」というと、「それだと〇〇の場合に難しいので、B案でいきましょう」みたいなケースが多々ありました。これは「経験の差」がものをいうと思うのではっきり言ってどうしようもないです。
だからと言って悲観する必要はないと思っています。そうやってシニアの方のレビューを挟みながらステップアップしていけば、技術力も追々伴ってくるんじゃないかなと思います。わからないこと、不安なことはシニアや有識者に事前に確認したりしてうまく頼ればいいかなと思います。
また、ジュニアエンジニアの力もうまく頼るべきと考えています。自分のタスクが溜まっている時に、必要に応じてタスク分割をして割り振ることで自分の軽減も減らすことができます。これはジュニアレベルだとなかなか難しいところだと思っていて、「どの粒度でタスクを分ければいいか」「何をお願いすればいいか」みたいな判断が結構難しいと思うので、タスクを割り振る力みたいなものもミドルには求められてくると考えています。
状況に応じてエンジニア以外、他業種に方も頼るべきだと考えています。プロダクトオーナーの方に納期の交渉をしたり、「マーケチームの〇〇さんはユーザー層について詳しいからUI・UXに関して意見を聞いてみよう」などです。この辺は「誰が何を得意としているか」「誰がなんの決定権を握っているか」を意識する必要があると思っています。その辺を理解しておくことで開発も円滑に進められると思います。
ジュニアは広範囲に助けを求めたり、1人で抱え込んだりしがち(僕だけかも)ですが、具体的な課題にフォーカスし、適切な場面で適切な人を頼れるスキルを持つべきかなと考えています。
得意分野があること
何か1つでも得意な言語なり領域があるといいかなと思います。得意なことがあると周りのメンバーに頼ってもらえるし、頼ってもらえると上の記事に書いたような、「周りに頼りやすくなる」というメリットもあります。
例えば自分の場合は Typescript というプログラミング言語が得意なのですが、新しいチームではそこまで知見がある人がおらず、自分が改善提案をしたりコードのレビューをしたりするなどして自分のスキルをチームに還元しています。逆に僕はインフラ周りが得意じゃないので他のメンバーやチームリーダーの方に教えていただいたりしてキャッチアップしており、これも give and take な関係が築けているからこそです。こうやって自分のスキルと引き換えに新しい技術を習得していくことも必要だと思います。
チームの生産性を高めれる人
生産性という言葉も定義が難しく、具体的な数値化が難しいのですが、自分が見た「生産性高めてるなあ」と感じた人は下記のような人です。
仕組みを改善できる人
仕様理解が早い人
ドキュメントをまとめるのが上手い人
ビジネスサイドとの折衝が上手い人
運用保守しやすい設計ができる人
教えるのが上手い人
雰囲気を和ごましてくれる人
などなど。
この辺は人によってまちまちだと思うのすが、1,2年目の自分は「自分が楽しく開発できて、迅速に開発できればいいや」と思っていました。ですが今考えてみると「〇〇さんの考案してくれた案のおかげでタスクがスムーズに進むようになった」「〇〇さんのおかげで生産性が上がった」のような場面が多かったです。
どんな観点でも構わないのですが、チームメンバーが気持ちよく開発できるような環境や仕組みを作るスキルも求められてくるんじゃないかなと思います。
今後について
専門性を絞って技術力でチームをリードしたい
1年前の目標に「開発の幅を広げる」を掲げており、結果的に大成功でした。未経験だったバックエンド実装も自分がリードして進められるようになり、インフラ周りも苦手意識があったのですが軽微な修正やそこまで複雑なインフラ構成でなければ自分で対応できるようになりました。
幅を広げることは成功したので今度は1つの分野を深掘りしていきたいと考えています。具体的にはバックエンドやインフラ面でチームをリードしていきたいです。なんとなく、技術力でチームを牽引していくのは自分には無理だろうと諦めていたのですが、心のどこかでまだ技術力で戦いたいと思っている自分がいます。
専門性を極めながらテックリードやITアーキテクトなど、技術面でチームをリードしていけるような存在になりたいです。
フリーランスから正社員へ
振り返りにも書きましたが「フリーランスにはいつか経験してみたい」と思っていたのですが、このタイミングでなるのは正直想定外でした。フリーランスは正社員と比べて時間の融通が効いたり収入が増えたり、メリットも大きいのですが、どこかのタイミングでまた正社員に戻ろうと考えています。
理由は色々あるのですが、
結婚や出産など大きなライフイベントがあると正社員の方が何かと融通が聞きそう
住宅ローン組みたい
正社員じゃないと経験が難しい職種(マネジメント、テックリードなど)を経験したい
もちろんこれら全てが満たせるのであればフリーランスを続けてもいいのですが、まだまだ正社員として得られる経験もあるはずなのでキリの良いタイミングで戻ろうかなあと思っています。
エンジニア以外の勉強、趣味も大切に
この3年間、開発から離れたことはありませんでした。コードを書かない日があっても隙間時間で調べ物をしたり、X(旧Twitter)で情報収集をしたり。結果的にそのおかげで大きく成長できたし、1年目と比べるとかなりの額を稼げるようになりました。
ただ時間というのは有限なもので、開発に時間を費やすと他の時間も減ってしまいます。友人や恋人と過ごす時間、エンジニア以外の勉強をする時間、その他趣味など。
エンジニアの勉強を続けていればもちろん成長できるし、お金ももらえるようになるのですが、それだけだと人生楽しくないので、仕事以外の面でも充実させれるようにしたいですね。ちなみに最近は英語の勉強を始めました。正社員に戻る前にアフリカと中南米に旅行も行きたいですね。
起業も視野に入れてる話
1年前の note にも書いた「いつかは自分でサービスを作りたい」という話にも繋がってくるのですが、今では起業も視野に入れています。
1年前は抽象度の高い表現をしていたのに対し、少しだけ具体的な表現になったのにはいくつか理由があるのですが、「ビジネススキルを身につけるのに一番手っ取り早い方法」だと思ったです。
副業先の会社様はまだ設立したてということや少人数で開発してることもあり、裏話も聞かせていただけるのですが、これがまた面白いです。「資金面の話」「MVPを達成するためにやること」「共同創業者と揉めた話」などなど。どの話も全て「どんなサービスを作れば使ってもらえるか」「そのために何が必要か」が関わっており、自分が目指しているような「いつかは自分でサービスを作りたい」を本気で実現するためには起業が一番手っ取り早い選択なのではないか?と考えるようになりました。
とはいえ上に書いたように、今は技術力を高めて技術面でチームをリードしていきたいので、もう少し先の話になりそうです。
最後に
ここまで読んでいただきありがとうございました!どこの誰かもわからない奴の note を読んでくれる物好きは少ないと思いますが、少しでも誰かの励みや参考になれば嬉しい限りです。
この1年はキャリアのことで悩んだり、副業を始めたり、退職、独立などバタバタしましたが、周りの方のサポートもあって無事にフリーランスとしてやっていけています。
エンジニアになりたての頃と比べてもかなり自信がついてきました。まだまだできないことは多いけれど、それでも「今の俺ならできる」という自信もあるし、根拠のない自信ではなく「今まで積み重ねてきた成果や結果があるから」と胸を張って言うことができます。
エンジニア4年目もより一層気を引き締めて、初心を忘れず謙虚に頑張っていくので、何卒よろしくお願いします!!!
PS. X(旧Twitter)もやってるのでよかったらフォローしてね。