プロジェクトに必要なプログラマの数を決定する方法


18

特定のプロジェクトを成功させるために必要なプログラマーの人数をどのように知っていますか?

私が働いている会社は、クライアント企業の注文を処理します。場所に基づいた在庫管理、注文処理、船荷証券の生成、請求書作成、貨物監査、レポート作成(おそらく50件のレポート)を処理する社内倉庫管理システムを作成しました。また、バーコードスキャン機能とクライアントポータル、およびその他の多数の小さな機能も備えています。また、従業員のフルタイムクロックも含まれています。Quickbooks、UPS、FedExと統合します。機能がわずかに異なる少なくとも50台のクライアントの作業を処理します。たとえば、顧客が送信したファイルから注文をインポートしますが、各顧客は異なるファイル形式(csv、excel、フラットファイル、およびWebサービス)を送信するため、十数個を超える注文変換方法がセットアップされています。輸出も同じ話です。

このプロジェクトは複雑で、毎日25万行を超えるコードで複雑さを増しています。これは、約250,000行のVB.NETコード、6,200行のRubyコード、そしておそらく5,000行のPHPです。また、約200のテーブルを持つMySQLデータベースもあります。

絶えず変化する要件と多数のクライアントの異なるニーズのために、コード自体の品質は非常に貧弱なコードから比較的良いコードまで大きく異なります。

現在、このプロジェクトにはプログラマーが1人しかいません-私です。私は現在、75人ほどの会社のすべての製品サポートも行っています。これには、トラブルシューティングと新しいクライアントのセットアップ、および必要な新しい機能が含まれます。さらに、私たちは全体を100%Ruby on Railsベースに書き換えようとしています。また、来年中にシステム全体を市場に出し、他の企業に使用したいと考えています。

現在、私たちにはプログラマーとしての自分しかいませんが、それで十分だとは思いません。この規模のプロジェクトに必要なプログラマの数や、その質問への答えをどのように決定すべきかについて、誰にも推奨事項がありますか?特に、経営者が来年までに製品の商業品質を望んでいるという事実を考えると?


