Woher wissen Sie, wie viele Programmierer ein bestimmtes Projekt benötigt, um erfolgreich zu sein?
Das Unternehmen, für das ich arbeite, führt Aufträge für Kundenunternehmen aus. Wir haben ein internes Lagerverwaltungssystem geschrieben, das die ortsbezogene Bestandsverwaltung, die Auftragsabwicklung, die Erstellung von Frachtbriefen, die Rechnungsstellung, die Frachtprüfung und das Berichtswesen (wahrscheinlich 50 Berichte) übernimmt. Es hat auch Barcode-Scan-Funktionen und ein Client-Portal zusammen mit Dutzenden anderer kleinerer Funktionen. Es enthält auch eine vollständige Zeitschaltuhr für Mitarbeiter. Es lässt sich in Quickbooks, UPS und FedEx integrieren. Es erledigt Arbeiten für mindestens 50 Kunden, die sich in ihrer Funktionalität geringfügig unterscheiden. Beispielsweise importieren wir Bestellungen aus Dateien, die der Kunde sendet, aber jeder Kunde sendet ein anderes Dateiformat (CSV, Excel, Flat File und Webservices), sodass wir weit über ein Dutzend Methoden zur Bestellungskonvertierung eingerichtet haben. Exporte sind die gleiche Geschichte.
Das Projekt ist komplex und wächst täglich mit über einer Viertelmillion Codezeilen. Es geht um 250.000 Zeilen VB.NET-Code, 6.200 Zeilen Ruby-Code und vielleicht 5.000 Zeilen PHP. Es hat auch eine MySQL-Datenbank mit etwa 200 Tabellen.
Aufgrund der sich ständig ändernden Anforderungen und unterschiedlichen Bedürfnisse von Dutzenden von Clients variiert der Code selbst stark in der Qualität von extrem schlechtem bis relativ gutem Code.
Derzeit hat dieses Projekt nur einen einzigen Programmierer - mich. Ich mache derzeit auch den gesamten Produktsupport für unser Unternehmen mit ca. 75 Mitarbeitern. Dies umfasst die Fehlerbehebung und Einrichtung neuer Clients sowie der erforderlichen neuen Funktionen. Außerdem versuchen wir, das Ganze so umzuschreiben, dass es zu 100% auf Ruby on Rails basiert. Und wir möchten das gesamte System innerhalb des nächsten Jahres auf den Markt bringen, um es von anderen Unternehmen nutzen zu können.
Derzeit haben wir nur mich als Programmierer, aber ich glaube nicht, dass das ausreicht. Hat jemand Empfehlungen, wie viele Programmierer ein Projekt dieser Größenordnung haben sollte oder wie wir vorgehen sollten, um die Antwort auf diese Frage zu finden? Insbesondere angesichts der Tatsache, dass die Geschäftsführung wünscht, dass das Produkt bis zum nächsten Jahr kommerzielle Qualität aufweist?
quelle
Antworten:
Ich würde mindestens 5 Personen sagen. Eins für Test, eins für Spezifikation, Support und Dokumentation sowie 3Devs. In Ihrem Fall müssen viele Dinge getestet werden, daher sollte ein 50% iger Tester nicht unvernünftig sein. Es sollte eine Person anwesend sein, die die Anforderungen aufzeichnet und die Kundenunterstützung beauftragt, Ihre Infrastruktur für Tests usw. einzurichten. Drei Entwickler sind meiner Meinung nach für ein Projekt wie dieses ziemlich niedrig. Ein großes Backend, das in viele Systeme von Drittanbietern integriert ist, und ein vollständiges Frontend mit extrem vielen benutzerdefinierten Berichten. Ich würde gerne haben.
Was passiert, wenn Sie gehen, krank werden, Urlaub machen usw. Eine Person pro Projekt ist niemals schlau. Es ist auch nicht gut, allein zu sein, da Sie sich ohne Kollegen nicht professionell weiterentwickeln können. Ich arbeite ziemlich oft alleine, baue neue Architekturen auf und so weiter, oft in Teams von etwa 5 Entwicklern, aber ich entwickle mich nie so sehr weiter, als wenn ich einem Kollegen sage, dass wir dies gemeinsam einrichten und uns eine Woche lang unterhalten, diskutieren und Frameworks auswählen. Die Programmierung von Paaren ist extrem hilfreich und kann nicht mit einem Entwickler durchgeführt werden. Wer wird Code-Reviews durchführen, wenn Sie sich unsicher fühlen? Wenn Sie stecken bleiben, wer wird Ihnen helfen? Ich würde ein Ein-Personen-Projekt nur dann durchführen, wenn es Teil eines größeren Umfangs wäre und bei Bedarf Expertenressourcen anfordern könnten.
quelle
Willkommen in der oft schwierigen Welt der Beschaffung !
Das Problem betrifft nicht die Projektgröße im Vergleich zur Teamgröße. Dies ist ein weit verbreitetes Missverständnis, das häufig andere Probleme verbirgt, die normalerweise mit dem Management zusammenhängen. Das Thema dreht sich alles um dreht Scope . Sie müssen entscheiden, was Sie mit Ihren aktuellen Ressourcen erreichen können - auch Sie. Anschließend müssen Sie entscheiden, ob Ihre Kapazität zur Bewältigung der Arbeitslast ausreicht, um die Aufgabe innerhalb des Ihnen zugewiesenen Zeitrahmens zu erledigen. Daher müssen Ihre Projektanforderungen identifiziert und abgegrenzt werden.
Wenn Sie eine Vorstellung vom Umfang Ihrer Anforderungen haben, können Sie den Arbeitsaufwand leichter bestimmen, der erforderlich ist, um innerhalb eines bestimmten Zeitrahmens ein Ergebnis zu erzielen. Wenn Ihre Ressourcen wahrscheinlich überlastet sind, benötigen Sie mehr Personal. Wenn Ihre Ressourcen wahrscheinlich nicht ausgelastet sind, können Sie möglicherweise Ihren Termin verschieben oder den Umfang Ihres Projekts erweitern.
Wenn Ihnen Ihr Bauchgefühl sagt, dass Sie nicht genug Personal haben, um das Projekt zu managen, haben Sie vielleicht Recht, aber Sie müssen verstehen, warum Sie das aus dem Bauch heraus sagen. Es reicht nicht aus, nur ein Gefühl zu haben. Stattdessen müssen Sie in der Lage sein, das Problem wissenschaftlich zu untersuchen, um Beweise für Ihre Instinkte zu liefern, und Sie müssen bereit sein, sich der Möglichkeit zu stellen, dass Ihre Instinkte möglicherweise sogar falsch sind. Sobald Sie Ihre Beweise gesammelt haben, müssen Sie sich mit Ihrem Management in Verbindung setzen, um den Umfang des Projekts zu reduzieren oder die verfügbaren Ressourcen zu erhöhen, um den Erfolg des Projekts zu gewährleisten auf den vorliegenden Beweisen.
quelle
Der Erfolg des Produkts / Projekts hängt vom Engagement des Unternehmens ab, das dafür bezahlt. Wenn sie mehr Programmierer / Support-Mitarbeiter einstellen, sinkt die Produktivität inhärent von einem Programmierer, der weiß, dass er trainieren, unterrichten, verwalten usw. muss. Nicht, dass es eine schlechte Sache ist eine Verringerung sein, bevor eine Erhöhung realisiert wird. Es besteht auch ein Bedarf an Geschäftsanalysten, Managern, Verkäufen und der Unterstützung des Produkts, sobald es im Handel erhältlich ist.
Das Hosten einer kommerziellen Anwendung ist viel mehr als nur die Schaffung einer soliden Plattform. Es gibt Support-Anforderungen, technischen Support, Fehlerbehebung, Benutzerschulung usw.
Haben Sie ein gutes Analyse- / Spezifikations- / Schätzverfahren? Wenn nicht, können Sie dies jetzt selbst tun.
Trainierst du gerade dein Gehirn? Wenn ja, seien Sie bereit, doppelt so hart zu arbeiten, wenn Sie erwarten, dass Sie diesen Prozess bewältigen und sich weiterentwickeln (Erhöhung fällig?).
Und hier ist die Antwort aus meiner früheren Erfahrung mit einer ähnlichen Situation bei der Preisgestaltung in Südkalifornien:
5-6 Personen && ~ 500k
1 Hauptentwickler / Manager-Träger aller Hüte (~ 100.000 - 120.000)
2 Sr. (sehr fähige, selbstgesteuerte) Programmierer mit guten DB-Kenntnissen und Fähigkeiten (2x ~ 80 - 100k)
1 Projektmanager für die Schnittstelle zum Management ($$?) Diese Person sollte auch in der Lage sein, die Anforderungen der App zu verstehen und diese Anforderungen direkt an die Programmierer zu kommunizieren
1? (HTML / UI) Entwickler? mit Javascript-Fähigkeiten (ich hasse Programmierung UI / Markup-Code)
1? Datenbank Person? Die meisten guten Programmierer haben jedoch kein Problem damit, skalierbare Datenstrukturen zu erstellen. Wenn Sie jedoch Optimierungsprobleme haben, sollten Sie zumindest einen Berater hinzuziehen
quelle
1 Programmierer auf einer großen Codebasis mit allen der Verantwortung der Konfiguration, Testen, Kommunikation, Unterstützung, Dokumentation und Bugfixing wird zum Schreiben neuen Code oder das Hinzufügen von Funktionen (oder sogar Refactoring alten Code) nicht viel Zeit haben , .
Teilen Sie Ihre Woche nach dem Prozentsatz dieser obligatorischen Aufgaben auf, die das Geschäft nicht erweitern, und Sie werden überrascht sein, wie schnell das Management zusätzliche Hilfe einstellt.
Bei großen Projekten entsteht ein gewisser Overhead, der nicht verschwindet (insbesondere, wenn Sie die ganze Zeit über neue Clients implementieren / testen). Dies ist der Grund, warum Sie Support-Rotationen und Support im Allgemeinen haben. Einige Teammitglieder haben also Zeit, an neuen Funktionen zu arbeiten.
Vielleicht möchten Sie auch in Büchern über Softwareschätzung suchen. Diese Bücher mögen nicht so klingen, als hätten sie viel zu sagen, aber sie enthalten interessante Fallstudien aus verschiedenen Bereichen und stützen ihre Behauptungen mit Beweisen.
quelle