今、それを読み直した後、1つのことが本当に興味深いように思われます。共感とチームへの支援は、聖職者の仕事の重要な部分です。 どちらが本当ですか!
しかし、今では、私が知っているほとんどまたはすべての主要なエンジニアが、個人的なプログラミング作業に加えて、他の従業員に多大な支援を行っています。 今では、同僚と私は「何??」という問題にそれほど直面していないように思えます。 人と話す必要がありますか? 信じられないほど」、別の問題とどのくらい:「このすべてのリーダーシップの仕事とあなたの個々の貢献/プログラミングとのバランスをとるには? どのくらいの仕事をする必要がありますか?」 したがって、Olspauの記事(これに完全に同意します)からの長老の兆候について話す代わりに、私たちが行っている仕事についてお話したいと思います。
この記事について
「主要なエンジニアが行うこと」は大きなトピックですが、ここでは小さな記事にすぎないので、注意してください。
- 一流のエンジニアができることについて、考えられる説明は1つだけです。 働くには多くのアプローチがあり、これは教義ではありません。
- 私は主に1つの会社でしか働いていなかったので、私の経験と見解は明らかにかなり限られています。
- 明らかに、「シニア」には多くのレベルがあります。 Mozilla階層のP3 / P4レベル(シニアエンジニア/スタッフエンジニア)についてであり、「スタッフ」レベルに少し近いかもしれません。
責任は何ですか
これらは、主任エンジニアの仕事としてではなく、マネージャーの仕事としてではありません(マネージャーは間違いなく上記のいくつかを行います。特に、新しいプロジェクトを作成し、プロジェクトをビジネスの優先順位にリンクします)。
この作業のほとんどすべては本質的に技術的なものです。複雑なプロジェクトに誰かが対処するのは明らかに人間のやり取りですが、私たちが一緒に取り組む問題は通常技術的なものです! (「デザインを簡素化すれば、より迅速に対応できるようになるかもしれません!」)。
- コードを書く (明らかに)。
- コードのレビューを行います (明らかに)。
- 設計ドキュメントを作成して確認します 。 他のレビューと同様に、サードパーティの外観はデザインの改善に役立つ可能性があります。
- 立ち往生している同僚を助けます。 時々、人々はプロジェクトで立ち往生します、そして、彼らを助けることは重要です! 私はこれについて「空からのパラシュートで魔法の知識を人々に伝える」ことではなく、「問題を理解し、2つの脳が1つよりも速く対処できるかどうかを確認するために協力する」ことについて考えています。 また、他の人の代わりに問題を解決するのではなく、一緒に働くことを意味します。
- 同僚を高く保つ 。 人によって、「レベル」の意味は異なります(私のチームにとって、これは製品の信頼性/安全性/利便性を意味します)。 誰かが私が好きではない決定をした場合、私は彼が知らないことを知っているか、彼が私が知らないことを知っているかのどちらかです! したがって、「おい、間違えた、代わりにXをする必要がある」と言う必要はありませんが、彼らが持っていなかった追加情報を提供する方が良いでしょう。そして、これはしばしば問題を解決します。 そしてかなり頻繁に、何かが私にとって欠けていたことが判明し、実際、彼らの解決策は非常に合理的でした! 過去に、私は時々、一流のエンジニアが自分の意見が真実だと思うので、彼らの意見を大声で繰り返すことによって品質基準を維持しようとするのを見ました。 個人的には、このようなアプローチは有用ではありませんでした。
- 新しいプロジェクトを作成します 。 ソフトウェア開発チームはゼロサムの場所ではありません! 私が知っている最高のエンジニアは、最も興味深い仕事を自分自身に任せず、新しい興味深い/重要なプロジェクトを作成し、他の人がこの仕事をするためのスペースを作成します。 たとえば、私のチームの誰かが展開システムの書き直しを始めました。 このプロジェクトは非常に成功し、チーム全体が実装しやすくなった新しい機能に取り組んでいます!
- プロジェクトの作業を計画します 。 それは、あなたが取り組んでいるプロジェクトのロードマップを書き留めて報告し、人々が計画を理解できるようにすることです。
- 事前にプロジェクトのリスクを報告してください 。 何かがうまくいかないときを認識し、それについて他のエンジニア/マネージャーに通知し、何をすべきかを決定することは非常に重要です。
- 成功を報告してください!
- チーム/会社に利益をもたらすサードパーティのプロジェクトを行うため 。 多くの高齢者は、時には小さいながらも重要なプロジェクトを作成し(たとえば、開発ツールの作成/ポリシーの確立を支援する)、最終的に多くの人々が仕事をはるかに改善するのを助けます。
- プロジェクトがビジネスの優先順位にどのように関係しているかに注意してください。
- プロジェクトをいつ停止するかを決定します。 何かの作業を開始するのではなく、停止する必要がある場合を理解することは驚くほど難しいことがわかります。 :)
実際にこのタスクは優先順位のリストを簡単に下にスライドするため、「コードを書く」ことを最初に置きました。 :)
リストには「見積もり/予測を作成する」という項目はありません。 私はまだここではあまりよくありませんが、いつかもっと時間を費やす価値があると思います。
リストは大きいようです。 これらすべてを行うと、すべての知的資源が吸収されるようです。 一般的に、一部を分離して決定することは理にかなっていると思います:「今、X、Y、Zに焦点を当てます。BとCを作ろうとすると、脳が爆発するでしょう」。
義務ではないもの
これはもう少し複雑です。 私はあなたがそのようなことを断固として対処できないと言っているのではありません。 私が知っているほとんどの主要なエンジニアは、これらの問題を考えるのに多くの時間を費やし、この方向で少し働きます。
しかし、一部の人々はチームと会社に対して高い責任感を持っているため、一定の境界線を引くことが有用であると思われます-そして、彼らはすべてを引き受ける準備ができており、その結果、彼らは過労になり、技術的な貢献をすることができません。主な事業。 したがって、特定の境界線を確立することで、状況が混乱したときに助けを求めるのが理にかなっている問題を判断するのに役立ちます。 実際の境界線はあなた/あなたのチーム次第です。 :)
以下のほとんどは管理作業です。 免責事項:マネージャーはここにリストされているものよりもはるかに多くのことを行い(「新しいプロジェクトを作成する」など)、一部の企業では上記の一部が実際にリードエンジニアの仕事(例えばスプリント管理)である場合があります。
- 各従業員が自分の仕事の功績に応じて報いることを確認する。
- 作業が適切に分散されていることを確認してください。
- 人々が一緒にうまく働くことを確認してください。
- チームの結束を確保します。
- 各従業員と個人的に話します。
- 新しいマネージャーを訓練し、彼らに期待されることを彼らが理解するのを助けてください(私は、主要なプログラマーがしばしば実際にそのような活動に来ると思いますか?)
- サードパーティのプロジェクトを管理します(私の仕事では、これはそのプロジェクトを率いるエンジニアの仕事です)。
- 製品マネージャーになります。
- スプリント管理スプリントをリードする/各作業の段階を決定する/毎週ミーティングを実施する。
境界を明示的に設定すると便利です
最近、私はマネージャーと私の責任について話し合ったときに興味深い状況に遭遇しました-私たちはそれらを非常に異なって見ることに気付きました! 私たちは状況を明確にし、今ではすべてが整いましたが、期待に同意することが非常に重要であることを実感しました。 :)
エンジニアとして始めたとき、作業は非常に簡単でした。コードを書き、理にかなっているプロジェクトを考え出そうとしましたが、すべてが完璧でした。 私のマネージャーはいつも私の仕事について明確な考えを持っていて、あまり複雑ではありませんでした。 今、状況は変わりました! したがって、今では次の作業を決定する必要があると考えています。
- 私にできること/長期的には私に合っています。
- 私はやりたい/一般的に楽しく、私の個人的な目標と一致しています。
- チーム/組織にとって価値がある。
正確な言葉遣いは人によって異なります(誰もが同じ興味や強さを持っているわけではありません。たとえば、コードレビューが苦手です!)。 このため、このトピックについて議論し、期待に同意することがさらに重要だと思います。
あなたができない/やりたくない仕事に落ち着かないでください
私にはできない、または長期的には喜びをもたらさない仕事を放棄することは非常に重要だと思います! あまり気に入らなくても、たくさんの仕事をするのは魅力的です(「ああ、これはチームにいい!」、「 だれかがやらなければならない!」)。 もちろん、完了しなければならないという理由だけでタスクを引き受けることもありますが、チームの健康にとって、従業員が一般的に好きなことを実行し、長期的にはできることを行うことが本当に重要だと思います。
したがって、やらなければならない小さなタスクを取りますが、同時に言うことは重要ではありません。「もちろん、私は自分の時間のほとんどを自分の悪いことや嫌いなこと、問題なしに費やします」:) 「誰か」がこれを行う必要がある場合、それはおそらく、ギャップを埋めるために新しい人を雇う/訓練する必要があることを意味しているだけかもしれません。 :)
私はまだ学ぶことがたくさんあります!
「主任技術者」とは何かを理解し始めているように感じますが(すでに私のキャリアでは7年)、これについてさらに多くを学ぶ必要があると感じています。あなたの仕事!