人、製品、テクノロジー:エンジニアリング管理の初心者向けガイド

公開: 2022-03-11

ソフトウェアエンジニアとして、あなたの責任は通常非常に明確に定義されています。タスクはあなたに割り当てられ、あなたの仕事はそれらを時間通りに効果的に実装することです。

ただし、エンジニアリングマネージャーの役​​割では、責任が明確に定義されていないことがよくあります。 管理はバイナリではありません。 特定の質問や問題に対する直接的な答えはありません。 あなたがマネージャーとしてどれだけ成功するかは、あなたがあなたの人々をどれだけうまく導き、あなたの製品を管理し、そしてあなたの技術を管理することができるかに依存します。

人々はあなたの優先事項です

エンジニアリングマネージャーの役​​割では、新しい優先順位はチームです。 では、どのようにして素晴らしいチームを確保するのでしょうか。

チームの構築と信頼の確立

最初のステップは、チームがまだ配置されていない場合に、チームに適切な人材を確実に採用することです。

悪い採用は彼らの時間を無駄にするだけでなく、たるみを取り戻す必要があるあなたの他のチームメンバーの時間を無駄にします。 これにより、チームの他のメンバーの士気が低下します。 人が優秀なプログラマーであっても、チームの文化にうまく適合していなければ、彼らは悪い雇用になる可能性があります。

技術的な質問だけでなく、チームでの作業やリーダーシップの役割についての自由形式の質問も必ず行ってください。 たとえば、候補者に尋ねます。

  • 彼らが解決しなければならなかった最近の問題を説明するために
  • ソリューションの実装方法
  • 彼らが検討した代替アプローチ
  • 彼らが生産において重大な問題を抱えていた時期、彼らがそれにどのように対応したか、そして将来同じタイプの問題を防ぐために彼らが何をしたかについて話すために

チームができたら、チームの尊敬を集め、信頼を確立するために時間を割いてください。 チームを効果的にリードするには、チームメンバーとの健全な関係を築く必要があります。 彼らのキャリアの目標と彼らにとって何が重要かを理解するために時間をかけてください。

1対1の会議は、各チームメンバーとの絆を築き、チームメンバーをよりよく知るために不可欠なツールです。 理想的な1対1の会議の頻度はどれくらいですか? それはチームメンバーの特定のニーズによって異なりますが、少なくとも月に2、3回はチームメンバーと会うことをお勧めします。

ただし、あなたとあなたのチームが緊密に協力している場合、または大規模なチームがある場合は、月に1回会議を行うことができます。

エンジニアリングマネージャーがチームに力を与え、改善する方法

あなたの仕事の大部分は、個々のメンバーの長所と短所を特定することにあります。 上級エンジニアとペアを組み、頻繁にコードレビューを実行することで、弱点に対処し、長所に焦点を当てることができます。 結局のところ、私たちをやる気にさせ、私たちが楽しんでいることを形作るのは私たちの強みです。

各エンジニアの能力と特性に基づいてタスクを割り当て、各人から最高のものを引き出し、優れたチームを作成します。 自動化は、この点で大いに役立つ可能性があります。 継続的インテグレーションを設定して、壊れたコードまたは最適ではないコードと、そのようなコードを頻繁にコミットする人を特定します。

チームメンバーは、自分やチームにとって重要な分野で常に学び、改善し、成長しようとします。 昨年、各チームメンバーにとって意味のあった役割と責任は、今年はもはや適切ではない可能性があります。 各チームメンバーが挑戦し続け、改善し続けることを確実にするために:

  • 彼らの個人的な成長に細心の注意を払い、彼らの成長に投資し、彼らが彼らの野心を達成するのを助けてください。
  • チームメンバーと個別に会って、個人的な開発計画を作成し、チームメンバーがキャリア戦略を立てられるようにします。
  • 自己啓発のために余分な時間を割り当て、チームメンバーが定期的に役割を切り替えられるようにし、社内のワークショップやトレーニングコースを開催するようにしてください。

エンジニアリングマネージャーの責任は、全員の専門的な成長を確保することに加えて、チームを保護することです。 失敗を恐れることなく、チームが意思決定を行えるようにする必要があります。 物事が失敗した場合は、責任を持って間違いから学びましょう。

これにより、チームは新しいアプローチを試み、成長マインドセットを開発するときに、大胆さを育むことができます。 とはいえ、適切なフィードバックを提供し、チームを正しい方向に導くためにタイムリーな行動をとっていれば、間違いは2回以上発生することはありません。

プロダクトマネージャーとエンジニアリングマネージャー

エンジニアリングマネージャーの役​​割の2番目の重要な側面は、製品です。 期待を一致させ、テクノロジーとチームのスキルを活用して優れた製品を提供するには、プロダクトマネージャーと緊密な関係を築く必要があります。

追求すべき6つのエンジニアリングマネージャーの責任は次のとおりです。

プロジェクトの優先順位が適切であることを確認します

