Posts Tagged ‘Scrum’

Scrum, einer für alle, alle für einen

Montag, Januar 4th, 2010

Scrum dient dazu traditionelle Arbeitsstrukturen aufzubrechen und Hierarchien abzuflachen. Hier liegt die Chance, aber auch die Herausforderung der agilen Softwareentwicklung. Wir sind keine Verwaltung. Wir sitzen nicht in unseren kleinen Büros, gießen die Zimmerpflanzen und googlen uns selbst. Wir können und wollen uns nicht hinter einem schützenden Vorgesetzten verstecken, wenn es brenzlich wird.

Scrum zeichnet sich dadurch aus, dass alle ihr Commitment geben. Jedes Teammitglied ist ebenso wie der ScrumMaster, der Product Owner und der Kunde für den Erfolg oder Misserfolg verantwortlich.

Der Product Owner kennt die Software und die Arbeitsweise des Programmierteams, er muss die Kundenwünsche und -bedürfnisse in eine Sprache übersetzen, die von Technikern verstanden wird. Er muss den Wunsch des Kunden so konkret wie möglich definieren, es ist jedoch nicht seine Aufgabe eine genaue Programmieranleitung zu liefern. Der Product Owner ist kein Programmier.

Das Team besitzt technisches Know-How. Es ist dafür verantwortlich, dass die Software in einer lauffähigen Version vorliegt. Es bringt die Kundenwünsche mit den technischen Möglichkeiten in Einklang. Das Team darf nicht für ungenau beschriebene Aufgaben verantwortlich gemacht werden. Das Team ist nicht zuständig für das Produktmanagement.

Doch Vorsicht: Scrum entbindet nicht vom selbstständigen Denken, im Gegenteil, es fordert dazu auf. Die Kommunikationswege sind kurz. Durch das tägliche Stand-Up kennen alle Beteiligten den Prozess und die Aufgaben des Einzelnen. Es steht jedem frei, Fragen zu stellen, Anregungen zu geben und Ideen einzubringen. Jeder kann und sollte das Team vor möglichen Fehlern warnen.

Der Product Owner leistet einen guten Job, wenn er auch die technischen Abläufe mit durchdenkt. Nach einer Weile hat er viele Restriktionen durchschaut und kann es vermeiden dem Kunden Features zu versprechen, deren Kosten und Nutzen in keinem Verhältnis stehen. Das Team zeichnet sich dadurch aus, technische Sackgassen frühzeitig zu erkennen, die Warnung offen auszusprechen und alternative Lösungen zu finden.

Die Prinzipien klingen einfach und innovativ. Schnell umzusetzen für ein junges Team? Nein, auch das Erlernen und der Umgang mit Scrum sind viel Arbeit. Die richtige Anwendung von Scrum braucht Zeit, Erfahrung und erfordert das Zusammenspiel des gesamten Unternehmens. Wir arbeiten jetzt seit einem Jahr mit Scrum, haben ein Projekt erfolgreich abgeschlossen und noch immer gibt es viele Ideen wie der Prozess verbessert werden kann.

Angst reduzieren und Druck machen

Dienstag, November 17th, 2009

Welche Aufgaben hat eigentlich die Geschäftsführung?

Über die zahlreichen Verwaltungstätigkeiten wollen wir nicht reden – das ist reine Zeitverschwendung. Genauso, wie die meisten Verwaltungstätigkeiten selbst. Gesucht sind also die wesentlichen Aufgaben.

Eine vollständige Liste der Aufgaben kann man sicherlich irgendwo im www finden. Darum soll es sich auch nicht drehen. Das Wesentliche ist immer einfach.

In diesem Beitrag soll eine erste, wesentliche Aufgabe der Geschäftsführung dargestellt werden: Die Kommunikation zwischen dem Auftraggeber eines Softwarehauses (Kunde) und den Programmierern des Softwarehauses (Team) zu organisieren.

Der Kunde ist euphorisch, seine Geschäftsidee oder Geschäftstätigkeit sind richtungsweisend. Laufend entstehen neue Funktionalitäten, die realisiert werden sollen. Ziele ändern sich – bis hin zu den niemals erreichbaren Moving Targets. Oder der Kunde ist unzufrieden mit der Leistung und gegen Projektende auch mit den Terminen. Er nörgelt. Er droht. All dies gehört dazu. Ein Projekt ohne Emotionen ist vermutlich nicht wirklich wichtig für den Auftraggeber.

Wenn die Geschäftsführung diese Dynamik aber ungefiltert an die Programmierer durchlässt, erzeugt sie Angst. Angst, die Ziele nicht erreichen zu können und deswegen einen unzufriedenen Kunden zu bekommen. Ohne die Möglichkeit zu haben, den Kunden oder das Projekt zu steuern.

Die erste Aufgabe der Geschäftsführung ist es daher, Angst zu reduzieren. Keine gute Idee ist es, die Programmierer vollständig vom Kunden abzuschirmen, da sonst ein wesentlicher Motivator für das Team fehlt. Wird nach Scrum entwickelt, ist das gar nicht möglich, da der Kunde mit dem Team kommuniziert.

