仲間のプログラマーの成長をどのように支援しますか?


20

チームリーダーとして、プログラマーの成長をどのように支援できますか?

私がこれを頼む理由は、私と一緒に働いているプログラマーが何人かいるからです。そして、私は本当に彼らを最大限に活用し、彼らの幸せを保ちたいと思っています。

しかし、私はこれを行う方法をよく知りません、私はする必要があります

  1. 頻繁にやり取りするか、静かな時間を与えて、邪魔されないようにしますか?
  2. 単体テストの実施、コーディングスタイルなどのコーディングガイドラインに従うように依頼するか、適切と思われることを何でもやらせますか?
  3. 彼らに寛容にしてください。彼らが本当に8時間または4時間オフィスに来るかどうかを本当に気にしない、または職場でいくつかの「規律」を実施する必要があるなど?

推測すると、各ポジションには独自のポイントがあり、さまざまな人々がさまざまなことを主張します。このような混乱により、人の管理が無期限に難しくなります。

どう思いますか?


21
ドーナツでそれらを養います。
SKロジック

1
各プログラマの動作は異なります。あなたは本当に彼らが達成したいことについてもっと教えてください。それを知っているなら、あなたがする必要があるのは、彼らに彼らが必要とするツールを提供し、彼らが他のチームに取り組んでいることについて話し、そしてお互いに助け合うことを皆に奨励することです。チームの目標が既に定義されている場合でも、その場合でも、チームはその目標を達成する方法を自由に保つため、これは当てはまります。一方、スクラムはこの種の動作ではうまく機能しません。
サディーティル

@ SK-logic:私が働いている場所では、ピザが好まれています。
ドナルドフェローズ

回答:


9

それはあなたが歩かなければならない非常に細かい線です。

結局、あなたが下す技術的な決定は、あなたが一緒に暮らす必要のない決定です。ですから、できるだけ彼らを少なくし、彼らと一緒に暮らさなければならない人々が自分で選択できるようにしてください。しかし、彼らが悪い道を進んでいると思うなら、彼らを導いてください。

一方、プロセスの選択はあなた次第です。これらの決定では、チームがあなたをガイドしますが、最終的にはそれらを作成する必要があります。少なくとも最初は。

Roy Osheroveのソフトウェアチーム3つの成熟段階を読んで、チームが現在どの段階にいるかを把握できるかどうかを確認してください。これはあなたの行動に影響を与えるはずです。混oticとしたほど、コントロールを適切に配置する必要があります。例えば。非常に混oticとしたチームでは、コミットされたすべてのコードを確認することから始める必要があります。しかし、それをしている間に、お互いのコードをレビューするように時間をかけて教えてください。

また、チームをカオスからミッドライフに引き寄せた場合、その時点で行動を変更してください。そうしないと、チームはそれ以上移動しません(これは個人的な経験によるものです)


6

はい、人を管理することはコンピュータやソフトウェアを管理するよりも無限に困難です。正確にはすべての人が異なっており、私たちは日々変わるかもしれません。したがって、普遍的な答えはありません。開発者と知り合い、個々の長所/短所、仕事や学習に対する態度などを理解するために、開発者と多くのコミュニケーションをとる必要があるだけだと思います。たくさんのコミュニケーションとワークショップ、または静かなコーナーでの独学。

通常の状況下でのIMHO開発者は、学習する衝動が自然にあります(以前の悪い仕事の経験によって燃え尽きたり、うんざりしていない限り)。だから、あなたがする必要があるのは、彼らが何をどのように学びたいのかを理解し、彼らにそれをするためのツールと時間を提供することです(もちろん合理的な範囲内で)。

たとえば、チームで、何らかの形で(直接的または間接的に)プロジェクトに関連している限り、学習タスクを自分で自由に定義できます。これらのタスクは通常、スプリントごとに数時間から1日です(ただし、すべてのスプリントではありません)。(最近の例:これと、一般的な機能的アプローチがJavaコードの複雑な部分を単純化するのに役立つ可能性があることに基づいて、Scalaを学習し、実験するタスクを取得しました。)通常のタスクと同様にスプリント。また、私たちが学んだことについてのデモ/講義を行い、他のチームメンバーに(場合によっては異なるチームの開発者にも)知識を移転することを奨励し、期待しています。