あなたのチームの6〜12か月の目標は何ですか? あなたの聴衆は誰ですか? あなたの顧客は製品に何を期待していますか? あなたのチームはおそらく、今後数週間で何に取り組むかを知っていますが、製品全体とその方向性を理解することが重要です。

製品開発の決定に関与する

エンジニアリングマネージャーは、さまざまなチームと協力して、個々の貢献者よりも製品の方向性と製品の更新に従事します。 製品に関するすべての決定に必ずしも同意する必要はありませんが、製品を信じて、より良くしたいと思う必要があります。 あなたが彼らの決定に同意しない場合、あなたは製品マネージャーに挑戦することができますが、製品マネージャーが最終決定権を持っていることを覚えておいてください。 彼らを尊重し、彼らの決定を支持します。

技術戦略と開発方法論を定義して推進する

プロダクトマネージャーの仕事は製品の戦略と概念を定義することですが、あなたの役割は製品のアーキテクチャのビジョンと技術設計を定義することです。 また、開発方法論を定義し、チームによる採用を確実にする責任があります。 注意:プロダクトマネージャーが製品を所有している場合でも、あなたとあなたのチームが製品の実装を所有しています。

場合によっては、わずかなエンジニアリング作業で役立つ機能を実装できる可能性があります。 たとえば、製品が使用するフレームワークの新しいバージョンにアップグレードすることで、特定の機能をより速くまたはより効率的に実装できるかどうかを確認します。 製品の概要を把握しておくと、あなたとあなたのチームがそのようなケースを特定し、製品マネージャーに提案するのに役立ちます。

技術的負債の作成と返済、および新機能の開発のバランスをとる

最小限の実行可能な製品を構築する場合、市場投入までの時間が最優先事項であるため、技術的負債がいくらか蓄積される可能性があります。 製品が進化するにつれて、焦点は新しい機能の追加と製品の改善に移り、技術的負債を返済します。 最初に行ったトレードオフに対処しないと、新しい機能の追加に時間がかかり、コストも高くなります。 時間をかけて、行った妥協点を理解して追跡し、債務の解決と新機能の追加のバランスを見つけてください。

テクノロジーと自動化を使用して、技術的負債の管理を支援します**

ソースコードの静的分析を使用して、保守性インデックスの数が最も多いコードを特定し、コードのリファクタリングに優先順位を付けます。 これにより、新機能の開発が容易になり、製品のパフォーマンスが向上します。

製品の実行が順調に進んでいることを確認します

チームの作業の現在のステータスを理解している必要があります。 チームが予定より遅れている場合は、明らかなブロックを特定して削除します。 たとえば、チームが定期的に技術的な問題に悩まされている場合は、チームメンバーの知識共有を改善するために、頻繁なペアプログラミングセッションを設定します。 チームがサーバーへのコードのデプロイに多くの時間を費やしている場合は、プロセスを自動化して時間を節約し、エラーが発生しにくくします。 中断を最小限に抑え、新しい作業を引き受けてバグレポートに対処する方法について明確なプロセスを作成します。

テクノロジーと委任

あなたはまだエンジニアですが、マネージャーとして、ソフトウェアソリューションの開発はもはやあなたの主要な機能ではありません。 チームには上級エンジニアがいて、ほとんどの技術ソリューションを担当しています。 将軍はライフルで戦争をしません。 管理者は、コードのすべての行を細かく管理する必要はありません。

ただし、知識と経験を使用して、上級エンジニアが下した決定が製品の技術ロードマップと方向性に適合していることを確認する必要があります。 技術的な決定を上級エンジニアに委任しますが、製品がスケーラブルで、安全で、信頼できることを保証するために適切な質問をします。

たとえば、 「ユーザー数が20倍になった場合はどうなるでしょうか? それは持続可能でしょうか?」 または「このテクノロジーは2、3年後もサポートされますか?」

知識と専門分野に基づいて代替ソリューションとフレームワークを提案することはできますし、提案する必要がありますが、チームにそれらを受け入れるように強制したり圧力をかけたりしないでください。 技術的な提案とは別に、開発プロセスと方法論に関連する推奨事項を作成することもできます。

また、製品の主要な指標を必ず監視してください。 ビジネスと技術の指標も同様に重要です。 DevOpsチームと協力して、システムを監視するためのアラームを作成し、運用上の問題についてチームに情報を提供し続けます。 最後に、インシデントが発生したときに対処して、再発しないようにするための方法論を開発します。

最後になりましたが、最新のテクノロジーとトレンドを常に把握してください。 選択肢が増え、知識が増えるほど、自由に使えるソリューションとフレームワークが増えます。 記事を読んだり、コードレビューを行ったり、チームとの技術的な議論に参加したりする時間を指定します。

技術的な問題についてよく知っているほど、チームはあなたを尊重します。 新しいテクノロジーに精通し、チームに同じことをするように促すことで、好奇心の雰囲気を作り出し、複雑な技術的問題を解決するための新しく革新的な方法を探すようにチームに挑戦することができます。