開発/技術リーダーになるには、どのようなスキルを磨く必要がありますか?[閉まっている]


82

私は現在、プロのプログラマーです。スキルセットを拡大したいのですが、チームの一員としてキャリアをデブリードにしたいと思っています。学ぶべきことはたくさんあることは知っていますが(これはすぐにはわかりません)、私はそれを行うのに十分賢く、挑戦していると思います。

ここのメンバーの多くはおそらく自分でこれを経験しており、現在は開発リードとして成功しています。残念ながら、私が改善したい個人的な分野(知識の深さ、知識の幅、スキルセットなど)を知っていても、私はこのようなことをどのように始めるか本当にわかりません。

プログラマーとして、この目標を達成するにはどのようなステップを踏む必要がありますか 何を優先すべきですか?


現在の会社でチームリーダーに昇格する機会はありますか?チームリーダーの経験がなければ、あまりにも多くの企業が社内からしか採用できないのではないかと思います。
ジェフ

@JeffO私は実際にジョブを切り替えました。ここにチャンスがあるかどうかはわかりません。可能性はあると思いますが、小さなスタートアップであり、開発リーダーは一度に1人しかいないと思います。
lunchmeat317

2
唯一のスキル:このポジションを与えることができる人を説得する能力。
vortexwolf

1
判明したように、私は実際にこれを考慮していないという非常に明確な可能性があります。この方向で私のキャリアを前進させたいと思う限り、私は物事の開発者側にもっと落ちると思います-私は時々頭を下げてコードを書きたいだけです。まだ可能性を検討していますが、今は注意が必要です。
lunchmeat317 14年

回答:


90

技術的なリーダーになるには、以下が不可欠です

  • 3か月間大学を卒業していない人から30年間プログラミングをしている人まで、あらゆるレベルの年配のスタッフをメンターする能力

  • 開発ドメインに関する十分な知識。これには、言語、フレームワーク、ユーティリティ、開発環境が含まれます

  • 問題管理システム、プロジェクト管理スキル、バージョン管理についての十分な理解

  • 頼りになるバグキラーになる

  • タイムリーなコードレビューの実施方法、探すべきこと、保持する時間と変更を最小限に抑える方法を知っている

  • 開発ドメインの開発を最新の状態に保ちます。たとえば、.NET 2から新しいフレームワークや技術を学ばなかった場合、今日はかなり逆方向に物事をやっていることになります。

  • 単体テストとモックを作成し、開発者にそれらを作成させる方法

  • 設計パターンとは何か、いつ使用するかの知識

  • コードのにおいが何であるか、およびそれらを軽減する方法に関する知識

  • 継続的インテグレーション

  • プロジェクトとリリースを計画する機能

組織と、スタッフにアーキテクトがいるかどうかに応じて、おそらく次のことを知る必要があります。

  • プロジェクトをコンポーネント化して機能部分に分割する機能

  • パスワードの正しい取り扱い方法、システムの分離、データの保護など、セキュリティの完全な理解

  • サービスバス、メッセージキュー、BizTalkなどのエンタープライズコンセプト

  • エンタープライズ設計パターン

  • SOAPやRESTなどのサービスアーキテクチャ/ RPC

  • Hibernate、Entity Framework、DoctrineなどのORMフレームワーク

  • 継続的な展開

  • クラウド

  • プロジェクトに使用する正しいテクノロジーを推奨する機能。チーム/ショップが.NET、PHP、またはJavaのみを行う場合、これは難しいかもしれません。

  • 将来の機能強化が容易に受け入れられるような方法でアプリケーションを設計する

開発マネージャーになる場合は、次のものも必要になります。

  • 面接スキルと適切なスタッフを見つける方法
  • チームメンバーの人々の問題に対処する方法
  • ビジネスディレクティブ/目標を管理し、関連するものを開発者向けの情報に変換する
  • さまざまなスキルのプログラマーの時間を見積もる機能
  • スキルと能力に基づいて適切な開発者にタスクを割り当てる機能