単体テストの実施、コーディングスタイルなどのコーディングガイドラインに従うように依頼するか、適切と思われることを何でもやらせますか?

チームで作業する場合、同じ開発プロセスに従うことが必須です。もちろん、そのプロセスは、600ページのマニュアルに記載されているものではなく、おそらく動作する可能性のある最も単純なものでなければなりません。そしてプロセスはチーム自身によって定義され継続的に状況に適応するべきです。したがって、チームがコーディング標準とTDDに同意した場合、彼らはそれに従うことになります。

彼らに寛容にしてください。彼らが本当に8時間または4時間オフィスに来るかどうかを本当に気にしない、または職場でいくつかの「規律」を実施する必要があるなど?

開発者がわからない場合は、通常、彼女がしていること、配達、仕事のリズムなどをより詳細に追跡するのが普通です。また、コードを確認してもかまいません(自分自身または経験豊富で信頼できるチーム)メンバー)。彼女が信頼を得た後、彼女は徐々により多くの自由を得ることができます。しかし、その信頼は最初に獲得されなければなりません。勤務時間について、私の経験では、柔軟な時間は限界まで素晴らしいです。つまり、開発者が(通常)職場で見つけられるように、毎日午前11時から午後2時までのように、共通の合意された最低質問に応じたり、会議に招待することができます。しかし、それ以外に、厳密であることは意味がありません。


3

リードとして、プロジェクトをドアから出すのはあなたの仕事です。したがって、標準を強制し、コードレビューを行い、進捗レポートを要求し、開発者があなたに任せたほうがよいときにこれらすべてのことを行う必要があります。これらは管理の要件に過ぎず、コードレビューを除き、従業員のスキルは実際には向上しません。

しかし、あなたは彼らが成長するのを助けたいと思います。それはリーダーの素晴らしい属性です。

