Archiv für die Kategorie 'Agile Prozesse'

Jun
29

Wir haben vor kurzem mit Hilfe eines Plugins für unseren Continous-Integration-Server ein kleines Spiel ins Leben gerufen, das “Continous Integration Game”. Bei jedem Commit erhält der jeweilge Entwickler Plus- oder Minuspunkte, je nachdem, wie erfolgreich der anschließende Build des CI-Servers war. Pluspunkte gibt es z.B. für das “Reparieren” von Fehlern und Warnungen im Code, Minuspunkte für die Verursachung selbiger.

Wir starten das Spiel jede Woche neu, der tägliche Stand geht morgens per Mail an alle Entwickler. Außerdem erhält der Wochensieger einen Ehrenplatz im Flur vor dem Entwicklerbereich, wo ihn nahezu die gesamte Firma bewundern kann. Inklusive Lorbeerkranz, Foto und gülden eingefasst:

Das Feedback ist sehr positiv. Das Portrait sorgte für etlichen Gesprächsstoff und zwischen den Entwicklern entbrennen teilweise kleine Wettbewerbe um die Spitzenplätze :-) Natürlich sollte man das ganze nicht zu ernst nehmen, schließlich ist es nur ein Spiel. Aber es macht den Beteiligten bis jetzt Spaß und hat messbar positiven Einfluss auf die Qualität des Codes.

Mai
27

Über meine mobile Retrospektiven-Box hatte ich ja bereits geschrieben. Vervollständigt durch ein Mini-Whiteboard (60 x 45cm) kam diese gestern nun endlich bei der ersten Retrospektive zum Einsatz: Einem Reflection Workshop in einem unserer Entwicklungsteams.

Zur Retrospektive waren nicht nur die Entwickler eingeladen, sondern auch der zuständige Product Manager/Product Owner und Vertreter der QA-Abteilung. Quasi das engere, tägliche Arbeitsumfeld des Teams.

Gleich zu Beginn bekamen alle Anwesenden zwei Karteikarten in die Hand gedrückt: Eine blaue für Dinge, die in der letzten Iteration gut gelaufen sind und so beibehalten werden sollen, sowie eine rote für Probleme. In fünf Minuten Bedenkzeit wurden die Karten beschriftet und an die Tafel gepinnt. Dadurch, dass jeder nur eine Problemkarte hat, wurde eine Fokussierung auf das “dringendste” Problem forciert und die Dauer der Veranstaltung begrenzt. Erfahrungsgemäß ufern Retrospektiven mächtig aus, wenn jeder Teilnehmer sein Feedback uneingeschränkt in die Runde werfen kann. Die Verwendung von Karteikarten und die Beschränkung selbiger ist in sofern – verbunden mit einer ordentlichen Moderation, möglichst durch eine neutrale Person – eine gute Möglichkeit zur Kanalisierung der Ergebnisse.

Nachdem die Karten an der Tafel waren durfte jeder Teilnehmer seine eigenen erläutern. Auch hierbei ist es wieder wichtig, dass der Moderator all zu ausufernde Ausführungen und Diskussionen unterbindet.

Durch die Erläuterungen haben alle Anwesenden in etwa den gleichen Kenntnisstand und bereits etwas Zeit gehabt, über Vorschläge für mögliche Verbesserungen nachzudenken. Diese wurden nun zur Diskussion gestellt und festgehalten. Als letzter Schritt erfolgte eine Gewichtung der Vorschläge durch das Team: Was davon ist wirklich wichtig und realistisch umzusetzen? Was wollen wir in der nächsten Iteration in Angriff nehmen, wer übernimmt welche Aufgabe und bis wann?

Über die so durchgeführte Retrospektive habe ich bereits positives Feedback aus dem Kreis der Teilnehmer bekommen. Weiterhin konnten wir erste Verbesserungen bereits in Angriff nehmen. In der nächsten Woche werden wir den Erfolg der vorgenommenen Änderungen überprüfen. Ich bin gespannt :-)

Mai
07

