私はmcottleの答えが好きで、それを支持しましたが、他の答えがまだ出していない他のダイナミクスと議論をカバーしたいと思います。
第一に、mcottleの答えに暗示されているのは、特定のスキルレベルを下回ると、いくつかの問題がまったく不可能であるという事実です。残念ながら、あなたはこのアウトを見つける方法があるあなたのチームしようと失敗によるものであり、非常に高価な。失敗した後、これから学ぶべき2つのレッスンがあります。1つの選択肢は、より有能な開発者が必要であり、彼らを雇い、プロジェクトを大幅に予算超過およびスケジュール超過で完了することを学習することですが、少なくとも将来的には準備ができています。他の選択肢は、そのようなプロジェクトはあなたのチームにとって「難しすぎる」ことであり、そのようなことは将来試されるべきではありません。つまり、プロジェクトを放棄し、事実上同様のプロジェクトを放棄します。もちろん、「これを行うにはあまりにも愚かな」と表現されることはめったにありませんが、代わりに「私たちのシステムは非常に複雑です」または「レガシーコードがたくさんある」などと合理化されます。後者の見方は、何が可能か、どのくらいの期間/高価な開発が必要かという会社の見方を大きく歪める可能性があります。」
1つの質問は、あなたの会社の計画は正確に何ですか?さて、彼らは安くて若いプログラマーを雇います。3年が経ちました この3年間ずっと一緒にいたデベロッパーに対して、彼らは何をしますか?彼らは決して彼/彼女を昇給させませんでしたか?ここでのオプションは次のとおりです。
- 彼らは従業員を保持するために競争力のある昇給をしますが、その場合、なぜ彼らはシニア開発者の料金を支払うのに問題があるのですか?ただし、これに戻ります。
- 彼らは停滞しているため、やがて意欲やスキルが不足している従業員に「ボイルダウン」することになります。
- 彼らはより多くの上級従業員をより積極的に削除します。
次の2つのケースは、従業員の離職が多いことを意味します。これは、会社の知識を失い、継続的に従業員を増やすための支払いを意味します。2番目のケースでは、基本的に悪い開発者を選択しているため、スケジュールの増加という形でコストが上昇します。これがうまくいく方法は、プロジェクトXですべてが順調に進んでおり、ジムが2年で昇進していないため、ジムが突然去るまで、彼は次のように大幅に時間がかかります。 (おそらく)ジムほど良くない新しいジュニア開発者を雇って訓練する必要があります。これは、期待を再調整する方法です。
競争力のある昇給が提供されている場合でも、あなたが持っているのがジュニア開発者だけで、どこでどのように学ぶべきですか?あなたは基本的に、彼らのうちの1人が彼らの職場環境にもかかわらず自分自身で良い慣行を学び、最終的に他の人を指導することを望んでいます(緑の牧草地に去るのではなく)。一部の優れた開発者と「ポンプを準備する」ことは、はるかに理にかなっています。おそらく、初心者の文化を開発するでしょう。その結果、ジュニア開発者よりわずかに優れているだけで、文化的に有毒な人々にシニア開発者料金を支払うことになります。
特に非常に優秀な開発者の利点の1つは、誰も言及していないことに驚いていることです。彼らは容易に乗法要因になる可能性があるからです。ジュニア開発者とシニア開発者が同じ時間をかけてテーブルを作成する場合があります。ただし、優秀な開発者はそれを行いません。全員がテーブルを作成する時間を短縮するテーブルジェネレーターを作成します。代わりに/さらに、すべての人に可能なことの上限を引き上げます。たとえば、GoogleのMapReduceフレームワークを実装した開発者はおそらく非常に有能でしたが、ユーザーがMapReduceの大部分は、独自にアルゴリズムの大規模な分散バージョンを作成することはまったくできませんが、MapReduceを使用して簡単に実行できるようになりました。多くの場合、このダイナミクスはそれほど露骨ではありません。たとえば、ソース管理、テスト、および展開のプラクティスを改善することで、全員の能力が向上しますが、特定の人物を追跡するのは難しくなります。
反対側を少し議論するために、多分、上位者は正しいでしょう。経験豊富な開発者は必要ないかもしれません。ただし、そうであれば、開発は会社の重要な部分ではないように思われます。その場合、開発者を完全に排除し、既製のソフトウェアを使用するか、オンデマンドで請負業者を雇います。社内チームではなく請負業者だけを使用しない理由を調べる価値があるかもしれません。とにかく大量の従業員を解雇する場合は、請負業者を増やすことは問題になりません。