コードレビューは確かに最初のステップです。これは、優れたスキルを持ち、パフォーマンスを満足させるために改善が必要なユーザーを確認するのに役立ちます。開発者が他の方法を理解し、個人的に取り組んだものとは異なるコードベースの異なる部分を理解するのに役立ちます。私の意見では、コードレビューは、開発者とレビュー担当者(可能な場合は常にリードとは限らない別の開発者である必要があります。モデレーター。トレンドを特定するために何を変更する必要があるかについてメモをとっておく必要があります。本当に探しているのは間違いや変更ではなく(誰でもコードを改善できる)、間違いから学ぶ一貫した失敗です。これらのメモを保持していることを経営陣に伝えないでください。そうしないと、パフォーマンスレビュープロセスで測定値として使用することを余儀なくされ、率直に目的が失われます。複数の開発者が同じ間違いを犯している場合は、Xの実行方法に関するトレーニングセッションまたはWikiエントリが適切である可能性があります。

次に、最小レベルに到達する悪の成長について説明します。最初に、開発者が持っているスキルセットと、彼らが持っていた有用なスキルセット、および知識を得ることに興味があるかもしれないものを知る必要があります。したくない

すべての興味深い割り当てを最も熟練した人だけに与えないでください。それは、他の人が新しい問題や技術を理解するのに役立ちません。誰かがチャンスを取り、より困難な仕事をあなたに割り当てない限り、最も重要度の低いタスクから最も重要度の低いタスクのみを年配の男性に受け継ぐことはできません。とはいえ、より高度なスキルを得るには、経験の浅い人を先にプログラムとシニアとペアリングする必要があります。コードレビューにジュニアを含めると、より高度なテクニックにさらされます。

最初に彼らに問題を自分で理解する機会を与えます。しかし、時々人々は立ち往生し、どこから始めるべきか(特に新しいプログラマーで開発する必要があるスキル)または問題を解決するために何をすべきかわからないことがあります。

あなたが彼らに何かを研究するために数日を与え、彼らがまだ彼らが何かをするつもりであるという方向性を持っていないなら、あなたはいくつかの提案に介入する必要があるかもしれません。自分で技術を習得している場合は、問題を解決する方法についていくつかのアイデアを与えることができます。そうでない場合、アイディアをブレーンストーミングする複数の人とのミーティングは、その人が立ち往生している場合に役立ちます。または、より経験豊富な人にいくつかの提案をするように頼みます。あなたがしたくないことは、彼らから問題を取り除き、自分で解決することです。しかし、プログラマーのエゴでプロジェクトを遂行することと、特定の方向に送る必要がある場合とのバランスを取る必要があります。彼に悪い解決策があり、それを修正する必要がある場合、あなたができる最悪のことは、プログラマーを解雇するつもりでない限り、それを他の誰かに与えることです。

他の誰かが彼らが行うほとんどすべてを修正しなければならない、悪いプログラマーがかわされているのを見ました。他のプログラマーはこれに腹を立て、ただその人を人生から追い出したいだけです。悪いプログラマーをいじることは、良いプログラマーが去ることにつながります。あなたは、coめるスキルと開発スキルの間の境界線を見つけなければなりません。誰かにいくつかのチャンスを与え、彼または彼女が決して良くならない場合、彼または彼女を緩めなさい。

現在のスキルセットで既に有能な高齢者にとって、物事は簡単です。通常、あなたは彼らに何か新しいことをする機会を与えるだけで、彼らは飛び込んでそれを学びます。興味深い機会が広がることを確認し、すべてを修正できるワンダープログラマーのJoeに全員が行かないようにしてください。最終的には、1人だけでなく10人のジョーになります。

スキルを向上させる別の方法は、毎週1時間のトレーニングセッションを開催することです。各開発者に特定のトピックを担当させます。これは、彼らがコミュニケーションをより良くするのを助け、彼らに詳細な研究をさせ、誰もが彼らの研究の利益を与えるでしょう。一部のトピックは、そのトピックに馴染みのない人に割り当てて、その知識をある程度身に付けさせる必要があります。また、一部のトピックは、そのトピックの地元の専門家であることがわかっている人に割り当てる必要があります。トピックは、近い将来または今すぐに得意とする人々に必要なものと、現在使用していない新しい技術の一部をカバーするものの組み合わせである必要があります。ただし、最も後輩を含む全員にトピックを割り当てなければなりません。

開発者の時間の請求方法にもよりますが(顧客への請求状況ではより困難です)、開発者が個人プロジェクトに取り組むのに週4〜8時間を費やす価値があります。彼らはこれを行うことに興奮しています。最高の人々はそこで働きたいと思うでしょうし、彼らは将来のために役立つ多くを学びます。Beanカウンターがこれの必要性を理解することは困難ですが、今回は、従業員の満足度、新機能、または誰も必要としない(または一部の退屈な作業を自動化するのに役立つ)ソフトウェア、そして新しい技術を学びました。一部の開発者は、今回の作業を自分の仕事とは関係のない個人的なプロジェクトに厳密に使用します(それは良いことですが、スキルを習得し、機会に満足しています)。しかし、他の多くの人は、プロジェクトを管理する方法の性質上、ndbodyが事前に修正する時間があったという永続的な問題を解決するためにそれを使用します。したがって、すべての人に利益をもたらすリファクタリングを取得できます。リファクタリングを容易にするためにテストカバレッジを改善するためにテストを作成する人もいます。他の人は、ソフトウェアを顧客にとってより便利にするいくつかの新機能を検討するかもしれません。一般に、Beanカウンターを説得できる場合、この自由を許可することで失うことはできません。

あなたは、人々が彼らのスキルのためにいくらかストレッチをすることを可能にし、プロジェクトを順調に保つことのバランスをとる方法を学ばなければなりません。開発者の経験が少ないほど、特に方向の変更が容易な初期段階で、進行状況を確認する必要がある人が多くなります。経験の浅い人は苦労し、話すことを恐れるでしょう。これらの人々は、立ち上げの直前に去る傾向があり、プロジェクトの彼らの部分はどこにも完了していないことがわかります。頻繁に転職した人の進捗状況を確認するように特に注意してください(契約の性質上、彼らが請負業者でない限り)。

一般的に、経験豊富な人は、解決策を見つけるのに苦労していて、その分野でより多くの知識を持っている人からの支援が必要な場合、またはその人を探して知識の伝達を得るときにあなたを伝えると信頼できます。そのため、プロジェクトの新しいスキルセットを学習する初期段階で、それらを厳密に監視する必要はありません。彼らはプロジェクトを提供する方法を見つけるでしょう。配信の実績がある人は、最小限の進捗レポートを除き、通常はそのままにしておくことができます(通常、管理者にも報告する必要があるため、何らかの情報が必要です)。


1
チームリーダーとして良い仕事をすることと、チームの成長を支援することを区別する際に+1します。私が追加する唯一のことは、各メンバーが組織外の他の専門家と交流する機会を確保することです。これは、ワークショップや会議、その他のミートアップを通じて行うことができます。チームリーダーはこれを直接実現することはできないかもしれませんが、それを許可する権限を持つ人に影響を与えることができます。
アンジェロ

2
  1. チームに挑戦的な仕事とそれを解決するツールを提供します。レガシーシステムをサポートしているだけで作業が平凡であると思っても、全員にそれを改善してもらいます。
  2. チームはコーディング標準を開発する必要があります。あなたの仕事は、彼らが標準を実施し、適応させるのを助けることです。
  3. チームと協力して、推定システムを開発します。あなたの仕事は、チームとこの取り組みを調整し、執行を提供することです。外部の勢力は品質の高いコードをタイムリーに期待しており、常に合理的であるとは限らず、要求に対するロジックを提供するわけでもありません。これを逃れることはできませんが、両側を管理する必要があります。チームが物事を成し遂げることで評判を確立したら、誰もがあなたの時間の見積もりを受け入れます。彼らは努力をしているなら、あなたが彼らを支援することを知る必要があります。

私はあなたの仕事が執行することだと言うとき、私はある種のドラコニアのリーダーシップスタイルを引き受けるつもりはありません。有能な個人のグループが、彼らがどのように振る舞うかについて意見を述べるとき、彼らはまた、規則に従わないことの結果に同意しなければなりません。最終的に誰かが担当し、あなたがそのチームリーダーであるので、それはあなたです。


1

頻繁にやり取りするか、静かな時間を与えて、邪魔されないようにしますか?

それらと頻繁にやり取りしてください。明らかに彼らを盗聴することのポイントではありませんが、彼らのマネージャーとして、あなたは物事の進行状況やより一般的なチットチャットについて彼らと定期的に会話する必要があります。おおよそ数時間に1回は適切な周波数に聞こえますが、耳で再生します。

単体テストの実施、コーディングスタイルなどのコーディングガイドラインに従うように依頼するか、適切と思われることを何でもやらせますか?

あなたは彼らがあなたがしているのとまったく同じ基準で機能していることを期待すべきです。単体テストを行い、ガイドラインに従う場合は、ガイドラインに従う必要があります。彼らは、うまくコードを書く方法と、それを教えるあなたの責任を学ぶ必要があります。

彼らに寛容にしてください。彼らが本当に8時間または4時間オフィスに来るかどうかを本当に気にしない、または職場でいくつかの「規律」を実施する必要があるなど?

私は最初はもっと訓練されますが、彼らが信頼できることを証明したら緩和します。人々に休みから4時間働くという信頼を与えることは問題を求めていますが、通常は遅く仕事をする大切な従業員にプロジェクト間で多少の余裕を持たせることは問題ありません。


5
「およそ数時間ごとに一度右の周波数の音」 -私のマネージャーは私を盗聴ままならば、私は個人的にそれを嫌うだろうと、多くの場合...
ペーテルTörök

1
@PéterTörökそれが、私が耳で演奏すると言った理由です。それは私にとっては適切なレベルですが、多くの人がより少ない方を好むと確信しています
トムスクワイア

0

あなたの3つのポイントに関連して:

頻繁にやり取りするか、静かな時間を与えて、邪魔されないようにしますか?

私はそれが本当にあなたが働く人のタイプに依存すると言うでしょう。固定のコーヒータイム(午前10時頃など)で話し合い、それ以外の場合は邪魔されずに単独で作業することを好む人もいます。彼らと一緒に(私は認めます、私はまさにそのとおりです)、私は通常、彼らがあなたの情報を読むときに彼らに選択を任せることができるように、私が電子メールを送信します。ちなみに、彼らが「メモをとった」かどうか尋ねないでください:-)そしてもちろん、いくつかの「より多くの」ガイダンス、より多くの相互作用が必要です。

