特定のプロジェクトを成功させるために必要なプログラマーの数をどのようにして知ることができますか?
私が勤務している会社は、クライアント企業の注文に対応しています。私たちは、ロケーションベースの在庫管理、注文処理、船荷証券の生成、請求、貨物の監査および報告(おそらく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 based。そして、システム全体を次の他社が使用する年程度。
現在、私はプログラマーとして私しかいませんが、それで十分だとは思いません。この規模のプロジェクトに必要なプログラマーの数や、その質問への回答をどのように決定するかについての推奨事項はありますか?特に、経営者が来年までに製品を商用品質にしたいと考えているという事実を踏まえると、
私は少なくとも5人と言います。 1つはテスト用、もう1つは仕様、サポート、ドキュメント、および3devです。あなたのケースではテストすべきことがたくさんあるので、50%の専任テスターが不当であってはなりません。要件を書き留め、テストなどのためにお客様のインフラストラクチャをセットアップするカスタマーサポートに連絡してください。私が感じる3人の開発者は、このようなプロジェクトではかなり低いです。多くのサードパーティシステムに統合された大規模なバックエンドであり、非常に多くのカスタマイズされたレポートが前に付いています。私はを頂きたい。
あなたが去ったらどうなるか、病気になって休暇を取るなど。プロジェクトごとに一人は賢くない。同僚なしでは専門的に進化しないので、一人でいるのも良いことではありません。私はかなり頻繁に一人で作業し、新しいアーキテクチャなどをセットアップします。多くの場合、たとえば5人の開発者のチームで作業しますが、同僚にこれを一緒にセットアップさせ、1週間話し合って話し合うほど、進化することはありません。フレームワークの選択。ペアプログラミングは非常に重要であり、1人の開発者で行うことはできません。不安を感じた場合、誰がコードレビューを行うでしょうか。あなたが動けなくなった場合、誰があなたを助けますか?それがより大きな範囲の一部であり、必要に応じて専門家のリソースを呼び出すことができた場合にのみ、私は一人のプロジェクトを引き受けました。開発者としてのあなたは外部からストレスを受けるべきではないので、前述のカスタマーサポート担当者は、すべての外部障害をブロックするスクラムマスターとして行動することができ、エンドユーザーが要件を変更したい場合、サポート、新しいCR、および理由を優先することができます。恐れていた。
リソーシングのしばしば困難な時代へようこそ!
問題は、プロジェクトサイズとチームサイズのどちらでもありません。これは非常に一般的な誤解であり、通常は管理に関連する他の問題を隠すことがよくあります。問題はすべてScopeについてです。現在のリソースで何を達成できるかを決定する必要があります。次に、ワークロードを処理する容量が、割り当てられた時間枠内でタスクを処理するのに十分かどうかを判断する必要があります。したがって、プロジェクトのニーズを特定して範囲を指定する必要があります。
要件の範囲がわかれば、特定の時間枠内で結果を達成するために必要なワークロードをより簡単に決定できます。リソースが過剰に使用される可能性がある場合は、より多くのスタッフが必要になります。リソースが十分に活用されていない可能性がある場合は、期限を近づけるか、プロジェクトの範囲を拡大できる可能性があります。
あなたの直感がプロジェクトを管理するのに十分なスタッフがいないとあなたに言った場合、あなたは正しいかもしれませんが、あなたの直腸があなたにこれを言っているのはなぜかを理解する必要があります。ただ感じるだけでは十分ではありません。代わりに、本能をバックアップする証拠を提供するために、問題を科学的に調査できる必要があり、本能が間違っている可能性に直面する準備ができている必要があります。証拠を収集したら-つまり、プロジェクトのスコープを設定し、実際に管理者と一緒に座って、プロジェクトのスコープを縮小するか、プロジェクトの成功を確実にするために利用可能なリソースを増やす必要がある手元にある証拠に。
製品/プロジェクトの成功は、それを支払う会社のコミットメントに依存します。彼らがより多くのプログラマー/サポートスタッフを雇うつもりなら、それは悪いことではないが、トレーニング、教育、管理などをしなければならないことを知っている1人のプログラマーに固有の生産性の低下があります。増加が実現する前に減少する必要があります。ビジネスアナリスト、マネージャー、販売、製品が市場に出たら製品のサポートも必要です。
商用アプリケーションのホスティングは、強固なプラットフォームを作成するだけではありません。サポート要件、技術サポート、バグ修正、ユーザートレーニングなどがあります。
適切な分析/仕様/推定手順がありますか?そうでない場合は今すぐ開始で、自分でこれを行うことができます。
あなたは今あなたの頭脳を働いていますか?もしそうなら、もしあなたがこのプロセスを管理し、開発を続けることが期待されるなら、2倍の努力をする準備をしてください(昇給しますか?)..
そして、これが南カリフォルニア地域の価格設定で同様の状況にあった私の以前の経験からの答えです:
5-6人 && 〜500k
すべての帽子のリーダー開発者/マネージャー着用者1人(〜100k〜120k)
2つのシニア(非常に有能な、自己主導型)プログラマー、優れたDBの理解とスキル(2x〜80-100k)
1人のプロジェクトマネージャーが管理($$?)とやり取りし、この人もアプリのニーズを理解し、それらのニーズを直接プログラマーに伝えることができる必要があります
1? (HTML/UI)開発者? JavaScriptスキル(プログラミングUI /マークアップコードが嫌い)
1?データベースの人?ただし、ほとんどの優れたプログラマーはスケーラブルなデータ構造を作成するのに問題はありませんが、最適化の問題に取り組む場合は、少なくともコンサルタントが必要です。
大規模なコードベースで1人のプログラマーがallを構成し、構成、テスト、通信、サポート、文書化、バグ修正を行う場合、新しいコードを記述したり、機能を追加したり(または古いものをリファクタリングすることすら)、それほど時間はかかりません。コード)。
ビジネスを拡大しないこれらの必須タスクのパーセンテージで1週間を分類すると、管理がどれほど迅速に追加の支援を必要とするかに驚かれることでしょう。
大規模なプロジェクトには、解消されない一定の関連するオーバーヘッドがあります(特に、新しいクライアントを常に実装/テストしている場合はそう思われます)。これが、サポートローテーションと一般的なサポートがある理由です。チームのメンバーの中には、新機能に取り組む時間のある人もいます。
また、ソフトウェアの見積もりに関する本も調べてみてください。これらの本は彼らが言うべき多くがあるように聞こえないかもしれません、しかし彼らは様々な分野からの興味深いケーススタディを含み、証拠で彼らの主張を裏付けています。