それは確かに簡単な答えではありません。これが私が計量するいくつかのことと、物事が時間通りに行われることを確実にするために私がする/奨励することです。
1.)優先順位を適切に設定します。プロジェクトは常にさまざまな程度で完了します。これは、バイナリの「完了」/「未完了」の切り替えではありません。最優先事項を最初に行うと、飲み込みやすくなります。理想的には、すぐに機能するようになるはずですが、必要なすべてのことを実行できるわけではなく、見栄えもよくありません。そこに到達したら、どうしても必要な場合はリリースできます。
2.)それを処理する最良の方法は、リリースをできるだけ小さくすることであることがわかりました。これにより、見積もりがより正確になります。上司または「市場」が見積もりを受け入れられないと判断した場合は、可能であれば、このタスクにより多くの開発者を割り当てることを検討してください。タスクを簡単に分割できない場合や、コードに精通している人が1人だけの場合があります。優先度が高くない場合は、時間がかかることをパワーに伝えてください。合理的な目標を設定し、期待を管理することが重要です。
3.)動機、報酬、罰については...これらの主題について本全体を書いた医師はたくさんいます。私の経験では、プログラマーにやりがいのあるものを提供し、プログラマーに自由にそれを実行させることは良いスタートです。聞くことは、マネージャーが成功するためにうまくやらなければならないことです。開発者が熟練している場合は、問題を説明し、開発者に解決策を考えさせることができるはずです。彼らの解決策があなたが考えていたものほど良くない場合、あなたはそれを提案してそこから行くことができます。新しいプログラマーであっても、何かを行う方法を指示するだけでは、ほとんど効果がありません。開発者に物事について考えさせることは、開発者が自分で問題を解決できるようにするのに役立ちます。これは委任に関連しています。これは、開発者が自分で作業を実行できる場合にのみ機能するためです。
4.)うまくいっている場合は、人々によく支払うことで売上高を減らします。通常、良い人を見つけるのにはるかに多くの費用がかかります。大規模なコードベースに慣れるには時間がかかります。また、採用プロセスは、マスタードを切ることができない人々に時間を費やすことを避けるのにも役立ちます。
5.)開発者が週末に遅くまで仕事をすることができるかどうかを尋ねます(要求しないでください)。これは、非常に重要な場合にのみ実行してください(たとえば、ユーザーがアクセスできないはずのデータにユーザーがアクセスできるようにするセキュリティ上の欠陥、準拠しなければならない新しい法律/規制の通過など)。彼らがノーと言った場合、彼らに対してそれを保持しないでください。物事が成し遂げられなかったのは彼らのせいではないでしょう。たとえそうだとしても、彼らが仕事をすることが期待されていない時間の計画を立てたのは合理的です。彼らが喜んで入ってきたら、彼らがあなたの心からの感謝を知っていることを確認してください。彼らが義務付けられていないときに助けるために彼らをうまく補償します、昼食を買うことはそれほど費用がかからず、それは非常に素晴らしいジェスチャーです。それがない限り、人々が遅く/週末に働くことを期待する習慣をつけないでください」
6.)物事が予定より遅れている理由を理解します。あなたは不可能なことを約束しましたか(利用可能な人々、期待される品質、割り当てられた時間を考えると)?他のプロジェクトが立ち上がってリソースを消費し、期限が調整されませんでしたか?コードは予想よりも実行が難しかったですか?時間の見積もりを出すのは難しいです。すべてを計画し、経験を積み、各開発者がタスクにかかる時間を知る必要があります。発生する可能性のある予期しない問題を補償し、プログラマーに上司やクライアントよりも早い期限を与えます。早くやっても大丈夫です。そして、ほとんどの場合、早い段階または時間どおりに完了している場合、ある種の説明があれば、締め切りに間に合わなかったことがより理解しやすくなります。
7.)覚えておいてください、それは通常、時間、品質、そしてお金に要約されます。通常は2つを選択できますが、3つ目は方程式のバランスを取る必要があります。したがって、それを迅速かつわずかな予算で行う必要がある場合は、品質が低下することが予想されます。あなたがそれを迅速にそして高品質で行う必要があるならば、多額のお金を払うことを期待してください、等々。
8.)私にとって最も効果的なのは聞くことだと思います。あなたの忙しすぎる吠え声の注文なら、あなたは会社の問題についてさえ知らないかもしれません。開発者が「コードがひどいので、デザインがひどいので、タイムリーに何かをやりたいのなら、すべてを書き直す必要がある」と言ったからといって、それが実現するわけではありません。しかし、そのようなコメントを聞いて、これを行う余裕がない、または市場で殺されるだろうと説明した場合、それは非常に高価になります。そして、物事がそれほど悪化しないようにするために何ができるかを尋ねます。時間の経過とともにクリーンアップできる方法があるかどうかを尋ねます。1つのクラスを(再)作成し、それに基づいて新しいものを構築することはできますか?一度に1つの機能/セグメント/モジュールを新しい設計にゆっくりと移行できますか?あなたはそれらがどこから来ているのかを理解しており、逆もまた同様です。おそらく少なくともいくつかの問題を解決することができます。妥協は両方の方法で機能することを覚えておいてください。
9.)負の強化は、より高い離職率をもたらすようであり、これはコストがかかります。あなたのコードに精通していない人がたくさんいることも、締め切りに役立ちません。お金は一つの動機ですが、私は以前より幸せな場所に行くために高給の仕事を辞めました、そして私はそこに一人ではないことを知っています。チームが良い仕事をしているときの無料の食事は、それほど高価ではありません。グループ活動は、従業員の時間を減らしたり、仕事の時間を奪ったりしているので、あまり熱心ではありません。それは時々機能しますが、従業員の個人的な時間を短縮して、友人と一緒にいる代わりに同僚と一緒に過ごすことができるようにすることは、それほど大きな報酬ではありません。全員に仕事をやめさせるのも費用がかかるので、会社の規模や文化などによって異なります。
うまくいけば、それはあなたの質問に答えるのに役立ちます。このスレッドの他の回答も良い提案です...デザインはコードがどれだけ速く書かれるかに大きな役割を果たします。