ソフトウェア開発マネージャーが何をするかは私たち全員が知っていますが、私たちはそれを知っているだけだと思います漠然と。私たちは彼が何をしているのか知っていると思いますが、仕事の範囲を正確にリストアップすることは少し難しいです。
あなたの意見では、ソフトウェア開発マネージャーの役割は何ですか?
仕事の誰か(開発者でもある)と言えば、私がしなければならない重要なことは次のとおりです。
開発チームを軌道に乗せます(可能な場合は幸せにします)-可能な限り作業を妨げているものを邪魔にならないように移動し、移動して試して削減できない場所が不可能な理由を説明します結果として生じるストレス(人々が少なくともそれらを理解している場合、人々は物事を受け入れる可能性が高くなります)。最終的に、プロジェクトとチームの間に解決できない競合がある場合、通常はプロジェクトが優先されます。これは必ずしもチームに人気があるわけではありませんが、組合のリーダーとしてではなく、プロジェクト/製品を提供するために報酬が支払われます。明らかなスキルは、これが発生する頻度を最小限に抑えることです。
チームがお客様と正しい金額であることを確認します。これは、顧客をチームから遠ざけ、チームが顧客に(正しくない可能性がある仮定を行うのではなく)完全に理解していないことを尋ねていることを確認することを等しくする傾向があります。開発者は、顧客が邪魔しないことを確認することに非常に大きな力を持っています。また、顧客が何か追加すべき何かがあることを時々忘れます。
プロジェクトの計画と優先順位付けリソースの競合、顧客の要求、サポートの問題など。私は、この顧客がその顧客よりも優先する、または出荷前にこのバグを修正する必要があるが、既知の問題として発生する可能性があると言う人である傾向があります。
開発の商業的側面を管理する-これは、課金および課金される必要のあるものと、サポートの対象となるものに課金しないことを確認することです。
ビジネスのチームとチーム内のビジネスの声になる-全員が他の人の立場を理解し、生じた場合の違いを解決するのに役立ちます。これは主に、チームのニーズ/要望とより大きな組織との間の文化的対立、および予算の問題をカバーする傾向があります。これは実際にはかなりひどいことです。それは、意見の不一致があるとき、あなたは皆の敵であることを意味します。
チームと協力して、ビジネスと顧客の要件を満たすのに十分なプロセスとツールが用意されていることを確認します。これらのプロセスがフォローされ、必要に応じて調整されていることを確認してください。これの一部は、チームがプロセスを定義することを確実にします(たとえば、私よりもよく理解している技術的な事柄の場合)。ここで重要な言葉で十分です-プロセスのためのプロセスは必要ありませんが、発生しなければならないことがあり、プロセスはそれを一貫して達成するための最良の方法です。
チームのすべてのメンバーが少なくとも合理的なレベルまで作業していることを確認してください、理想的にはそれを超えています。彼らと協力して、彼らがこのレベルに達するのを妨げている問題を解決する手助けをしてください。私の役割は、彼らを最高の状態にすることです。しかし、これはある程度当てはまりますが、他の要求(プロジェクト、予算、時間)は、ほとんど常に、ある程度は妥協されることを意味します。
全体としては、メンタリング、秘書、プロジェクト管理、アカウント管理、PR(チーム)です。開発者が考える必要がない、または行う必要がないことを多く取り上げており、必要なことをしたいがやりたくないことを確認している人もいます。
それが問題ではないのは、最高の開発者であることです(一般的に、あなたはあまりにも多くの人があなたよりも多くのことを知っていることを受け入れる必要があります-スキルはあなたのより長くて古い経験がどこよりも関連性があるかを知ることです彼らのより短いがより最近の経験)またはある種の独裁者である。その点では、それについて考える最善の方法は、あなたがより年上であるということではなく、単に異なる責任を持っているということです。時々これは何か(チームの見解に反するかもしれない)に最終的な電話をかけることを含みますが、より頻繁にはそれはコンセンサスまたは妥協についてであるべきです。