最後に、他の推奨ポイント:

  • 開発ドメイン以外で学ぶ

  • 物事が不可能な場合、範囲外である場合、または予算や時間などの制約と矛盾する場合は、ノーと言うことを学びます。

チームを管理することは、挑戦的な役割です。質問に答えられる人である必要があり、使用する適切なテクノロジーを知る必要があります(アーキテクトがいない場合)。スタッフによる(管理職を想定)。これに加えて、プロジェクトの収益性を確保するための正確な推定スキルが必要であり、問​​題を特定して迅速に修正するために、誰のコードでも手を汚すことができる必要があります。あなたはすべてを自分でやるのを避け、毒性のないチーム環境を育む必要があります。テクノロジースタックを常に把握し、最新の開発とテクニック、さらに業界全体のトレンドを学ぶ必要があります。

また、少なくとも1つのデータベースプラットフォームを本当に知っている必要があります。レプリケーションの方法、ストアドプロシージャ、クエリオプティマイザーの動作方法、スキーマを適切に設計する方法、およびインデックスを作成するフィールドを理解します。

正確な位置に関係なく、上級職では、効果的なコミュニケーション能力が必要です。自信を持って話せない場合は、Toast Masters(人前で話す)のようなことをしてください。アイコンタクトを作成し、保持する方法を学びます。自信を持って。体位に合わせて適切な服装をしてください。例でリード。


2
すぐに考えられるアイデアをいくつかスケッチしました。後で再確認して追加します。良い質問。
サム

トーストマスターズのメリットを再確認できます。それは私のキャリアの中でかなり助けになりました。自分の考え(特に技術的な考えを非技術的な人々に)を明確に伝えることができることは、非常に貴重なスキルです。
ジェイソンスウェット

27

私の経験では、リードはハンズオンプログラミングの汚い仕事とは少し関係があり、管理と関係があります。そのためには、以下をお勧めします

  1. デザインと建築の追求と開発により多くの時間を費やしてください。リードとして、あなたの機能は、チームに技術的なガイダンスと指示を提供することに集中するでしょう。全体の一部がどのように組み合わされるかを理解し、配管がどのように機能するかを理解するために、より多くのタスクが課せられます。誤解しないでください、効果的で知識豊富なリードになるためにはしっかりした技術的なチョップが必要ですが、ここで何が起こっているのか、どのように機能するのかについてのより高いレベルのビューがより重要になります。よりベストプラクティスなデザインパターンと効果的なコーディングプラクティスを知っている必要があります

  2. マルチタスクを学び、時間を管理します。あなたが今それを上手くやっていれば、それは素晴らしいことです。もっと開発してください。開発者としては、心配する必要があるのは現在のタスク/プロジェクトだけです。リードとして、あなたは

    • 気になる以上の会議に出席する。これはおそらく、チームのリーダーシップの中で最も気が散る部分です
    • リソース割り当てに取り組みます。運がよければ、リソースが不足し、プロジェクトが豊富になります。
    • プロジェクトのアーキテクチャと設計をリードする
    • 組織の規模と構造に応じて、スケジュールと時間どおりに無数のレポートを提供します。リードを低賃料のプロジェクトマネージャーと考えてください。
  3. 効果的に委任できるように準備してください。このIMOは、調整が最も難しい部分です。開発者として、あなたは手を汚して物事を成し遂げることに慣れています。すべての配管と研究を行う。それは停止するか、削減する必要があります。ギグが入り、チームにそれを配ります。慣れているだけではなく、アクションの一部を取得します。そして、あなたは舌を噛んで自分自身のためにもっと多くの行動を追い詰めたいという誘惑に抵抗するでしょう。

  4. より専門的なラインに沿って、あなたの能力を高めるだけでなく、あなたの見通しを変えるいくつかのトレーニングを検討してください。ソフトウェアプロジェクトの管理は、コースを中断しても害はありません。リーンシックスシグマは、非常に優れたトレーニングプログラムであり(その有効性を証明できます)、より論理的な角度から問題解決を検討するのに役立ちます。言うまでもなく、リードのポジションから、より実践的な技術スキルとより多くの管理能力を必要とするさらに多くの上級職に就く準備ができています。

  5. コミュニケーションスキルと対人スキルを磨きましょう。あなたは、外の世界からあなたのチームへの主要なエントリーポイントになります。あなたの上司または他の監督者が最初にあなたのところに来ます。組織内の他のユニット/チームは、最初にチームに関することについてあなたとやり取りします。すべての中で最も困難で予測不可能なリソース、つまり人を管理することになります。厚い皮を成長させ、大量のプライドを飲み込むことを学び、チームの失敗に対して責任を負う必要があります。


