ソフトウェアエンジニアになってから: 昇進と異動(と最高評価)
ありがたいことに、いわゆる文系・ビジネス職からベイエリアでソフトウェアエンジニアになった前回の記事は多くの方に読んでいただきました。改めてお礼を申し上げます。とはいえ、当然ですが、ソフトウェアエンジニア(以下、SWE)になって終わりではなく、SWE になってからもそれ以上に大切であり、実際に SWE 転向後、どのような経験をしたのか、現実的な点も含めて、この記事では書いてみようと思います。
結論から言うと、初めは知識や経験の浅さから苦労しましたが、最終的には社内査定でも最高評価をいただき、なんとか昇進、異動する運びとなりました。
SWE になってみて
まず、ポジティブな面から、状況整理も兼ねてお話しすると、自分は多くの方に使っていただいている製品・機能の Android アプリ(≠ Android OS)及び、そのバックエンドを担当することになりました(つまり、Android アプリがメインで、必要に応じてフルスタック)。これは期待以上の巡り合わせで、これほど多くの人に使われてる機能を、自分が担当していいんだ、貢献していいんだと、大きな責任を感じると共に、心が踊ったのを覚えています。
一方で、知識や経験の相対的浅さからくるキャッチアップの必要性もしっかり感じることになりました。この記事では主にそうした課題と、どのように対応したかの話が中心になると思います。あくまで 1 サンプルとしてお付き合い下さい。
SWE 勤務後に感じた課題
自分が SWE になって感じた課題は主に「知識と経験の差」と「業務への取り組み方の違い」の 2 つでした。
知識と経験の差
もちろん全員が全員そうではないのですが、自分の周りの同僚には、大学等でコンピュータサイエンスを専門的に学び、インターンなどで実務経験を積み、社会人になってからもしっかりと実績を積んでこられた方が多くいらっしゃいます。それに比べると -- 当然、選考を通じて業務に必要な要件は満たしているものの -- 自分の知識や経験は浅いなと感じる機会はありました。
特に SWE の業務は -- 私見ですが -- 知識や経験によって大きく効率が変わってしまうことがあり、例えば、バグに遭遇した際に「ああ、これはあの辺りに原因があるかもしれないな」という当たりがつかず、多くの時間を割かざるを得ない、という状況があり得ます(もちろん周りも助けてくれますが、やはり自分の生産性が全体の効率に寄与する部分は大きいと感じます)。
業務への取り組み方の違い
これは自分の中でも明確に言語化できてないのですが、自分が営業組織で培ってきた作業の癖と、SWE 業務の相性が悪い、ということがありました。具体的には、営業組織にいた時は複数のクライアントを担当し、また、クライアント毎に複数のプロジェクトが走るなど、単純に案件の数が多く、スピードが求められました。一方で(自分の場合)SWE になった後は、担当するプロジェクトの数が大幅に少なくなり、タイムスパンも長く、また、一文字でも間違えれば動かないというプログラミングの性質上、精緻さも求められる環境でした。
つまり、営業組織で最適化された行動規範が、かえって SWE 業務の邪魔をするというアンラーニングが必要な事態に直面しました。(ただ、個人的には「アンラーニング」という言葉は正確ではなく、元の作法も残したまま、新しいものを獲得し、必要に応じて使い分ける、という方が感覚に近いです)
自分が取った対策
キャッチアップ内容に優先順位付けをする
自分の担当が Android アプリだったので、まずは Android 周りの理解を深めようと試みました。また、業務中に複数回登場するトピックはメモしておき、それらを重点的に理解するよう努めました。
余談: 全員に強くはオススメしないのですが、当時は必死だったこともあり、Android のドキュメントを一通り読むということもしました。これにはいくつか有効な点があり、1. 薄っすらでも全体像がつかめる 2. 自分なりにトピックの重要度の判断がつくようになる 3. 業務中に出てきたトピックを拾えるようになる など、自分を助けてくれました。
パフォーマンスの高いエンジニアを真似する
パフォーマンスの高いエンジニアと自分では何が違うんだろう?ということも考えました。一番の大きな違いは、課題の部分にも書きましたが、一つのことを精緻に考え続ける「知的スタミナ」の部分でした。こればっかりは訓練だと思い、できるだけ自分の納得いくまで考え続けるということを繰り返しました。
また、本も読み、自分なりの理想のエンジニア像を具体化させながら、自分との差分を埋めるよう心がけました。
チーム外のメンターを見つける
自分だけかもしれないのですが、チーム内だとどうしても目の前の業務の話が中心になり、基礎的な話が難しい場合があります。具体的には、例えば、Android の基礎的な部分。「あれ、これってなんでこうなってるんだっけ…?」といった内容はチーム外のメンターに質問させてもらってました。(ただ、シニアになった今振り返ると、他にもやりようはあったかなとも思います。いつも親切なメンターがいるとは限らないので)
余談 2: こういう話をするとよく「どうやってメンターを見つけるんですか?」と聞かれます。恐らく簡単な答えはないのですが、1. 文脈の共有具合 2. 自分が求めるドメイン知識(3. メンタリング技術)などを軸に私は探すことが多いです。例えば、既にチームを離れたテックリードなどは 1 も 2 も満たしてピッタリなので、今もお願いしています。
自分の強みを活かす
今までは自分の弱みを減らす話が中心でしたが、自分の強みを活かすことも場合によってはできると思います。例えば、自分の場合、対人関係の仕事が多かったのでプロジェクト マネジメントの経験はあります。SWE になってもプロジェクトが大きくなれば、プロマネやリーダーシップが求められる機会も増えていきます。そうした「自分が貢献できるニッチ」を探して、弱みをカバーしながら活躍することも不可能ではないと感じました。
3 年弱、試行錯誤を続けて
上述の通り、初めの歩みは遅く、試行錯誤の日々でした。とはいえ、素晴らしい上司・同僚に恵まれ、支えられながら改善を続けることで、最終的にはなんとか最高評価をいただき、昇進させてもらう結果につながりました。
時々「何が高い評価につながったと思いますか?」とご質問をいただきます。これは意外と慎重にお答えしなければと思い、というのも、評価はある意味では相対的なものであり、具体的には(自分の環境では)期待された達成水準と達成度で決まります。加えて、個別事情も多く絡みます。つまり「〇〇をすれば大丈夫」と言えず、文脈依存で、一人ひとりに合ったアプローチが存在すると考えます。
その上で自分のケースをお伝えすると、オーナーシップ(ローンチやランディングに最後まで責任を持つこと)とリーダーシップ(多様なステークホルダーと方針を示しながら協働すること)が評価されたようでした。これらは、そう、自分が SWE になる前に培った強みでもあります。そのような点も評価される環境に身を置き、ありがたい話だなと感じ入りました。
実際に SWE として働いてみて
今回、最高評価について書くかは悩みました。あくまでイチ社内評価を公開で書く必要があるか?と思いました。ただ、少し珍しいものらしく「周りで取ってる人を初めて見た」と何人かに言われました(実際はそこまでは珍しくなく、周りに吹聴する自分のような人が少ないのだと推測します)。何をお伝えしたいかと言うと、畑違いからやってきた自分にとってその評価は「もしかしたらこの先もやっていけるのかもしれない」と思わせてくれた契機になった瞬間でもありました。
「強みを活かす」の部分でも書きましたが、実際に知識と経験面で追加の努力が必要な側面はあるかもしれません。ただ、少し人と違ったバックグラウンドがあるからこそ提供できる視点もきっとあると信じて活動しています。そして、弱みも克服できた日には、両者の特徴を活かすことで、ユニークな価値を提供できると信じて今日も一つ一つ取り組んでいます。もし… 自分と同じような境遇の方が読んでいらしたら「きっと活路はある」とお伝えしたいと思います。
最後に私事ですが、昇進を機に異動しました!7 月から AR/VR 分野で活動します。もしその分野、及び、HCI 領域で活動されてる方がいらしたらぜひ仲良くして下さい & ご指導のほどよろしくお願いします。
今回も読んでいただきありがとうございました!!