nunulkのプログラミング徒然日記

毎日暇なのでプログラミングの話題について書きたいことがあれば書いていきます。

50代のフルスタックエンジニア

はじめに

この記事について

以下の記事を読んでわりと「うんうんわかるわかる」と思いながら読みましたが、50歳に至るまでの間にもうひとつ別の景色も見えてきていたので、そのあたりを一度言語化してみようという試みです。

note.com

フルスタックとは

上記記事へのブコメには「フルスタック」と書きましたが、自分としてはあまりフルスタックと名乗りたくない、という気持ちはありまして、普段は「ウェブアプリケーションエンジニア」と自称しています。 ただ、今回は、元の記事に合わせるために本記事における「フルスタック」の定義を定めておきます。

以下の領域の技術を理解し使える

  • インフラ
  • バックエンド
    • サーバーサイドのアプリケーションに用いる言語やライブラリ
  • フロントエンド
    • クライアントサイドのアプリケーションに用いる言語やライブラリ

すべてを理解している必要はなくて、3つの領域それぞれに1つでも使えるものがあり、一人でアプリケーションを作り動かすことができれば「フルスタック(アプリケーション)エンジニア」と自称していいのではないか、というスタンスです。自分はウェブサービスに従事することが多いので、必然的にウェブアプリケーション関連の技術になりますが、モバイルクライアントを含む場合もあるでしょうし、あまりないとは思いますが、Firebase や Supabase あたりを主なバックエンドとして使うこともあるでしょう。しかしそれらはあくまでバリエーションであって「これができないとフルスタックとはいえない」という技術ではないかなと思っています。

追記:「フルスタック」という言葉に関して補足記事を書きました

フルスタックエンジニアについて - nunulkのプログラミング徒然日記

技術領域(ハードスキル)

流行について

3つの領域すべてで、最新の情報をキャッチアップするのは無理になってきました(というか諦めつつある)。 「エンジニアに若いも若くないもない」というコメントもありましたが、個人的には年齢は間違いなく関係あると思っています。ただし、それは他者との比較ではなく過去の自分との比較です。元記事にも「若い頃の自分は〜」という記述もあるので、その視点は含まれているでしょう。

現在の視点から未来の視点を持つことは(若ければ若いほど)難しいと思います。年を取るにつれて(というより経験を積むにつれて)新規の技術や流行に対して昔ほど貪欲でなくなりました。いくつか例を挙げるとHotwire は出てわりとすぐ触りましたが htmx はまだ触ってません。Rust は最近使い始めましたが、去年からなのでだいぶ遅い部類でしょう。Go は自分には合わないと思うのでほとんど書いてませんし、仕事で使うつもりもいまのところありません。興味に任せて片っ端からやるのではなく、自分に合いそうか好きになれそうか、という視点でやる/やらないの判断するようになりました。そうした姿勢が選択の幅を狭めているともいえますし、効率が良くなったともいえると思います。

とはいえ、仕事で使う局面になったときにサッと使えるようにしておく、というのは大事だと思っていて、その辺の見極めもできるようになっておく必要があるので、とりあえず1回触っておくようにはしています。

具体例としては、DynamoDB、AWS Lambda、Next.js、辺りは実務で使う前にあるていど触っていたので、助かったです(その意味では、Go もいまの仕事で使うとなれば喜んで書くつもりではいます)。

その点、バックエンドは比較的安定してますね。どれか一つエキスパートレベルで使える言語やフレームワークがあれば(あとは SQL)、あまり流行を追う必要はなさそうです。

技術領域に関しては、イノベーター、アーリーアダプターである必要はありませんが、アーリーマジョリティーくらいの位置でいたいとは思います。

態度について

大事なことは、できないことはできないと自覚し、できる人の言うことを聞く、ということです。自分はフルスタックといえど、3つの中ではフロントエンドが苦手領域なので、チーム内に自分よりできるメンバーがいるときは弟子になったつもりで取り組むようにしていますし、得意な部分に関しても、自分がぜったい正しいとは思わないように、チーム内でのコミュニケーションは欠かさないようにはしています。

複数の選択肢があったとき、どれを採用するかは自分の得意不得意にかかわらず根拠を明確にしたいという気持ちがあって、得意な領域であればもちろん、不得意な領域に関しても不得意なりにそれぞれの選択肢についてその根拠に自分が納得できるかどうかは大事にしたいです。不得意であることをそのままにしておくのであれば、その領域には手を出さないほうがいいですし、やるからには常に上達できるように選択の根拠に限らず土台となるような部分を疎かにしないように心がけたいです。

非技術領域(ソフトスキル)

結婚について

元記事では結婚の話が出ていましたが、自分が結婚したのは32歳のときでした。当時は SI の仕事をしていてかなり忙しく、結婚する前のデートでは22時過ぎに待ち合わせして飲みに行く、みたいなこともしてました(よく付き合ってくれてましたね…)。

仕事一辺倒ではダメ、というのはわりと昔から思ってはいたものの、若い頃は深夜2時まで働いて翌日9時から仕事、みたいなことをやっていたので、どうしても活動範囲が狭くなりがちでした。幸い職場に女性がわりといたので(2割くらい)、社内恋愛もできましたし、出会いの場としての職場、というのは、結婚を考えると貴重な存在だったなぁと思います(といいつつ、妻は元同僚ではなく友人の紹介で知り合ったんですが)。

当時の自分はまったく結婚する気がなかったんですが、いまとなっては心の底から結婚してよかったと思うので、この選択をした過去の自分にこの場を借りて感謝します。ありがとう、よくやった、G☆J。

夢と希望について

個人的には「夢」とは「具体的施策のない遠い目標」のことだと思っていて、そこに至る道筋や施策を用意できればそれはもはや夢ではなく単なる目標だと思います。最終地点までの道筋は見えなくても、少なくとも次のマイルストーンが見える状態を維持できれば自然と実現できるものになるはずです。

熱意だけでなにかに挑むことは、この年齢ではできなくなってしまいました。それはいい面もあるし悪い面もあるだろうと思うんですが、自分は長所を伸ばすことを重視しているので、悪い面には目をつむり、経験を活かして確度を上げることに注力していきたい所存です。

ちなみに今年の目標の一つが「ハイキック」(正確には 蹬腳 という太極拳の動作)なんですが、いまはまったくできるイメージが持てず、すでに2ヶ月が経とうとしているので少し焦りが出てきています。

2023年のふりかえりと来年の抱負 - nunulkのプログラミング徒然日記

おわりに

自分はわりと過去を振り返らない質なので、あのときの態度や判断がどうだったかとかは普段あまり考えないんですが、過去の自分の態度や判断を正解にするような未来を作る、という姿勢はありだと思っていて、自分に都合のいいように解釈することで、得るものと失うものがあるわけですが、どうしたって自分のことなのでバイアスもありますし、いちいち過去の自分を否定していても疲れるだけなので、どうせならポジティブに捉えたい、という気持ちです。 50歳になったいま仕事・プライベートともに満足しているので、そういえるだけなのかもしれませんが、大事なのは、どのような結果であってもポジティブに捉える姿勢を持ちつつも、できるだけ未来の自分が満足できそうな結果を積み上げていけるかどうか、なのかなという気がします。

勢いで書いてしまったので、いつも以上に雑な文になってしまいました。読みづらかったらすみません(あとで清書するかも)。