Sie sehen sich Hilfeinhalte der folgenden Version an:

Arbeit anhand einer Definition von „Fertig“

Jedes Team hat ein eigenes Verständnis davon, was „fertig“ bedeutet, aber es ist wichtig, eines zu haben und sicherzustellen, dass eine Story die definierten Kriterien erfüllt, bevor sie akzeptiert wird. 

Einige häufig von Teams angegebene Kriterien sind:

  • Code für die Formatierung überprüft
  • Kommentare/Javadoc hinzugefügt
  • Erfüllt erforderliche Testabdeckungsstufen
  • Besteht Einheits- und Integrationstests
  • In der QA-Umgebung überprüft
  • Lokalisierung implementiert

Ohne eine entsprechende Definition treten häufig Situationen auf, in denen vieles halbfertig, aber nichts abgeschlossen ist.

Programmier- und Formatierungskonventionen definieren und einhalten

Dinge wie Einzüge und Leerräume erscheinen möglicherweise nicht wichtig, aber korrekt formatierter Code trägt erheblich zur Lesbarkeit und Pflegeleichtigkeit bei.  Konventionen sollten im Team abgesprochen und beim Programmieren befolgt werden.

Auf hohe Testabdeckung abzielen

Je größer eine Projektimplementierung, desto mehr Zeit ist auch erforderlich, um sie zu testen.  Ohne entsprechende Testabdeckung kann das Testteam nicht skalieren und die Entwickler kommen irgendwann vor lauter Bugs nicht mehr hinterher.

Entwickler sollten TDD praktizieren und fehlschlagende Einheitstests vor dem Produktionscode schreiben, der ihre Anforderungen erfüllt.  Die Qualitätssicherung sollte einen automatisierten Satz von Abnahmeprüfungen erstellen, um sicherzustellen, dass das System von einer hohen Ebene aus wie erwartet funktioniert.

Es gibt benutzerdefinierte Frameworks, z. B. Jackalope und Prosper, um die Imitation von JCR-APIs zu vereinfachen und so die Produktivität der Entwickler beim Schreiben von Einheitstests zu gewährleisten.

Immer bereit für Demos sein

Das System sollte am Ende jeder Iteration für Demos im Unternehmen zur Verfügung stehen.  Indem das System immer bereit für Demos gehalten wird, ist das Team immer nur eine Iteration von Produktionsbereitschaft entfernt und technische Rückstände werden auf ein vertretbares Maß beschränkt.

Kontinuierliche Integrationsumgebung implementieren und verwenden

Das Implementieren einer kontinuierlichen Integrationsumgebung ermöglicht das einfache und wiederholte Durchführen von Einheits- und Integrationstests.  Außerdem werden so Bereitstellungen vom Entwicklungsteam entkoppelt, was andere Teile des Teams effizienter und Bereitstellungen stabiler sowie vorhersehbarer macht.

Entwicklungszyklus durch niedrige Erstellungszeiten beschleunigen

Wenn Einheitstests zu viel Zeit beanspruchen, lassen Entwickler sie aus, wodurch sie ihren Wert verlieren.  Wenn es viel Zeit in Anspruch nimmt, den Code zu erstellen und bereitzustellen, werden diese Aufgaben seltener durchgeführt.  Indem Sie kurze Erstellungszeiten zur Priorität machen, wird sichergestellt, dass die Zeit, die wir in unsere Testabdeckung und CI-Infrastruktur investiert haben, weiterhin der Produktivität des Teams zugutekommt.

„Sonar“ sowie andere statische Codeanalysewerkzeuge optimieren und ihre Berichte verwerten

Codeanalysewerkzeuge haben nur dann einen Wert, wenn ihre Berichte vom Entwicklerteam verwertet werden.  Ohne die Optimierung der Analysen, die diese Tools bieten, sind die generierten Empfehlungen nicht relevant und verlieren ihren Wert.

Der Pfadfinderregel folgen

Pfadfinder haben eine Regel: „Hinterlass es besser, als du es gefunden hast.“  Sofern sich alle Mitglieder des Entwicklerteams an diese Regel halten und eine Verbesserung vornehmen, wenn sie einen Fehler sehen, wird der Code konstant verbessert.

Implementierung von YAGNI-Funktionen vermeiden

YAGNI (für „You Aren’t Gonna Need It“, zu deutsch: „Du wirst es nicht brauchen“)-Funktionen sind Dinge, die implementiert werden, wenn erwartet wird, dass sie in der Zukunft benötigt werden, momentan aber nicht benötigt werden.  Idealerweise sollte der einfachste Code implementiert werden, der heute funktioniert, und anhand konstanter Refaktorierung sichergestellt werden, dass sich die Architektur des Systems mit den Anforderungen und der Zeit weiterentwickelt.  Dies ermöglicht eine Konzentration auf das Wesentliche und verhindert das Aufblähen des Codes sowie das Einschleichen von Funktionen.

Dieses Werk unterliegt den Bedingungen der Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.  Twitter™- und Facebook-Beiträge fallen nicht unter die Bedingungen der Creative Commons-Lizenz.

Rechtliche Hinweise   |   Online-Datenschutzrichtlinie