11
私は電球の冗談を待っていた:(
Oded

lol ...タイトルをグーグルで検索すると、おそらくいくつか見つかるでしょう。私がグーグルで遊んでいたとき、私は実際にそれらの束を偶然見つけました笑。
kstevens715

8
要件が変化し続ける場合、この製品を出荷するために余分な手が必要になることはありません。最初に要件を特定する必要があります。
Oded

私の場合、それは間違いなく真実です。私が尋ねている質問は、おそらくあまり答えにならないことを知っています。しかし、他の人が取り組んでいるプロジェクトの種類と、それらのプロジェクトにフルタイムで参加している人の数を比較できれば、それが役立つかもしれません。
kstevens715

この質問はこの質問に非常に似ているようです。また、役に立つ答えがいくつか見つかるかもしれません。
-S.ロビンス

回答:


3

少なくとも5人と言います。1つはテスト用、もう1つは仕様、サポートとドキュメント、3devs用です。あなたの場合、テストすべきことがたくさんあるので、50%の熱心なテスターは不合理ではないはずです。要件を書き留め、テストなどのためにインフラストラクチャをセットアップするカスタマーサポートを依頼する人がいるはずです。このようなプロジェクトでは、3人の開発者が非常に少ないと感じています。多くのサードパーティシステムに統合された大規模なバックエンド、および非常に多くのカスタマイズされたレポートを備えた完全なフロントエンド。私はを頂きたい。

  1. 優れたバックエンド開発者(永続性/ビジネス層)
  2. アクションクラスとJavaScript CSSデザインを作成する優れたミドルエンド/フロントエンドの開発者。
  3. 優れた開発者代理アーキテクトですが、他の2人の専門家の助けを借りて、すべてのレイヤーでコードを作成します。この開発者は、JUnitフレームワークMaven Jenkins Gitの分岐などを設定することもできます。

あなたが去り、病気になったらどうなるか休暇を取ってください。プロジェクトごとに一人は決して賢くありません。同僚なしでは専門的に進化しないので、一人でいるのは良くありません。私は非常に頻繁に一人で働き、新しいアーキテクチャなどをセットアップします。多くの場合、5人の開発者のチームで作業しますが、同僚にこれを一緒にセットアップさせて、1週間話し合い、話し合ってフレームワークを選択します。ペアプログラミングは非常に有益であり、1人の開発者で行うことはできません。不確実だと感じた場合、誰がコードレビューを行いますか?あなたが動けなくなったら、誰があなたを助けますか?それがより大きな範囲の一部であり、必要に応じて専門家のリソースを呼び出すことができる場合にのみ、私は一人のプロジェクトに着手します。


1
去年の夏に2日間の休暇を取りましたが、誰かが私の家に侵入してラップトップを手に入れなければなりませんでした。他の多くの開発者とやり取りする必要がないため、私は常に真空で作業することについて話します。また、小さな町に住んでいると、ユーザーグループや参加するものすらありません。私たち(私?)は最近、実際にRailsへの移行を開始したときにテストコードを書き始めました。テストなしで開発することはもう想像できません。50%の専用テスターを持つというアイデアが大好きです。
kstevens715

1
少なくとも1人の開発者がデータベーススペシャリストでなければなりません。
-HLGEM

8

しばしば困難な資源調達の世界へようこそ!

問題は、プロジェクトサイズとチームサイズのいずれでもありません。これは非常に一般的な誤解であり、通常は管理に関連する他の問題を隠します。問題はすべてScopeに関するものです。現在のリソース(別名、あなた)で何を達成できるかを決める必要があります。次に、ワークロードを処理する能力が、割り当てられた時間枠内でタスクを処理するのに十分かどうかを判断する必要があります。したがって、プロジェクトのニーズを特定し、範囲を定める必要があります。

  • 既存のコードベースのクリーンアップに時間を費やしますか?
  • これはプロジェクトの成功を確実にするための基本的な要件ですか?
  • システムに追加する新しい機能はありますか?対処しなければならないプロジェクトの最も重要な側面は何ですか?また、ウィッシュリストにあるマイナーアイテムは何ですか?
  • 要件のいずれかを放棄するか、少なくとも次のメンテナンスリリースまで延期できますか?

要件の範囲がわかれば、特定の時間枠内で結果を達成するために必要なワークロードをより簡単に決定できます。リソースが過剰に使用される可能性がある場合、より多くのスタッフが必要になります。リソースが十分に活用されていない可能性がある場合は、締め切りを近付けるか、プロジェクトの範囲を広げることができます。

あなたの直感が、プロジェクトを管理するのに十分なスタッフがいないとあなたに告げるなら、あなたは正しいかもしれませんが、あなたがそれをあなたに教えているのはなぜであるかを理解する必要があります。単純に感情を持つだけでは十分ではありません。代わりに、本能をバックアップする証拠を提供するために科学的に問題を調べることができる必要があり、本能が間違っている可能性に直面する準備をする必要があります。証拠を収集したら-つまり、プロジェクトの範囲を決めたら、実際に経営陣と一緒に座って、プロジェクトの範囲を縮小するか、利用可能なリソースを増やしてプロジェクトの成功を保証する必要がある手元の証拠に。


範囲は、250K SLOCシステムをシュリンクラップ品質(または少なくともコンサルティングウェア品質)の何かに完全に書き直すことです。利点は、要件の収集と全体的な設計がおそらく既に行われていることです。これは小さなものではなく、他の責任を負っている1人の開発者にとっては問題ではありません。
デビッド

@DavidThornleyこれは、開発者の職務の範囲、期限、作業負荷、会社がすでに製品を販売している方法に大きく依存しています。私は1-2人のチームによって多くの複雑なプロジェクトが行われているのを見ましたが、それらはうまく管理されていたため非常に成功していました...そして失敗した多くのプロジェクトがありました。しかし、私はこのタスクが大きなものであり、それ自体がリソース調達の面で既に赤旗であることには同意します。大事なことは、最初に少し宿題をしなくても多くの人を雇うだけの価値はないということです。これが本当に私の答えのポイントです。:
S.ロビンス

スコープは、ここ2か月間かなり取り上げてきたものです。プロジェクトの20%が会社への影響の80%を占めています。それが私が注力していることです。残念ながら、影響の20%を占める80%が、より多くのコードと機能をスローすることで "緊急事態"に対処しようとするときに最前線に押し出されます。コアの問題を修正できるように、機能のフリーズを要求したことがあります。彼らは私に5日を与えました。言うまでもなく、それは5年後のことであり、中核となる問題の多くが残っています。投稿してくれてありがとう、とても助かります。
kstevens715

6

製品/プロジェクトの成功は、その支払いをした企業のコミットメントに依存します。彼らがより多くのプログラマー/サポートスタッフを雇うとすれば、訓練、教育、管理などをしなければならないことを知っているプログラマーの生産性が本質的に低下します。それは悪いことではありません。増加が実現する前に減少する必要があります。ビジネスアナリスト、マネージャー、販売、および製品が市販された後のサポートの必要性もあります。

商用アプリケーションをホストすることは、強固なプラットフォームを作成するだけではありません。サポート要件、技術サポート、バグ修正、ユーザートレーニングなどがあります。

適切な分析/仕様/推定手順はありますか?そうでない場合は、今すぐ開始します。これは自分で行うことができます。

あなたは今あなたの脳を鍛えていますか?もしそうなら、このプロセスを管理し、開発を続けると予想される場合は、2倍の努力をする準備をしてください。

そして、南カリフォルニア地域の価格設定で同様の状況にあった私の以前の経験からの答えは次のとおりです。

5-6人 && 〜500k

  • 1人の主任開発者/すべての帽子のマネージャー着用者(〜100k-120k)

  • DBを十分に理解し、スキルを備えた2人のシニア(非常に有能な自己主導型)プログラマ(2x〜80-100k)

  • 1管理者($$?)とやり取りするプロジェクトマネージャーは、アプリのニーズを理解し、それらのニーズをプログラマーに直接伝えることができる必要があります。

  • 1?(HTML / UI)開発者?JavaScriptスキル(UI /マークアップコードのプログラミングが嫌い)

  • 1?データベース人?ただし、ほとんどの優秀なプログラマーは、スケーラブルなデータ構造を作成するのに問題はありませんが、最適化の問題に取り組む場合は、少なくともコンサルタントが必要です。


1
+1あなたの内訳がとても気に入っています!SoCalで働くことを考えていたので、あなたが引用した給与の完全なOTは私を憂鬱に感じますが、Srの人々がMSc + 5yearsのようなものである場合、西ヨーロッパほど高くはありません。
農家

1
私は、エントリーレベルのプログラマーにサポート業務(クライアントのセットアップとマイナーな機能強化)を引き継ぎ、一般的な単調な仕事をすることもお勧めすることを除いて同意します。関連するスキルレベルによっては、いくつかの役割を組み合わせることができます。
jfrankcarr

すごい、So Calの上級開発者を80〜100Kで取得できますか?生活費を考えると、それはかなり低いようです。たぶん、「シニア」のさまざまなアイデアがあります。私がダラスで知っている上級開発者はそれよりもかなり多くなっています。
ケビンクライン

私たちはおそらく、どんな味が良いのかについても異なるアイデアを持っているでしょう。私は、この範囲内で働くことをいとわない過去10年間に多くの経験を持つ才能のある2人の.Net Sr.を雇いました。最新のMicrosoftスタック(TFS、.NET 4、C#、EF 4.1、MSSQL 2008 R2、なんとか..)を使用しましたが、きれいなコードを叩き出すことに問題はありませんでした。私たちは小さなチームでしたが、シニアを雇おうとしていた問題は、彼らが学習に抵抗し、意見が多すぎて荷物が多すぎたということでした(雇用ウィンドウもあまりありませんでした)
ハンゾロ

2

構成、テスト、通信、サポート、文書化、およびバグ修正のすべての責任を持つ大規模なコードベースの1人のプログラマーは、新しいコードを記述したり、機能を追加したり(あるいは古いコードをリファクタリングする)ための時間はあまりありません。

ビジネスを拡大しないこれらの必須タスクの割合で1週間を分割すると、管理者が追加のヘルプを迅速に採用することに驚くでしょう。

大規模なプロジェクトには関連するオーバーヘッドがある程度あり、それは消えません(特に、新しいクライアントで常に実装/テストしている場合)。これが、回転のサポートと一般的なサポートがある理由です。そのため、チームの一部の人は新しい機能に取り組む時間を持っています。

また、ソフトウェアの見積もりに関する本もご覧ください。これらの本は、言うべきことが多いように聞こえないかもしれませんが、さまざまな分野からの興味深いケーススタディが含まれており、証拠で主張を裏付けています。


私の時間の95%は、これらのタスクの1つを行うために費やされています。サポートローテーションのアイデアが好きです。笑って回転できる人を雇うなら、それは考慮すべきことかもしれません。たとえば、今日、私は実際にいくつかのコアコードで作業するようになっていましたが、誰かがバッテリーを必要としていたため中断されました。
kstevens715

@ kstevens715-誰かが技術的な子供であっても、助けが必要なようです。少なくとも5桁の収入があなたに支払われていると仮定します。バッテリーを取得するように言われた場合、従業員には約10ドルかかります(私の時給の35%)。
ラムハウンド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.