システムエンジニアになってから10年経ったので個人的な振り返り
はじめに
こんにちは。
普段はテック関連の記事を投稿していますが、今回は少し毛色を変えて振り返り(という名のポエム)記事を書こうかなと思います。
というのも、月日が経つのは早いもので2015年に新卒採用でエンジニアになってからそろそろ10年になります。
せっかくの節目なので少しキャリアを振り返りたかったのと、同じようなキャリアパスを辿る(or 辿ってきた)人の何かの参考になればということで筆を執りました。
少し長くなってしまいますが、最後まで読んでいただけたら幸いです。
スペック
簡単にスペックを書いていきます。Xで見かけるつよつよエンジニアとは程遠いです。自分で言うのも変ですが標準的な地方在住のエンジニアなのではないでしょうか。
- 静岡在住
- 学部卒、ちょっとだけ情報系をかじっている
- 得意な分野はWeb系
- 最近はクラウドインフラまわり(AWS)をメインで触っている
就活~入社まで
入社が2015年度なので、逆算すると2013~2014年あたりから就活を始めていたことになります。
当時は「絶対にエンジニアになってやる」といったつもりは毛頭なく、ITに関しては「大学の講義でいくつか履修して、特に苦手には思ってない分野」というぐらいの認識でした。
所属する研究室は一応情報系でしたが、そこまで厳しくなかったこともあり「HTML
とJavascript
がちょっと書けて、PHP
は本でかじってる」くらいのスキルセットでした。
インターンでエンジニアを意識し始める
就活の時期が近づいてくるとなんとなく「どこかのインターンでも受けた方がいいかな」と思って方々をあたりました。
名前は伏せますが「日本一のインターンシップ」を謳っていた会社のインターンに運よく(?)参加でき、東京で1ヵ月働き詰めという地方の学生にとってはなかなかハードな時間を過ごしたりしました。
激務ではあったのですが、学生の成長を目的としたインターンだったので飽きさせない内容だったのを記憶しています。
論理的思考を養う一環で「山手線の一年間の遅延本数はどれくらいか?」というフェルミ推定を真面目にしたり、Delphi
という触ったことのない言語でゼロからアプリを作ったりと目新しい経験ばかりでした。
そんなこんなで「エンジニアになるのも悪くないな」と思い立ち今の会社に入社することになります。
2015年~ エンジニアになって初めて触ったのはSalesforceだった
社会人になってしばらくはSalesforce
を用いたWebシステム開発をしました。
Salesforce
には独自言語であるApex
とVisualforce
があり、イメージとしてはJSP
に近いかなと思います。
2024年の今となってはAWS
やGCP
,Azure
等の選択肢が豊富なクラウドですが、当時はまだ情報も少なく、ましてSalesforce
となるとかなり狭いコミュニティだったと思うので、学習には随分苦労しました。
後から振り返ると、ここでアーキテクチャやDBの設計、コーディング、テスト等々の一通りの経験を得られたのは大きく、OJT的な状況下で大変ではあったけど充実していました。
並行してJavaを触る
並行してJava
を使ってSOAP通信を捌くプログラムを書いていました。
Salesforce
でクラウドの開発体験ができた一方、こちらはオーソドックスなクラサバ構成の開発体験(サバの割合が多い)ができました。
今はどうか分かりませんが、当時は研修やらトレーニングで「初学者はJavaでオブジェクト指向を学ぶべし」みたいな風潮が強く、横のつながりがあったエンジニア達も一様にJavaを学んでいたような気がします。
余興でビンゴシステム作り
他には忘年会で使うビンゴシステムを自作したりと、ちょっとした個人開発気分を味わったりしていました。
余談ですがビンゴシステムを作っていて「完全なランダムって難しいんだなぁ」とぼんやり思った記憶があります。
※詳しくは「カルドセプトサーガの悲劇」でググったりすると出てきます。下記記事が割と詳しく解説してくれていました。
資格はそこまで意識していなかった
最近のQiitaやZennでは、これくらいの年次のエンジニアで「XXXの資格をNヵ月の学習で取得しました」みたいな記事が散見されます。
それとは対照的に、この頃は特に資格は意識していなかったように思えます。
なんとなく拍が付きそうだからという理由で応用情報だけは取得しましたが、そこで得た知識が実際の開発で役立ったかというと全然そうではなかったので、あまり資格を重要視しなくなったのかもしれません(とはいえ、数年後に資格の鬼になる時期が訪れるのですが)。
2018年~ C#やReactと出会う
入社3年目あたりで環境が大きく変わり、今度はC#
(.NET
)での開発をすることになりました。
言語やフレームワークの違いも大きかったのですが、扱うシステムの規模感が今までと違い、様々なタスクが同時に降ってくる環境でかなり面食らった記憶があります。
同時に、ある程度自分の裁量でタスクを処理することを求められる時期だったので、タスクの重要度のトリアージと工数予測の勘所については、この時期に随分と伸びたなと感じました。
はじめてのReact
それから暫くすると、新しくWebシステム開発を行うことになり、そこで初めてReact
とTypescript
に出会いました。
少なくとも自分の周りではReact
というかSPA
という考え方がまだそこまで定着していなかった時代です。
クライアントサイドでやることといえばjQuery
を使って簡単に画面を動かすくらいしか知らなかった人間がいきなり仮想DOMなどの考え方を理解するのは大変で、React
の取得にはそこそこの時間を要しました。
調べれば調べるほど「ルーティングはどうするんだ?」とか「画面をリロードしたらStateは全て初期化されるのか?」とか分からないことだらけの状態でしたが、 「なんだか難しそうだけど最先端の技術で開発できている感」 が楽しく、同時にワクワクしていました。この感覚はエンジニアの性なのかもしれません。
React
よりも理解に時間がかかったのはRedux
です。
現在はJotai
やRecoil
など、様々な状態管理ライブラリが登場していますが、この時代の複雑な状態管理はRedux
一択といった感じでした。
Action
やReducer
など覚えないといけない概念が多く、ググっても答えにたどり着けないケースが多々あったのでなかなか苦しかったです。
技術記事を書き始める
そんな経験もあって「これからは自分で調べたりして覚えたことはどんどん発信していこう」という意識も芽生えてきました。Qiitaのアカウントを作ったのはこれくらいの時期です。
学生の頃は作家志望だった時期もあったので、自分が理解した内容を文章に起こしてパブリックに公開するのに抵抗や苦手意識は全くなかったです。
今でこそメインは個人ブログやZennになってきましたが、この時期のQiitaにはとてもお世話になりました。
あと、この時期にGit
を使い始めました。
それまではVSS(Microsoft Visual SourceSafe)を使っていたのですが、React
で新しくプロジェクトを作ったのをきっかけに、社内にGitlab
サーバを立ててそちらで管理していました。
ブランチやコミット、マージリクエスト(GitHubでいうところのプルリク)の考え方など、当時は新鮮に感じていた記憶があります。
レンタルサーバで色々と作り始める
個人開発、なんて大仰なものではなかったですがこの時期から自分で興味のある技術を触ったり、人に頼まれてちょっとしたシステムを作る機会が多くあり、レンタルサーバであれこれしていました。
頼まれた内容で一番多かったのはWordPress
でサイトを立ち上げたいんだけど、ちょっと手伝ってくれない?といったものでした。
そのせいもあってかドメインや証明書まわり、CMSの基礎知識が自然と身に付きました。
また、Twitter
のAPIを駆使してBotを作るのにハマったこともあり、自ずとREST API
やOAuth
あたりの知見も深まりました。
2020年~ ReactNativeでアプリ開発
Zennがローンチされてすぐにアカウントを作って「とにかく毎日記事を書こう!」と意気込んでいた時期です。
この時期からtoCのスマホアプリ開発がタスクの中心になってきました。
React
のスキルがそのまま活かせそうということでReactNative
を扱っていくことになりました。
AndroidとiOSの両方でリリースするということで、ここで初めてMacを触ることになります(※開発自体はWindowsでもできるが、最終的なビルド・リリースにはMacが必要)。
余談ですが、この頃はクラスコンポーネントから関数コンポーネントへの移行期でした。
ReactNative
の書き心地はほぼReact
と変わらずだったので問題なかったのですが、どちらかといえばAndroidやiOSなどのネイティブ固有のお作法(プッシュ通知、カメラ・ストレージアクセス、データの保存先など)でハマることが多かったです。
というのも、ReactNative
を触る開発者のほとんどは先にJava
やSwift
でネイティブアプリ開発を経験しているものだと思いますが、その段階をスキップしてしまったので割と初歩的なところが分からなくて大変でした。
ある程度板についてきたと思った頃に、思い切って教本を作ったりしました。
今読み返すとだいぶ粗が目立つ内容ですが、当時は色々な人に感想を貰ったりして小躍りしていました。
社外の世界を知る
この時期がいちばんコミュニティ活動に力を入れていた時期です。というのもReactNative
は黎明期だったこともあり非常にニッチで、Qiitaや個人ブログでも情報を集めるのが難しかったからです。
GitHub
のIssue
を眺める癖がついたのもこの辺りですし、ReactNative Matsuri2021
などのイベントにも参加したりしました(下記記事参照)。
必然的に他社のエンジニアの活動が目につきやすくなり、自分と同世代なのにコミュニティの最前線をガンガン走っている人、学生の内からすごい実績を上げた人なんかを目にしたりしてブルーになったりもしました。
ブルーになった要因として、同世代の友人たちがキャリアアップのために転職したり、結婚や出産でライフステージが変わるのを目にしやすかったのもあるのかなと思います。
※当時は知らなったんですけど、これ 「クォーターライフクライシス」 っていう名称があるらしいです。
そんなこんなありつつも、大きな不調もなく今日この日までやってこれているのは、やはり刺激的で良い環境に身を置いているからなのかなぁ、とぼんやり思ったりしています。
個人ブログを作ってみる
エンジニアたるもの個人ブログを作るべし、という謎な思想に染まった時期があり、せっかくなら新しめな技術の勉強もしたかったのでGatsbyを使って個人ブログを作りました。
アップデートに追従するのが大変だったり、SEOまわりで苦労したりして今は更新していませんが、NetlifyでヘッドレスCMSやホスティングあたりを勉強できたのは割といい経験だったかもしれません。
DAOとノーコード
学生の頃から投資は積極的に行ってきており自動取引Botなんかを作ったりもしていたのですが、この時期は仮想通貨のコミュニティがアングラ感があって楽しかったです。
ブロックチェーン等の技術的な話ももちろん興味はありましたが、どちらかといえば通貨を保有している人たちがわいわいコミュニケーションを取っている、あのお祭り感が好きでした。
BTCやETHといった有名どころよりも、マイナーな草コイン系コミュニティのディープな雰囲気が楽しく、そこで「その通貨が使用できる店舗一覧アプリ」なんかを開発したりしていました。
とはいえ草コインは流行り廃りが激しく、熱しやすく冷めやすい温度感だったのでスピード感ある開発が求められます。とてもスクラッチ開発している余裕はなかったので、主にノーコードで開発していました。
今は割と色々なツールが登場していますが、当時はGlideくらいしか実用的なものが見つからなかったと記憶しています。
その頃にDAOという言葉があったかは覚えていませんが、そういったコミュニティの走り的な感じだったのでしょうか。
2022年~ AWSにどっぷり浸かる
いくつかのスマホアプリをリリースした後、本格的にAWS
で動作するWebアプリケーション開発を始めました。
これまでもSalesforce
やGCP
、Firebase
などをうっすらとかじっていましたが、しっかりとクラウドで動くものを自分でゼロから考えて作るのは初めてでした。
リソースへのアクセス権限周りや、ログ管理・アラート設定など、うっかりすると大きなセキュリティホールになったり従量課金でエラい目に遭ったりするので、割とおっかなびっくり作業していました。
同時に、インフラ管理を手作業でなくコードで行うことができるCDK
(AWS
が提供するIaC)がとても性に合っていたようで、どんどんのめり込んでいきました(様々なアーキテクチャを一発でスクラップ&ビルドできるのが楽しい!)。
AWSは割と性に合っていたようで勉強するのも楽しく、資格もガンガン取っていたりします。
AWSにはAWS All Certifications Engineersという全資格取得者に対する表彰制度があり、いつかこれを取るのが当座の目標になっています。
立場も、取り巻く環境も変わる
ポジション的には中堅どころとなってきたので、自分が手を動かすだけでなく後進を育成したり、チームが開発しやすい環境を整えたりと今までとは異なるスキルが必要になってきたのを感じました。
過保護すぎず、放任すぎずの塩梅は今でもまだベストポジションが見つかっておらず、人を育てるって一筋縄ではいかない事なんだなと実感する毎日です。
AIが急速に成長してきたのもこの時期で、いつの間にか毎朝のルーティーンに「ChatGPTへログインする」が加わっていました。
他業界のことについては明るくないので何も言えませんが、少なくとも自分自身の生産性は随分と上がりました。
振り返ってみて感想
総じて「エンジニアという職業を選んで良かったな」と感じられる10年間でした。
常に勉強が必要なので向き不向きは確実にある職業なのかなと思います。自分の主観で切り取った10年間ですら今と昔で扱っているものが全然違うので、業界の最前線で戦っているような方はそれをもっと強く感じていることでしょう。
学生だった頃は「エンジニアってブラック労働が多い」なんてイメージが多かったですが、今では広く門戸が開かれ働きやすい環境が整備されていると思います(これも主観ですが)。
特別エンジニアとして優れているわけでもない自分がここまでやってこれたのは、ひとえにZennやQiitaなどで知見を共有するエンジニアの文化があったのではないかと感じます。訳の分からないエラーで長期間ハマりかけた時に、LGTMは少ないけど問題をクリティカルに解決してくれるニッチな記事に救われたという経験をしたのは私だけではないでしょう。
この辺りがある種エンジニアという職業の楽しさの一つだと思っているので、これからもどんどん知見共有は行っていこうと感じました。
また、アウトプットを心がけるようになってからインプットに対しても貪欲になりましたし、何より自分以外の人に情報を伝達するスキルが向上したことを実感しています。これはエンジニアに限らず、仕事をしていく上では必要不可欠な能力です。
これから
自分の中で「キャリアのVSOP」という考え方を割と大事にしています。
ざっくり説明すると年代ごとにキャリアで重要視されるものは異なっている、という考え方で
- 20代はバラエティ=色々なことにチャレンジして引き出しを増やす
- 30代はスペシャリティ=得意領域を伸ばしプロフェッショナルになる
- 40代はオリジナリティ=自分なりの色を付け加えていく
- 50代はパーソナリティ=「○○さんだから仕事を頼みたい」と言われるようになる
を各年代で意識するといいよ、という話です。
ここまで書いた通り、20代はエンジニアとして色々なことを試したりできたのかなと思っています。
そして今30代に入って、どの領域を伸ばしていこうかと模索中な状態です。
好き嫌いでいえば今のクラウドまわりがすごく好きなのですが、それがずっと通用するかと聞かれると疑問符が浮かびます。
月並みですがAIやブロックチェーンあたりをもっと伸ばしていきたい(いかなければ)とも思うので、今までやってきたことと上手く絡めながら極めていければと思います。
おわりに
まとまりのない文章になってしまいましたが、自分なりにこの10年間をまとめてみました。
同年代のエンジニアの方には頷いていただける部分もあるのではないでしょうか。
また、駆け出しのエンジニアの方々には「昔はこんな感じだったんだぜ」という空気感が少しでも伝わったら幸いです。
ここまで読んでいただきありがとうございました。
また他の記事も読んでいただけたら幸いです。
Discussion