明日から8年間の.NETの経験を持つ上級開発者が11,000行のコードのアプリケーションに取り組んでいます。チームには、私と別のプログラマがいます。どちらも約3年の経験があります。
これは、マネージャとしての最初のプロジェクトです(私はプロジェクトの開発者でもあります)。これは、既に確立されているコードベースに誰かを紹介する必要があったのはこれが初めてです。明らかに、各モジュールやデプロイメントプロセスなどを調べて、ソース管理リポジトリの場所、ドキュメント(これは最適ではありません)などを渡します。
彼らが新機能を書き、バグを修正する準備ができるまでに、どれくらいの期間彼らに与えるべきですか?
私は初日にいくつかの優先度の低いバグを割り当てます。そうすれば、新しい開発者にコードベースに慣れる時間を与えて、すぐに完了しなければ誰も悲鳴を上げることはありません。
最も重要なことは、最初の数週間に彼のすべての作業のコードレビューを行うことです。男が間違った方向に進んでいるか、会社のコーディング標準に従っていないことに気づかないでください。彼が最初から何が期待されているかを知っていることを確認することをお勧めします、そしてコードレビューはこれを確実にします。もちろん、コードレビューはすべての従業員にとって良いことだと思います(導入前にコードの100%をレビューします)が、新しい従業員にとっては非常に重要であり、質問に答えたり、持っていないかもしれないドキュメントを参照したりできる担当者が直接行う必要があります。必要に応じてまだ見ています。
あなたが望まないのは、他の人とは異なるスタイルを使用して新しい人がやって来ることです。新しい場所で使用されているコードスタイルと競合する場合でも、以前のジョブのコードスタイルを使い続けようとすることがよくあり、他の開発者の混乱と煩わしさを生み出す可能性があります。
経験豊富な開発者でさえ気づいたことの1つは、面接での見た目ほど良くない人がいることです。コードレビューを使用すると、これをすばやく見つけて修正できるためです。それは彼らが実際に何かを成し遂げることも奨励します、私はコードレビューされていない新入社員が彼らに何をしているのか誰にも見せずにプロジェクトを引きずり、そして彼らがヒットしないことを知っていた締め切りの1週間前に去ったのを見ました。彼らは頭の中にいて、プロジェクトのどの部分も実際には完了していませんでした。あなたが本当に働いていることを本当に確信するまで、新しい人と一緒に早くそして頻繁にチェックする方が良いです。
また、新しい人があなたのレガシープロジェクトの状態にびっくりするのは正常です。それは彼がそうあるべきだったと彼が思う方法で設計されていません。これを期待し、彼の意見を聞いて、彼の言うことすべてを自動的に却下しないでください。特に、この人はあなたや他の開発者よりも多くの経験を持っているようです。彼はあなたが考えていなかったことを見るかもしれません。ただし、マネージャーとして、提案された変更と現在のワークロードおよび期限とのバランスをとる必要があります。既存のコードをリファクタリングする方法を学ぶのにある程度の時間を費やしたり、特に新しい人がいくつかの有効な懸念を抱いている場合は、時間の見積もりに数時間を費やしたりすることができます。おそらく、完全な書き直しをサポートすることはできません(新しいユーザーの多くは、最初からやり直すべきだと考えています)が、リファクタリング計画を作成して、最悪の問題を修正することができます。アップ。
彼が完全に貢献することが期待されていない(そしてクライアントによる彼の時間を完全に説明している)時間がある場合、それは彼があなたがやりたかったがまだしていないそれらのリファクタリング作業のいくつかから始めることができるときかもしれませんする時間がありました。新しい人のトレーニング期間を使用して、プロジェクト計画にないいくつかのことに対処するのは良いことです。彼らはコードベースを学ぶことができ、彼らがしたいことがうまくいかない場合でも、まだそれらを既存のスケジュールに織り込んでいないため、既存のスケジュールに影響を与えていません。そして、それが機能するなら、あなたは将来のメンテナンスをより簡単にしたり、セキュリティをより良くしたり、問題が何であれ大きな勝利を収めるかもしれません。
小さなタスク-全体像を必要としないもの-からすぐに始めてください。
彼らが自信を持ってコードベースに慣れるにつれ、彼らをどんどん大きくしていくためのタスクを増やしていきます。それがどれほど速く起こるかは、主にそれらに依存します。
コードを掘り下げるにはもっと時間がかかり、最初の数日/週の間に多くの質問が出されることを理解して、私は常に自分に割り当てられたタスクをバットの右側に割り当てたいです。
実際に行って何かを修正または変更する必要があるまで、プロジェクトに頭を完全に回すことができないことに気づきました。
また...プロジェクトがどのように機能するかをどのように説明しているかに関係なく、常に「ああ、私はあなたに伝えるのを忘れていました」、「私たちはこの問題に遭遇したので、私たちはこれをしました」あなたは実際に仕事を始めます。
オープンソースコミュニティでは、プロジェクトに参加したいと思ったすべての人が最初にいくつかの小さな問題に対処します。彼または彼女が問題を非常にうまく処理できる場合、より重要なタスクが彼または彼女に割り当てられます。このようにして、彼らはプロジェクトの中核開発者になります。
この上級開発者は.NETの経験が8年あるため、修正する簡単なバグをいくつか割り当てることができます。彼がそれらに対処するのが簡単であれば、彼に複雑な問題を割り当てて、アプリケーション全体に慣れるのを助けることができます。その後、彼は新しい機能を書き始め、奇妙な問題を分析し始めることができました。ただそれをしてください、セットアップ時間はありません!
どのぐらいの間?
ロープの長さは?
彼が快適なとき:彼が最初のバグを修正したとき-> 彼は準備ができています。
8年の経験。私はただ彼を投げ込みます。彼は泳げるはずです。他の人が指摘したように、小さな簡単なタスクから始めます。それは彼がコードのチェックイン/チェックアウトのプロセス、そしてあなたが持っている他の開発プロセスをいじるのを許します。
私は何度も転職しており、最初の1週間はすべての人の貢献者でした。最悪の場合、コードをコンパイルするのに1週間かかりました(少なくとも10万行以上のコード)。そのプロジェクトの完全なビルドには8時間かかりました。
私は最初の1週間は80時間ほど働いていました(プロジェクトはかなり遅れていました)。
答えは次のとおりです。アプリで何かエラーを1つ修正するか、GUI要素の色を変更する場合は、約5分(ここにコードを記述します)、アプリのアーキテクチャ全体を完全に再設計して、少し長く必要です。
それはあなたが彼に期待する仕事に本当に依存します。
小さなアプリや経験のある開発者にとって、基本的なバグには1日で十分だと思います。関係するバグまたは1週間近くの小さな機能(問題のあるドメインとアーキテクチャーが明確になったら)。