2
すばらしい答えです。開発者として一般的にはまったくわからないこと、特に委任について、あなたがどのように指摘してきたかが好きです。最後の仕事は、私ができることはすべて委任しましたが、まだ忙しいために山がありました。その後、(まれな)無料の瞬間に、「退屈な」ことをします-マイナーなバグ、ドキュメントの修正を支援します。正面からリードする必要があります。
ロックラン

2
+1は、「リード」の役割が技術的なスキルよりもはるかに多くの管理を伴うことが多いことを強調するために
-Krease

これは傑出した答えであり、実際に役割の本質を捉えています。よくやった。
ロイドムーア

14

サムが言っていないことも重要です。

  • 仕様を作り、他の開発者に仕事を与える方法。あなたの仕事の一部は、他の開発者を100%利用し続けることです。明確な仕様を記述することは非常に重要です。

  • 他の全員が従うべきスケルトン/プロトタイプアプリケーションを構築する方法

  • 良いチームの士気を育てる方法

  • 会議への出席、推進、および指導の方法、行動項目の文書化の方法

  • 見積もり、プロジェクト計画の作成、プロジェクト計画の更新方法

  • 未来を見つめる方法-問題が3か月以内に発生する場合は、できるだけ早く問題を解決してください。開発者が7週間休業する場合は、今すぐ計画を立てる必要があります。

  • 経営陣に話す方法。彼らは私たちとは異なる言語を話します。問題ではなく解決策を提供します。技術的なものが何を意味するのかを伝えます。

サムはすでにこれを言っていましたが、最も重要なことの1つは、ノーと言う方法を学ぶことです。あなたはこれをたくさんするでしょう。それを見るもう一つの方法は、yesと言うことですが、「より多くのお金/時間/リソースを得ることができる場合のみ」-または「2番目のリリースのためです」:)


あなたの作品の多くは、アーキテクトまたはPMバケットに入ると思います。しかし、いや、時には開発リーダーがそれをしなければなりません。
サンドロック14年

11

これらはすべて本と良い答えです。現実にあなたをhitらせてください。
信じられないかもしれませんが、ほとんどの時間をマネージャーの説明に費やします

  • 問題を解決するのが難しい方法または
  • 特定のタイムラインで解決できない理由、または
  • 解決することがどれほど重要でないとしても。

このためには、非技術用語で非技術者に技術的なことを説明するスキルが必要です。そして、それは非常に難しいです。たとえば、P = NPを6歳に説明することを検討してください。残念ながら、そのための正式なトレーニングはありません。あなたは自分でそれを学ぶ必要があります。

また、これは政治的なsh * tがあなたを攻撃し始める位置です。マネージャーは、プロセスに従うため人を支持するように指示しますが、技術的なスキルの欠如から優秀なチームメンバーではないまでのさまざまな理由で、その人はチームでは役に立たないことを知っています。ですから、あなたはまだこの人と仕事をするだけでなく、この人に良い評価を与える必要があります。反対は、優れたスキルと非常に効果的なチームメンバを持っているが、管理を喜ばせる方法がわからないため、評価が低くなる人です。
それから、高い位置にいる誰かが遠隔地から開催する役に立たない会議があり、効果的なプロセスと、彼/彼女の最新のプロセスのバリエーションが生産性を高める方法について講義します。退屈な顔を隠して元気に見える方法を知っている必要があります。


1
「退屈な顔を隠して元気に見える方法を知っている必要があります」笑
エイドリアン14

これらの議論されている技術に関連する何かを除いて、スタートを満たすとき、私はいつものボアを感じる
Akshay Mukadam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.