2010-05-19 3 views
7

Ich arbeite in einem Unternehmen mit hunderten von Leuten, die Software für im Wesentlichen das gleiche Produkt schreiben. Die Qualität der Software muss hoch sein, weil so viele Leute davon abhängen (nicht zuletzt die Entwickler selbst). Aus diesem Grund hat jedes größere Problem zu einer neuen Überprüfung geführt - entweder automatisch oder manuell.Wie kann eine große Anzahl von Entwicklern Software schreiben, ohne dass ein umständlicher Prozess oder eine schlechte Software erforderlich ist?

Als Ergebnis wird der Prozess der Bereitstellung von Software immer lästiger. Das erfordert mehr Entwickler, die ... nun, Sie können sehen, dass es ein Teufelskreis ist.

Wir haben jetzt ein Problem mit der schnellen Freigabe von Software - die Vorlaufzeit, sogar um eine Zeile Code für ein sehr ernstes Problem zu ändern, ist mindestens einen Tag.

Mit welchen Techniken beschleunigen Sie die Bereitstellung von Software in einem großen Unternehmen bei gleichbleibender Softwarequalität?

+2

Historisch gesehen, sie dies nicht tun, wirklich. –

Antwort

6

Ich arbeite auch in einer großen und umständlichen Organisation. Ich hatte Erfolg, mehrere Methodologien zu implementieren, aber es gibt zwei besonders, die ich besonders wertvoll gefunden habe.

Iterative und inkrementelle Entwicklung - Halten Sie Ihren Release-Zyklus kurz und fest. Wenn in einem großen Team zwischen den Releases zahlreiche Änderungen vorgenommen werden, können Sie sich in einem Albtraum der Integration wiederfinden.

Große Organisationen neigen zu großen Projektplänen mit langen Entwicklungszeiten. Bekämpfe das. Ein Projekt über ein ganzes Jahr hinaus zu planen, macht keinen Sinn, wenn sich nach den ersten zwei Wochen der Entwicklung die gesamte Wahrnehmung ändert. Bedienen Sie Ihre Stakeholder, um sich daran zu gewöhnen, kleine inkrementelle Releases zu erstellen und sich an die sich ständig ändernden Anforderungen anzupassen.

Automatisierte Komponententests - Dies ist ein guter Weg, um sicherzustellen, dass Sie hochwertige Software veröffentlichen. Die schlimmsten Fehler werden durch scheinbar unschuldige Codeänderungen verursacht, die an anderer Stelle unbeabsichtigte Konsequenzen haben. Umfassende Komponententests sind vielleicht der beste Weg, um diese Art von Bug zu fangen. Wenn Sie zu test driven development oder behavior driven development graduieren können, noch besser.

Jede große Organisation wird einige mittelmäßige Entwickler haben. Es ist eine Tatsache des Lebens. Das automatische Komponententesten ist eine gute Möglichkeit, sie im Auge zu behalten. Lassen Sie einen Ihrer besseren Entwickler ihre Komponententests für sie schreiben. Sie werden Gewissheit haben, dass zumindest ihr Code funktioniert (auch wenn es hässlich ist).

+1

+1 - beide vereinbart. Die Anpassung ist schwierig, aber ich habe gesehen, dass schnellere Release-Zyklen (selbst für kleine Verbesserungen) die Qualität und die Moral erhöhen, und das sind zwei große Herausforderungen in einem großen Unternehmen. – wlangstroth

+0

Einverstanden auf beide Kommentare, danke dbyrne & Will. Wir implementieren Agile - was auch eine gute Möglichkeit ist, schlechte Entwickler zu erkennen. Und wir haben Komponententests (aber keine echte testgetriebene Entwicklung, außer in einigen Einzelfällen). Ich denke, hier gibt es wirklich zwei Herausforderungen - 1 (wie oben erwähnt) - zu identifizieren, WAS wir ändern müssen und dann 2, dass diese Änderung in einer großen Organisation implementiert wird, wo viele Leute dazu gebracht werden müssen, etwas Neues auszuprobieren. – Wikis

4
+0

Danke StudiousJoseph für die Links, vor allem den Joel-Test. Ich denke, wir haben eine Punktzahl von 5. Aber die Frage ist eher, wie man eine GROSSE Organisation zusammenbringt - gibt es etwas Besonderes für diese Umgebung? (Das sind natürlich immer noch nützliche Links!) – Wikis

2

Es gibt viele Möglichkeiten, den Prozess zu verbessern, aber die Schlüsselkomponente ist modularity. Durch die klare Trennung der Verantwortlichkeiten (sowohl im Code als auch in der Organisation) und die Definition klarer und konsistenter Schnittstellen kann ein großes Team aus vielen kleinen Teams bestehen, die alle miteinander verbunden sind.

+0

Ja, Matt S, Sie haben recht Recht mit Modularität - danke. Aber oft haben große Unternehmen mit viel Legacy-Code zu tun, als sie klein waren ... also muss die Modularität rückwirkend gemacht werden, und dafür gibt es nie genug Zeit ... = :-) Das gehört auch dazu das Problem - kurzfristiges Denken statt langfristiges Design. – Wikis

1

Wise aber düster Sprüche:

Etwas, das funktionieren könnte:

das Projekt so organisieren, dass es eine Kernanwendung von einer oder zwei Personen aufgebaut ist, vorzugsweise über eine Sprache betrieben. Lassen Sie dann alle Programmierer effektiv Benutzer des Kerns sein, indem Sie in dieser Sprache kodieren.

Ich denke an sprachbasierte Produkte: SAS, S/R, MATLAB usw.

+0

Danke Mike Dunlavey für das Kompliment. Deine Zitate erinnern mich an den Mythischen Mann Monat. Während wir Matlab verwenden, sind wir weit mehr als nur ein oder zwei Leute, die das Projekt neu starten. Diese Software hat tausende Mannjahre investiert (siehe meinen vorherigen Kommentar zu Legacy-Code). – Wikis

+1

@Mark: Zitat Bill Clinton, ich fühle deinen Schmerz. –

+0

Danke Mike Dunlavey! Ich fühle es auch ... = :-( – Wikis

Verwandte Themen