Die Geschäftsführung muss den Kunden managen. Wie? Das ist egal! Es kommt nur auf die Wirksamkeit* an – nämlich die Angst vor dem Versagen zu reduzieren und dadurch die Ressource „Team“ optimal einzusetzen.

Also vollständig angstfreies Entwickeln als Paradigma? Nein, ein gewisser Druck ist nötig, um alle Ressourcen zu aktivieren. Doch woher kommt dieser, wenn der Kunde ihn nicht direkt auf das Team ausüben kann?

Scrum hat die Lösung schon eingebaut: Jeder Sprint liefert ein lauffähiges Ergebnis. Die Inhalte und den Workload des Sprints bestimmt das Team selbst. Die Angst zu viele Aufgaben zu bekommen und diese nicht bewältigen zu können ist gering. Der Druck ist trotzdem vorhanden. Er kommt nicht von außen, sondern von innen. Das Team schätzt die eigene Arbeitskapazität, setzt sich Ziele und verpflichtet sich diese zu erfüllen. Scrum ist in höchstem Maße wirksam.

*Den Gedanken der Wirksamkeit als das zentrale Kriterium zur Bewertung von Managementleistungen verdanke ich übrigens Fredmund Malik.

Making Of – Agile Softwareentwicklung

Montag, September 7th, 2009

Große Konzerne haben oft festgefahrene Strukturen und traditionelle Arbeitsmethoden. Als kleines Unternehmen hat man die Freiheit andere Dinge auszuprobieren, ein bisschen revolutionär zu sein, nicht nur bei den Entwicklungen, sondern auch bei den Methoden. Das Kombinat wächst, die einzelnen Firmen werden größer und eine Strukturierung der Arbeitsprozesse ist dringend erforderlich.

Kleines Regelwerk, große Disziplin

Wir üben uns in Scrum, einer speziellen Vorgehensweise im Bereich der agilen Softwareentwicklung. Das bedeutet den bürokratischen Aufwand gering zu halten und mit möglichst wenig Regeln auszukommen. Das Verfahren ist beweglich und setzt in hohem Maße auf Individuen und deren Kommunikation. Wer mit Scrum arbeitet geht davon aus, dass Entwicklungs- und Produktfertigungsprozesse zu komplex sind, um sie detailliert im Voraus über Monate oder gar Jahre zu planen. Deshalb organisieren die Teammitglieder (zumeist Programmierer) ihre Arbeit in einem groben Rahmen weitgehend selbst und sie wählen frei ihre Werkzeuge und Methoden. Am Ende zählt immer nur das funktionierende Programm, der Weg dorthin ist selbst bestimmt. Das Entwicklerteam muss folglich eine hohe Eigenmotivation zeigen.

Rollen

Neben dem Team gibt es in Scrum noch den Product Owner und den Scrum Master. Der Product Owner plant gemeinsam mit dem Kunden das Programm bzw. das Produkt im großen Rahmen. Er priorisiert die Entwicklungsschritte und legt gemeinsame Ziel fest. Der Scrum Master hat die Aufgabe, die Prozesse der Entwicklung und Planung durchzuführen und die Aufteilung der Rollen und Rechte zu überwachen. Er ist dafür verantwortlich, dass die Methode Scrum richtig angewendet wird. Zusätzlich muss er Verbesserungspotentiale erkennen und dafür sorgen, dass das Team produktiv und zufrieden arbeitet.

Kundeninteresse im Mittelpunkt

Die Zusammenarbeit mit dem Kunden ist bei der agilen Softwareentwicklung überaus wichtig. Programme lassen sich besser in einem wechselseitigen Entwicklungs- und Prüfprozess erarbeiten. Die Arbeitseinheiten für das Team umfassen einen überschaubaren Zeitraum. Für uns haben sich 14 Tage als effektiv herausgestellt. Diese so genannten Sprints werden mit einer ausführlichen Ergebnispräsentation vor dem Kunden abgeschlossen. Kurze Zeiträume gewährleisten die Flexibilität des Teams. Durch den häufigen Austausch zwischen Team und Kunden kann schnell auf neue Anforderungen oder Veränderungen im Projekt reagiert werden.

Scrum im Kombinat

Wir haben festgestellt, dass sich die agile Softwareentwicklung gerade in kleinen Teams gut anwenden lässt. Kurze Wege und flache Hierarchien sind von Vorteil. Der permanente Austausch lässt neue Ideen entstehen und alle Beteiligten entwickeln ein Verständnis für die Arbeit der anderen. So können Entwicklungsprozesse, Produktmanagement und Marketingmaßnahmen besser verknüpft werden. Überschaubare Arbeitseinheiten und ein große Selbstverantwortung motivieren die Mitarbeiter. Konflikte und Missverständnisse, sowohl im Team als auch mit den Kunden können schneller gelöst werden. Scrum steht für eine enge Verzahnung mit dem Kunden und bewahrt einen davor monatelang fleißig an seinen Wünschen vorbeizuprogrammieren.