10000人以上のプロフェッショナルが集まるコミュニティに参加してディスカッションに参加しませんか?
無料サインアップでコンテンツにアクセスが可能になります。

シニアエンジニアへの壁が高い

自社開発のwebサービスのチームにいます。将来的に昇進してシニアエンジニアになりたいと思っていますが、その手前で数年間停滞している感覚があります。

欠けているのは明確で「システム全体に対する俯瞰的な理解」です。単に知っているというだけでなく、大体あそこら辺が問題になりそうというのを直感的に素早く気づけるような能力です。

自部署のシニアエンジニアはここに長けているからこそ、アーキテクチャ設計や開発プロセス改善を時間をかけすぎずに回せているのてすが、そのほとんどは性質上暗黙知であり、教わることが不可能(教えようと思っても教えられない)というのが大きな壁です。


自分の経験不足を補う試行錯誤はいろいろしており、業務の空き時間に他人のタスクや過去の事例を調べたり、社内wikiの個人スペースに大体100ページくらいドキュメントを作って定期的に見返したり、またここ半年は土日もほぼ全て学習か個人的な開発に割いています。

ただそこで得たものがどうしても局所的な知識にとどまっていて、それらを結びつけて視野を広げることがずっとできていない感覚です。

ここをなんとか超えなければ自分のキャリアが危ういと感じていますが、みなさんはどのような工夫をされたでしょうか?

(編集済み)
12

コメント一覧

やはりプロダクトの立ち上げから拡張を開発、インフラ面含めて一通りやらないと、いくら同じ会社で職歴を続けてもシニアに必要なスキルを身につけるのは難しいと思います(無理だとは全く言いません)

インフラが弱いならインフラ構成をたくさん考えて実装、開発が弱いならバックエンドなど、システム全体への理解のうち、理解度が浅い箇所を掘るのがいいのかなと感じました。得意不得意の濃淡は誰にでもありそうだからです

投稿者

確かにDBやインフラ構成に起因するものには本質的な理解ができていないですね。あまり個人的にも経験を積んでいなかったので、そこに力を入れてみます。

エンジニアに限らない話だと思いました。

メタ認知を鍛えることが有効だと思います。まずは本から。

澤円さんの「メタ思考」などはとっつきやすくて入り口に良いと思います。

投稿者

ありがとうございます!ぜひ読んでみます。

そこまでやられているなら、技術力もあるのでしょうし、時が解決するのではないでしょうか。

もし根本的に理解できないのであれば、業務ではなく、CSの教科書に戻ることも必要だとは思いますが。


その上で大規模な会社でシニア、スタッフに上がりたいのであれば、技術力よりも組織やチーム外へのインパクトが必要になってきます。逆に技術力だけではキャリアが頭打ちになるので、色々なチームと嫌なやつにならずにコミュニケーションするスキルの方が必要になってきます。

技術力だけで戦うだけがテック企業で生きる道ではないので、あまり悲観的にならないで大丈夫かと思いました。

投稿者

まさにそうですね。今まで自分の技術力にばかり目を向けていて、組織やチームの改善という視点があまりなかったと感じています。実際にエース級の人を見てみるとコミュニケーションにも長けている印象です。

『ドメイン駆動設計をはじめよう』は読まれましたか?


私はこれを読んではじめてDDDを自分の言葉で語れるようになりました。


第一部では、ビジネスの業務領域のカテゴリー分けのやり方が書いてあり、専門家が使う言葉の整理と文脈の整理方法が書かれています。


同じ言葉と区切られた文脈で整理して、課題を解決できるマップを作るところから始まります。


ここで整理されたいわゆる「ビジネス」が、第二部で実装される「コード」につながっていきます。


DDDは難解で、意味論的な不確実性にのみこまれがちですが、この本で理解した考え方で整理していけば、おそらく「ビジネス」というシステム全体とそのコードの対応が理解できてくるのではないかなと思います。


結局システム全体の設計についても、顧客の課題を解決してお金をもらうという商売をいかにうまくやるかなので、「ビジネス」と「コード」をシームレスにつなぐことができるDDDはソフトウェア開発者としての武器になると思います。


DDDで目的を明確にし、具体的なアーキテクチャは『クリーンアーキテクチャ』などをベースとして実装することで、実際の業務に活きるソフトウェアを構築できるはずです。


私の認識範囲では、このこそこそが「システム全体を俯瞰した理解と構築」だと考えています。


少しでも参考になれば。

投稿者

DDDは個人的にもとても興味があります!「実践ドメイン駆動設計」は何度も読み返していますが、完全には理解していないのでその本も読んでみます。

開発対象のアーキテクチャ理解も大事ですが、

これどうやって実現してるの?と思ったらすぐに下回りのコードを読んで有識者に確認する。

なんでこの実装してるんだろう?と思ったら自分なりの仮説を立てて有識者に確認する。

これもっとうまく書けないかなぁと思ったら、下回りのコードの改善提案してみるとかもよくやってました。

自分だけで勉強するのでなく、仮説ぶつけてフィードバックをもらうスタイルで。

私は人よりペインを感じるのが早く、常にもっとよくできないか、前やった似たようなことはもっと良いものを早くできないかを考え続けてます。

経験は考えた物量(時間×深さ)に過ぎないと思ってます。

投稿者

もっと良いものを早くというのはとても重要そうですね。シニアエンジニアは会議なども入って明らかに忙しそうな中でタスクもこなしているので、自分のやり方に満足していては足りなさそうです。

そうかなあ。

あなたがシニアエンジニアっていうロールを与えられたらそれなりの動きをしそうだけど...

自分自身も他人もあなたにレッテルを貼ってあなたの活動を制限してる側面もありそう

投稿者

まさに似たようなことを言われたことがあります。「視座を上げろというが結局ロールに就いてみなければ視座は上がらない」という側面はありますね。この矛盾をなんとかしたいです。

コミュニティ
企業一覧
給料