単体テストの実施、コーディングスタイルなどのコーディングガイドラインに従うように依頼するか、適切と思われることを何でもやらせますか?

次のガイドラインに関しては、私にはかなり明確です。コーディングスタイル、always-provide-test-caseルールなどに関連するガイドラインを設定すると、持っているあなたがリード開発者であれば、それらを強制します。管理しているプロジェクトの場合、すべての開発者は、「スーパースター」であっても例外なく、ガイドラインに従う必要があります。

彼らに寛容にしてください。彼らが本当に8時間または4時間オフィスに来るかどうかを本当に気にしない、または職場でいくつかの「規律」を実施する必要があるなど?

人々がどのように働いているかをすでに知っていて、自信を壊さないという自信があるなら、規律を緩めることができます。しかし、この点については、あなたが定義するルール(またはルールなし)がすべての人に適用されるべきだと思います。重要なことは、例外がないことです。現在、「週に40の仕事をして、仕事が終わっていれば大丈夫」とだけ言っているプロジェクトマネージャーで働くことができてとてもうれしいです。そうすれば、ある朝遅くに来て、6時間しか働かず、次の2日間は9時間働けます。「仕事が終われば」それは問題ではありません。私はそのルールが好きです。


0

開発者の経験(プログラミングだけでなく、ビジネス環境でも)が、開発者と過ごす時間の重要な要素だと思います。私は現在、学校を卒業したばかりの一部の開発者と仕事をしていますが、文書化/テスト/標準的な方法だけでなく、対人関係の方法でもメールを送信するだけでなく、電話で連絡するか、直接会ってください)。私たちのビジネスの知識は、学ぶべき重要なことでもあります。同じ言葉の多くが、ソフトウェア開発の文脈とビジネスの文脈で非常に異なって使用されているからです。そして、これは頭字語に入る前です...


