どうも新田です。大変しばらく、ブログから離れていました。。
時間を見つけては、発信しようと心がけていたのですが、なかなかアウトプットができない日々でした。しかし!忙しさを言い訳にしてはいけない!と奮起。昼休みにこのブログを書いています。
最近自分はプロダクトを通じて「エンジニアリングマネージャ」すなわちエンジニアチームのマネージャと接する機会が増えています。
その中で、「良いチームを構築するにはどのような実践をしたらよいか」を考えたり、外部に発信していかなければなりません。
そこで「エンジニアリングマネージャ」という視点でUberのエンジニアの方が書いている興味深い記事をみつけましたので、日本語訳してみました。エンジニアマネージャの方には是非読んでみていただければと思います。(スーパー他力本願)
【※追記※】ご指摘をいただいたので追記しますが、もちろん本人の許可をいただいております。
that’s the great, thanks! as long as you keep a link to the original article I am okay with it ☺️
— Gergely Nemeth (@nthgergo) November 2, 2018
[原文]Coding as an Engineering Manager
エンジニアリングマネージャとしてのコーディング
私はエンジニアリングマネージャとしてこれまで4年間働いてきました。 最初は「RisingStack」のco-founderとして、次に「Godaddy」、そしていまは「Uber」です。 これら全ての組織で、私は tech lead engineering manager と people engineering managerの間を担っています。
この記事は私がどのようにして開発をマネージしてきたかを可能な限りおみせし、その教訓をまとめたものです。もしあなたがコーディングの大好きなエンジニアリングマネージャで、この記事が少しでもあなたの組織でも活用できるアイデアになれば幸いです。
もしあなたがこれらの種類のエンジニアリングマネージャについて知りたければ、Benjamin Enczさんが書いた「Flavors of Engineering Management」を読むことをおすすめします。
コードレビューから学ぶ
エンジニアリングマネージャとして、私はコードレビューはコードベース全体の品質を保証するだけでなく、ナレッジを共有するという性質という意味でも非常に役立つことを発見しました。 私は、品質を保証する方法のためではなく、コードベースで適用された変更内容をブロードキャストするチャンネルとしてコードレビューを見ています。
エンジニアマネージャにとって、コードレビューは
- プロジェクトの状況について理解すること
- 新しいチームメンバーのメンター
- チームが過去に見逃していたかもしれないことに関する会話を明確な質問によって活性化すること(※ここの翻訳難しい)
にとって素晴らしい方法だと思います。
バグフィックス/小さな機能開発に取り組む
もしあなたがコードベースに取り組む時間があってコーディングをしたい場合は、小さなバグのフィックスや小さい機能に取り組むことを強く推奨します。
バグ修正に取り組むことで、コードベースの幅や深さを把握し、どのように動作しているかを理解しながら、チームにとって役立つものを返すことができます。
機能開発に関しては、私はもっと慎重になります。あなたのスケジュールは時に予測ができません。 あなたは予期せぬ会議に呼び出されることがあるため、簡単にチームをブロックしてしまう可能性があるのです。
メンタリングとティーチング
もしあなたが近くにプログラミングスクールやコミュニティが主導しているメンタリングセッションがある地域に住んでいて、出席する時間があれば、是非お試しください。 (※コミュニティが先導するメンタリングセッションってなんだ)
フォーマットに従い、、物事が与えられた方法でなぜ動くのかについて沢山説明をペアプログラミングやティーチングを通じておこなうことができます。
メンタリングイベントを探すには、 meetup.com をお試しください!
JavaScript / Node.jsに関わっている方であれば、初心者のJavaScriptとNode.jsを教えるためのグローバルワークショップシリーズである「NodeSchool」をチェックすることをおすすめします。
オープンソースプロジェクト
また、私がオープンソースプロジェクトをメンテナーやコントリビューターとして働くことは素晴らしい仕事でした。
Godaddy時代には、私は正常なシャットダウンとヘルスチェックを扱うNode.jsのオープンソースライブラリTerminusを開始しし、それ以来このライブラリを維持してきました。 Node.jsとKubernetesでライブラリを構築することで、両方のテクノロジーから入ってくるPull Requestやissueを通じて、ライブラリを最新状態に保つ事ができます。
オープンソースプロジェクトをやりたいが、プロジェクトを持っていない場合は、GitHubの "help wanted"や "good first issue"というラベルを検索して、既存のプロジェクトに参加することをお勧めします。
結論
あなたが実践しているエンジニアリングマネジメントの種類によっては、もしかしたらコーディングをするチャンスがあるかもしれません。 もしそのような場合は、時間的な制約を受けない小さなタスクを選ぶように心がけてください。あなたはチームをブロックしてはいけないからです。