私は現在プロのプログラマーです。スキルセットを拡大したいのですが、チームの一員として開発リーダーになるためのキャリアを飛躍させたいと思っています。学ぶべきことがたくさんあることはわかっていますが(これは一瞬ではありません)、私はそれを実行するのに十分なほど賢く、私は挑戦に耐えます。
ここのメンバーの多くはおそらくこれを自分たちで経験してきており、現在は開発リーダーとして成功していると思います。残念ながら、自分が改善したい個人的な領域(知識の深さ、知識の幅、スキルセットなど)を知っていても、このようなことをどのように始めればよいのか本当にわかりません。
プログラマーとして、この目標を達成するためにどのような手順を踏む必要がありますか?何を優先すべきですか?
テクニカルリードになるには、以下が必要です必須
3か月間大学を卒業していない人から30年以上プログラミングをしている人まで、あらゆるレベルの年功序列でスタッフを指導する能力
開発ドメインに関する十分な知識。これには、言語、フレームワーク、ユーティリティ、開発環境が含まれます
問題管理システム、プロジェクト管理スキル、およびバージョン管理に関する確かな理解
頼りになるバグキラーになる
タイムリーなコードレビューを実施する方法、何を探すべきか、そして彼らが保持するのにかかる時間を最小限に抑え、変更を行う方法を知る
開発ドメインの開発状況を最新の状態に保ちます。たとえば、.NET 2から新しいフレームワークやテクノロジーを学ばなかったとしたら、今日はかなり逆のことをしているでしょう。
単体テストとモックを作成し、開発者にそれらを作成させる方法
デザインパターンとは何か、いつ使用するかに関する知識
コードのにおいが何であるか、およびそれらを軽減する方法に関する知識
継続的インテグレーション
プロジェクトとリリースを計画する機能
組織や、アーキテクトがスタッフにいるかどうかによって、おそらく次のことを知っておく必要があります。
プロジェクトをコンポーネント化して機能部品に分割する機能
パスワードの適切な処理方法、システムの分離、データの保護など、セキュリティの完全な理解
サービスバス、メッセージキュー、BizTalkなどのエンタープライズコンセプト
エンタープライズ設計パターン
SOAPおよびRESTなどのサービスアーキテクチャ/ RPC
Hibernate、Entity Framework、DoctrineなどのORMフレームワーク
継続的な展開
クラウド
プロジェクトに使用する正しいテクノロジーを推奨する機能。チーム/ショップが.NET、PHP、またはJavaのみを実行している場合、これは難しい場合があります。
将来の機能強化に容易に対応できるようにアプリケーションを設計する
開発マネージャーになる場合は、以下も必要です。
そして最後に、いくつかの他の推奨点:
開発ドメインの外で学ぶ
ことを学ぶ[〜#〜] no [〜#〜]物事が不可能であるか、範囲外であるか、予算や時間などの制約と競合する場合。
チームを管理することは困難な役割です。質問に答えられる人である必要があり、使用する適切なテクノロジーを知っている必要があります(アーキテクトがいない場合)。人を管理するスキルがあり、親しみやすい必要があります。スタッフによる(管理職の場合)。これに加えて、プロジェクトの収益性を確保するには正確な見積もりスキルが必要です。また、問題を特定して迅速に修正するために、誰かのコードに手を染めることができる必要があります。自分ですべてをやりたくない、そして毒性のないチーム環境を育てたいと思う必要があります。継続的にテクノロジースタックのトップを維持し、最新の開発と技術、および業界全体の幅広いトレンドを学ぶ必要があります。
また、少なくとも1つのデータベースプラットフォームについて十分に理解している必要があります。レプリケーションの方法、ストアドプロシージャ、クエリオプティマイザーのしくみ、スキーマを適切に設計する方法、インデックスを作成するフィールドを理解します。
正確な地位に関係なく、上級職には、効果的なコミュニケーション能力が必要です。自信のないスピーカーなら、トーストマスターズ(人前で話す)のようなことを見てください。 アイコンタクトを作成して保持する方法を学びます。自信を持ってください。位置に合わせて適切にドレスアップします。模範を示す。
私の経験では、Leadは実践的なプログラミングの汚い仕事とは少し関係があり、管理と関係があります。そのために私は以下をお勧めします
設計と建築の追求と開発により多くの時間を投資する。リードとして、あなたの機能は、チームに技術的なガイダンスと指示を提供することに集中します。あなたは全体の部分がどのように組み合わさるかを理解するためにより多くの任務を課され、配管がどのように機能するかということよりも少なくなるでしょう。誤解しないでください。効果的で知識豊富なリードとなるには確かな技術的チョップが必要ですが、何が起こっているのか、それがどのように機能するのかについてのより高いレベルのビューは、ここでより重要になります。あなたはもっとベストプラクティスのデザインパターンと効果的なコーディングプラクティスを知っているべきです
マルチタスクと時間の管理を学ぶ。今それが得意であれば、それはいいことです。もっと開発してください。開発者は、現在のタスク/プロジェクトについて心配するだけです。リードとして、あなたは
効果的に委任するために準備する。このIMOは、調整が最も難しいビットです。開発者は、手を汚して物事を成し遂げることに慣れています。すべての配管と研究を行います。それは停止するか削減する必要があります。ギグが入ったら、チームにそれを渡します。慣れているだけでなく、アクションの一部が得られます。そして、あなたはあなたの舌を噛んで、自分のためにより多くの行動を追い詰めようとする誘惑に抵抗します。
より専門的なラインに沿って、能力を向上させるだけでなく、Outlookを変更するトレーニングを検討してください。ソフトウェアプロジェクト管理は害を及ぼさないと言うことでのクラッシュコース。リーンシックスシグマはまた、問題解決をより論理的な角度から見るのに役立つ非常に優れたトレーニングプログラムです(私はその有効性を証明できます)。言うまでもなく、リードポジションからは、実践的な技術スキルと管理能力をあまり必要としない、より多くの上級職に対応する準備ができています。
コミュニケーションと対人スキルを磨く。あなたは外の世界からあなたのチームへの主要な入り口になります。あなたのマネージャーまたは他の監督者が最初にあなたのところに来るでしょう。組織内の他のユニット/チームは、まずチームに関するあらゆることについてあなたとやり取りします。あなたは、すべての人々の中で最も困難で予測不可能なリソースを管理することになります。あなたは厚い肌を育て、大量のプライドを飲み込むことを学び、チームの失敗の責任を負う必要があります。
サムが言っていないことも重要です:
仕様を詰めて他の開発者に作業を任せる方法。あなたの仕事の一部は、他の開発者を100%活用することです。明確な仕様を記述することは非常に重要です。
誰もが従うべきスケルトン/プロトタイプアプリケーションを構築する方法
チームの士気を高める方法
会議への参加、推進、主導の方法、アクションアイテムの文書化の方法
プロジェクト計画を見積もり、書き、プロジェクト計画を更新する方法
将来を見据える方法-問題が3か月以内に発生する場合は、できるだけ早く問題を回避する必要があります。開発者が7週間休暇を取る場合は、今すぐ計画を立てる必要があります。
経営陣と話す方法。彼らは私たちに異なる言語を話します。問題ではなく解決策を与えてください。技術的なことの意味を伝えます。
サムはすでにこれを言っていますが、最も重要なことの1つはいいえと言う方法を学ぶです。これはlotで行います。それを見るもう1つの方法はyesと言うことですが、「より多くのお金/時間/リソースを取得できる場合のみ」または「2番目のリリースの場合」です:)
これらはすべて本と良い答えによるものです。現実にあなたを殴らせてください。
それを信じるかどうか、マネージャーの説明に費やす時間の多くは
このためには、非技術的な人々に技術的なことを非技術的な用語で説明するスキルが必要です。そして、それは非常に困難です。例えばP = NPを6歳まで説明することを検討してください。残念ながら、そのための正式なトレーニングはなく、自分で習得する必要があります。
また、これは政治的な攻撃があなたを攻撃し始める位置です。マネージャーはプロセスをフォローしているため、人を有利にするように指示しますが、その人は、技術的なスキルの欠如から優れたチームメンバーではないことまで、さまざまな理由でチームで役に立たないことを知っています。したがって、この人と一緒に作業するだけでなく、この人に良い評価を与える必要があります。反対は、優れたスキルと非常に効果的なチームメンバーを持っているが、管理を満足させる方法がわからないため、評価が低くなる人です。
次に、遠隔地から離れた高い位置にいる誰かが無駄な会議を行い、効果的なプロセスと、彼/彼女の最新のプロセスの変化が生産性をどのように高めるかについて講義します。あなたはあなたの退屈な顔を隠し、エネルギッシュに見える方法を知っている必要があります。