In den letzten Tagen haben wir bei Zalando ein neues, internes Development-Wiki an den Start gebracht. Das dürfte eine häufig wiederkehrende Aufgabe in vielen Unternehmen sein. Daher möchte ich an dieser Stelle meine bisherigen Erfahrungen für ein funktionierendes Setup zum Besten geben.


Wiki-Engine

Ich benutze Mediawiki – kostenlos, Open Source, PHP + MySQL. Läuft auf jedem XAMPP-basierenden Webserver bzw. auf jedem Webserver, der PHP und MySQL unterstützt. XAMPP gibt es wiederum für jedes halbwegs verbreitete Betriebssystem.

Hat man Mediawiki installiert kann man eigentlich schon loslegen. Allerdings gibt es in der Regel bei internen Wikis noch ein paar zusätzliche Bedürfnisse. Dafür stehen diverse Extensions zur Verfügung.

Benutzerregistrierung und Freischaltung
Um eine Registrierung neuer Benutzer mit einer administrativen Freischaltung zu verbinden bietet sich die Extension Confirm user accounts an (http://www.mediawiki.org/wiki/Extension:ConfirmAccount). Von Hause aus besitzt Mediawiki nämlich keinen derartigen Workflow, sondern es kann sich einfach jeder registrieren.

Letzte Änderungen anzeigen
In meinen Augen ein wirklich wichtiges Plugin: News (http://mediawiki.org/wiki/Extension:News). Zeigt die letzten Änderungen im Wiki an, kann auch nach Kategorien filtern und bietet noch etliche weitere Einstellungen. So kann man z.B. eine Startseite bauen, welche die neuesten Einträge pro Abteilung anzeigt.


Alte Artikelversionen löschen

Special:DeleteOldRevisions2 (http://www.mediawiki.org/wiki/Extension:SpecialDeleteOldRevisions2) ermöglicht das Löschen alter Artikelversionen. So kann man z.B. Platz sparen oder sensitive Informationen aus der History eines Artikels verschwinden lassen.


Benutzer Löschen

Möchte man Benutzeraccounts löschen, weil der betroffene Anwender z.B. ausgeschieden ist oder es sich um einen Testaccount handelte, ist man mit User Merge and Delete (http://www.mediawiki.org/wiki/Extension:User_Merge_and_Delete) gut beraten. Die Extension löscht nicht nur den Account. Sie sorgt auch dafür, dass der Datenbestand konsistent bleibt, indem die Beiträge des gelöschten Users einem anderen (im Zweifel anonymen) Benutzer zugeordnet werden.

Syntax Highlighting
Für IT/Entwickler-Wikis, welche Quellcode enthalten, interessant: Syntax Highlighting für bessere Lesbarkeit. Hier habe ich mit SyntaxHighlight GeSHi (http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi) gute Erfahrungen gemacht.


Skype Links

Wird Skype im Unternehmen (oder wo auch sonst) eingesetzt bietet sich noch die Skype-Extension (http://www.mediawiki.org/wiki/Extension:Skype) an. Diese muss zwar vor der Installation erst von Hand in eine PHP-Datei kopieren, anschließend kann man aber Skype-Links direkt ins Wiki-Markup einbauen und so Ansprechpartner quasi per Klick erreichen.

Die Extensions laufen übrigens alle problemlos mit der Mediawiki-Software 1.15.3.

Mai
04

Inhalt: Ausreichend Kugelschreiber, Magnetpins und fertige Überschriften für Whiteboards sowie Karteikarten. Damit bin ich – außer von einem Raum und der Mithilfe der Teams – von nichts mehr abhängig bei der Durchführung von Retrospektiven.

Apr
28

Was ich damit sagen will:

Es ist egal, wie der Prozess heißt – Hauptsache, er funktioniert.

Zalando ist ein äußerst erfolgreiches Startup. Allein seit Jahresbeginn hat sich unser Umsatz vervielfacht und die Anzahl unserer Mitarbeiter ist um ein Drittel gewachsen. Auch in der IT, die mit der komplexen Shop-Infrastruktur und den daran hängenden Prozessen das Rückrat unseres Erfolgs bildet. Der Preis des schnellen Wachstums ist wie so oft ein gelindes Chaos. Viele Dinge funktionieren, ohne, dass jemand weiß, warum eigentlich. Was nicht so schlimm ist, solange die Dinge auch wirklich funktionieren. Viele Abläufe unterscheiden sich von Bereich zu Bereich. Etliches wird so gemacht, weil es schon immer so war. Erfolg ist, abgesehen von den Verkaufszahlen, oft nur am Bauchgefühl messbar.

Viele Baustellen also, und viele Reibungsverluste.

Nichtsdestotrotz legen wir ein beeindruckendes Entwicklungstempo vor. Jede Woche releasen wir eine neue Version des Webshops mit etlichen neuen Features. Und auch unsere internen Tools werden stark vorangetrieben. Dieses Tempo dürfen wir nicht verlieren.

Von daher ist es eine echte Herausforderung, die Prozesse in unser IT weiterzuentwickeln – oder überhaupt erst einmal Standards einzuführen.

Was sich bereits herausgestellt hat: Von jetzt auf gleich alles umzukrempeln funktioniert nicht. Ähnlich wie bei VZ zum Beispiel Scrum mit aller Macht von oben her durchzudrücken kommt nicht infrage – und ist auch nicht gewünscht. (Und ehrlich gesagt haben wir haben auch keine so großen Probleme, als dass es notwendig erschiene :-) ). Außerdem würden wir dadurch definitiv an Tempo verlieren, was wir uns momentan nicht leisten können, nicht leisten wollen. Weiterhin haben wir viele parallel laufende Projekte, die sich alle stark unterscheiden. In der Teamgröße, der Laufzeit, den Deadlines, dem Umfeld. Und für jedes Projekt wurden Management-Methoden eigesetzt, die hinreichend erfolgreich und schnell zum Ziel führen. Einen universellen, für alle Projekte funktionierenden, Prozess zu finden hat vor diesem Hintergrund geringere Priorität, als alle Projekte ihren Bedürfnissen entsprechend zum Erfolg zu führen.

Was wir tun ist daher kleine Anpassungen vorzunehmen und den Erfolg zu prüfen. PDCA, Deming. Dabei haben sich bereits ein paar interessante Punkte herausgestellt: Taskboards sind ein gutes Mittel zur Kommunikation über Projektstatus und -inhalte. Aber die effektive Gestaltung der Tafeln unterscheidet sich von Team zu Team. Retrospektiven sind von allen Teams stark erwünscht. User Stories zur Featurebeschreibung können Entwicklung, QA und Produktmanagement entlasten. Daily Standups sind für manche Teams eine Belastung, für andere super wichtig.

Ich bin selbst gespannt, wo die Reise hin gehen wird. Auf meiner Wunschliste steht auf jeden Fall die verstärkte und regelmäßige Durchführung von Retrospektiven in allen Bereichen, da sie die inspirierendste Quelle für Prozessanpassungen sind. Warum ‘rumraten, wenn wir die Leute doch einfach fragen können, was besser laufen könnte? Eine erste Retrospektive im Shop-Team brachte interessante Ergebnisse und zeigte großes Engagement aller Teammitglieder. Mehrere Punkte konnten wir anschließend schon abarbeiten und verbessern. Ein weiterer Punkt, den ich als Erfolg versprechend erachte, ist eine Orientierung der Entwicklungsprozesse in Richtung Kanban. Das würde uns mehr Flexibilität geben als Scrum und gleichzeitig die Möglichkeit eröffnen, den Erfolg unserer Anpassungen zu messen.

Feb
21

Rowan Bunning veröffentlichte auf dem Münchener Scrum-Gathering im letzten Jahr eine nette Präsentation mit dem schön zweideutgen Titel “Kicking ScrumBut”. ScrumBut beruht aus der englischen Aussage: “We do Scrum, but…”, also “Wir machen Scrum, aber…”

Warum gerade diese “Abers” dem Scrum-Prozess wenig förderlich sind und wie der Scrummaster dem entgegen wirken kann ist wie gesagt hier festgehalten:

(gefunden bei Boris)

Jan
30

The Product Owner as a role has 5 responsibilities:

1. Create a Vision and share it with the team.
2. Manage the Return-On-Investment ROI.
3. Prioritize the Product Backlog based on ROI
4. Define the Acceptance Criteria and accept the Product Increment.
5. Establish and maintain the Release Plan.

Wie ich erwähnte verließ uns unser Product Owner vor kurzem überraschend und das Team hing in der Schwebe. Wie geht es weiter? Wer übernimmt die Aufgaben?

Wie erwartet wird der für den Bereich Software-Entwicklung zuständige Geschäftsführer erstmal wieder der PO. Quasi die gleiche Situation, die wir hatten, bevor wir diese Stelle explizit neu besetzten. Er ist in meinen Augen auch durchaus geeignet, die damit verbundenen Aufgaben zu erfüllen, da er die Verantwortlichkeiten des POs sehr in sich vereint.

Problematisch ist in meinen Augen jedoch, dass er als Geschäftsführer zum einen noch etliche andere Aufgaben zu erfüllen hat. Und – noch wichtiger: Gerade bei unserem internen Software-Projekt (PM-System), wo das Feedback der Benutzer (=Angestellten) gefragt ist, bereitet seine Stellung erfahrungsgemäß Probleme. Denn die Leute tun sich einfach leichter, mit Vorschlägen/Wünschen zu einer Person “auf gleicher Augenhöhe” zu kommen als zum Boss der Firma.

Wir werden sehen, wie sich die Sache entwickelt. Für die nächste Zeit können (und müssen) wir damit leben. Auf jeden Fall gibt sich die Firma ernsthaft Mühe, Scrum weiterhin zu unterstützen. Ein Beweis dafür, dass wir mit der Einführung deutlich sichtbare Verbesserungen erzielt haben.

Jan
22

Völlig überraschend – zumindest für das Team – hat unser Product Owner heute die Firma verlassen. Das ist zunächst ein ziemlicher Schock für alle gewesen, denn seit dem er seine Aufgabe übernommen hat gab es viele, von ihm initiierte, sehr positive Entwicklungen. Diese haben dazu geführt, dass das Team insgesamt deutlich zufriedener und motivierter war und wieder deutlich mehr Spaß an der Arbeit hat.

Abgesehen von den persönlichen Beziehungen stehen wir jetzt auch vor großen Herausforderungen aus Prozesssicht: Wer soll die Rolle des POs nun einnehmen? Ich als Scrum Master darf es nicht – denn ich muss unabhängig bleiben. Eine Alternative wäre, ein Teammitglied in diese Doppelrolle zu befördern. Allerdings ist das unrealistisch, da wir die gesamte Kapazität der Entwickler auch zum Entwickeln brauchen. Dritte Möglichkeit: Eine Team-externe Person, z.B. einer der Geschäftsführer, tritt in die Fußstapfen des POs. Diese Situation hatten wir jedoch, bevor wir diese Position explizit anders besetzt hatten und es war völlig unbefriedigend. Denn Product Owner ist ein Vollzeitjob – und es gibt niemanden in der Firma, der dafür wirklich Zeit hat.

Ich bin gespannt, wie sich diese Situation entwickeln wird und hoffe für das Team und die Firma, dass wir schnell eine probate Lösung finden. Die große Gefahr wird jetzt sein, dass sich Teammitglieder, die vorher schon unzufrieden waren, nun mental von der Firma verabschieden (“innere Kündigung”). Von daher muss ich versuchen, möglichst schnell für alle einen akzeptablen Status quo herzustellen.

Dez
18

Als ich Scrum einführte hat das Team mit mir unsere “Definition of Done” erarbeitet. Seitdem hängt sie öffentlich an der Wand und jeder kann sie einsehen. Die Punkte ähneln vermutlich denen, die jedes gute Scrum-Team festgehalten hat: “Potential shippable”, so weit wie möglich mit Unit-Tests abgedeckt, unseren Coding-Standards entsprechend, getestet und dokumentiert.

Nun ist mir aufgefallen, dass wir jedes mal, wenn wir ein neues Release freigeben, überlegen müssen, ob das Changelog auch alle (für den Anwender interessanten) Änderungen enthält. Bei neuen Features ist das ja noch relativ einfach: Userstories abschreiben. Bei Bugs wird es schon schwerer – da müssen nämlich unter Umständen etliche rote Zettel am Taskboard durchgeschaut – und sich dann noch erinnert werden, was die Stichpunkte darauf bedeuten.

Um die Sache zu optimieren haben wir unsere Definition of Done erweitert: Die Aktualisierung des Changelogs, sobald eine Story (oder ein Bugfix) implementiert wurde ist neu dazu gekommen. So kann man die DoD auch prima als Checkliste dafür verwenden, ob ein Zettel am Taskboard auch tatsächlich nach “Done” umgehängt werden darf.

Dez
17

Boris Gloger, der mein Certified Scrum Master – Training durchgeführt hat, sagte zwei Dinge, die mir im Ohr geblieben sind.

“Als Scrum Master muss man sich mental von seinem Job verabschieden – erst dann kann man wirklich effizient arbeiten.”

und

“Scrum löst keine Probleme in einem Unternehmen – es macht sie nur sichtbar.”


(Von Stephan’s Place @ flickr)

Heute gab es für alle Mitgliedern der Entwicklungsabteilung Feedback-Gespräche in der Firma. Mit unserem Abteilungsleiter (der gleichzeitig auch PO ist) und unserer Human Resources – Verantwortlichen. Im Grunde sehr positiv, ich machen anscheinend einen guten Job ;) Bermerkenswert war jedoch das HR-Feedback: Da waren einige Dinge auch etwas negativ aufgefallen.

Interessanter Weise sind die bemängelten Umstände direkte Auswirkungen des Fakts, dass ich mich bemühe – spätestens seit dem CSM-Training – den Scrum Master auch konsequent zu leben. Als Scrum Master ist man quasi ein Schäferhund: Man hält sein Team zusammen und treibt es in die richtige Richtung – man verteidigt es aber auch nach außen. Leistet das Team gute Arbeit braucht es sich keine Vorwürfe gefallen zu lassen. Arbeitet das Team hochkonzentriert darf man es nicht mit – natürlich immer “extrem wichtigen”, aber tatsächlich nicht kritischen – Fehler und Wünschen aus seinen Aufgaben reißen. Das senkt die Performance, weil die Entwickler umdenken müssen, um sich mit dem neuen Problem zu befassen.

Natürlich bedeutet das eine Umgewöhnung für alle Beteiligten. Früher kam jeder Anwender (und auch der CEO) mit Fehlern und Wünsche direkt zum ihm verantwortlich erscheinenden Entwickler. Heute muss er damit zum Scrum Master oder Product Owner, bekommt sogar einen Rüffel, wenn er sich nicht daran hält. Und Wünsche werden – im Gegensatz zu Fehlern – auch nicht mehr sofort berücksichtigt, sondern vor dem Hintergrund des Geschäftswertes bewertet und priorisiert.

Außerdem fordert Scrum Konsequenz. Es gibt nur eine Hand voll fester Rituale, mit festen Terminen und harten Timeboxen – und die sind von allen Beteiligten unbedingt einzuhalten. Es sei denn die Firma brennt. Sofern das Umfeld bis dato Pünktlichkeit bei Meetings und Konsequenz in deren ungestörter Durchführung eher als verhandelbar betrachtete erfordert natürlich auch das ein Umdenken.

Letztendlich steckt jedoch hinter den Scrum-Prinzipien ein ganz einfacher und verständlicher Zweck: Die (teure) Arbeitszeit der Entwickler optimal zu nutzen und nicht zu verschwenden. Eine konsequente Verfolgung dieser Ziele sollte daher jeder Firma Jubelschreie entlocken.

Letztendlich gibt es so etwas wie “ein bisschen Scrum machen” nicht. Entweder, die Firma steht vollkommen dahinter – oder sie macht kein Scrum.

vBulletin statistics