0

しかし、私はこれを行う方法をよく知りません、私はする必要があります

  1. 頻繁にやり取りするか、静かな時間を与えて、邪魔されないようにしますか?
  2. 単体テストの実施、コーディングスタイルなどのコーディングガイドラインに従うように依頼するか、適切と思われることを何でもやらせますか?
  3. 彼らに寛容にしてください。彼らが本当に8時間または4時間オフィスに来るかどうかを本当に気にしない、または職場でいくつかの「規律」を実施する必要があるなど?

私の提案は、どのスタイルがその個人に最適で、時間をかけて微調整するかについていくつかの会話をすることです。物事の進行状況を確認するために1日1回会いたい人もいれば、四半期に1回は過剰であると感じる人もいます。毎月正式に書かれたパフォーマンスのレビューが必要な人もいれば、パフォーマンスに関するチャットだけが必要な人もいます。重要なのは、誰かにとって効果があるものとそうでないものについて正直に理解できる段階との関係を築くことです。

これに対する裏返​​しは、個人の開発哲学を研究することですが、誰かが間違って分析された場合、これは難しい道である可能性があります。そのような哲学のいくつかの例が必要な場合は、Myers-Briggs、Enneagram、およびStrengths Finder 2.0を参照してください。


0

あなたは彼らにどのように働きたいか尋ねます
彼らが変えたいものなど。

一度にすべてではありません。ただ...物事が現れるように。
自然のまま。(または、彼らは恐怖を嗅ぐでしょう)

そして... あなたはそれらから何かを学ぶことさえできます。あなたがそれが事実であるとは思わないなら、(教育と経験の距離が長すぎる)彼らを成長させようと本当に気にしないでください、それは彼らを混乱させるだけです。

(その特別なケースでは、それをあきらめて鉄拳支配します、あなたが彼らに持っていない興味偽るよりも正直です)

民主的なプロセスを確立し、物事を投票し、問題について議論します。

そこにいるすべての大統領のように、あなたは最後の言葉、拒否権を守ります。
残りはグループ次第です。


0

あなたの人々が成長するのを助ける一つの方法は、彼らが彼らのベストを尽くすことをさせることです。

運がよければ、個人的な「テスト」基準が部門全体の基準よりも厳しい1〜2人のプログラマーがいます。その場合、それらの問題の「名誉システム」にそれらを置くことができ、あるいはそれらの方法を採用することさえできます。

「フレックスタイム」を使用すると、生産性の高い労働者により多くの余裕を持たせることができます。彼らが仕事を終わらせている限り、私は彼らの時間についてあまり心配しません。5〜6時間の「ノンストップ」時間を費やし、10時間のペースで時間を費やす他の人よりも多くの人がやって来ます。

しかし、マネージャーとしての仕事の1つは、弱点を修正することです。つまり、テスト標準が不十分なずさんなプログラマー、または生産性が十分でない人々に時間を費やしていないため、BEAR DOWnする必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.