Agile Paradise
Agile Softwareentwicklung in einer perfekten Welt
About me
- Ole Rößner
- 37 Jahre
- verheiratet, einen Sohn
- neusta GmbH
- Entwickler & Coach
- Symfony Enthusiast
- Clean Code Evangelist
- Krachmacher a. D.
Agile is a way of developing software
that reminds us
that although computers run the code,
it’s people who create and maintain it.
It’s a framework, attitude, and approach to software delivery that is
lean, fast, and pragmatic.
Das Agile Manifest
Eine Geschichtsstunde
Wir erschließen bessere Wege, Software zu entwickeln,
indem wir es selbst tun und anderen dabei helfen.
Durch diese Tätigkeit haben wir diese Werte zu schätzen gelernt:
- Individuen und Interaktionen
mehr als Prozesse und Werkzeuge- Funktionierende Software
mehr als umfassende Dokumentation- Zusammenarbeit mit dem Kunden
mehr als Vertragsverhandlung- Reagieren auf Veränderung
mehr als das Befolgen eines Plans
Das heißt, obwohl wir die Werte auf der rechten Seite wichtig finden, schätzen wir die Werte auf der linken Seite höher ein.
Die zwölf Prinzipien
Unsere höchste Priorität ist es, den Kunden durch frühe und kontinuierliche Auslieferung wertvoller Software zufrieden zu stellen.
I
In einem weit, weit entfernten Land...
Management by Miracle
Heisse Anforderungsänderungen selbst spät in der Entwicklung willkommen. Agile Prozesse nutzen Veränderungen zum Wettbewerbsvorteil des Kunden.
II
Vergesst GANTT!
- Grafische
- Anhäufung
- Nicht
- zuTreffender
- Termine
Die Drei Wahrheiten
...oder "Konfuzius sagt":
Eigentlich ist es ganz einfach:
- Es ist unmöglich alle Anforderungen zu Beginn eines Projektes zu erfassen!
- Welche Anforderungen man auch erfasst, sie werden sich ändern!
- Es wird immer mehr zu tun sein, als es Zeit und Geld hergeben!
Dinge ändern sich!
Liefere funktionierende Software regelmäßig innerhalb weniger Wochen oder Monate und bevorzuge dabei die kürzere Zeitspanne.
III
So nicht mehr!
Evolutionäre Software
Fachexperten und Entwickler müssen während des Projektes täglich zusammenarbeiten.
IV
Toll Ein Anderer Machts
Rollen != Menschen
T-Shape Modell
Star-Shape Modell
Das optimale Agile Team
- Sitzt nah beisammen.
- Hat einen Kunden, der aktiv am agilen Prozess teilnimmt.
- Organisiert sich selbst.
- Entscheidet selbst.
- Hat ein breites Wissen.
- Gibt es nicht!
aber wenn wir uns was wünschen dürften...
GILE
Errichte Projekte rund um motivierte Individuen.
Gib ihnen das Umfeld und die Unterstützung, die sie benötigen und vertraue darauf, dass sie die Aufgabe erledigen.
V
Motivation?
Daniel Pink - Drive (YouTube 10min RSA Animate)
Die besten Architekturen, Anforderungen und Entwürfe entstehen durch selbstorganisierte Teams.
VI
var team = individuum * n;
- Autonomy
- Mastery
- Purpose
Stabile Teams sind wichtig!
sonst...
Die effizienteste und effektivste Methode, Informationen an und innerhalb eines Entwicklungsteams zu übermitteln, ist im Gespräch von Angesicht zu Angesicht.
VII
Und was, wenn das nicht geht?
- Team Chats
- Audio/Video Konferenzsysteme
- TeamSpeak
- Screen Sharing
Distributed Scrum?
- Daily => Skype, später meet.jit.si (mit Video!)
- Backlog/Board => JIRA
- Code Reviews => Stash
- Pair Programming => join.me (mit Tastatur Sharing)
- Planning Poker => hat.jit.su
- Retro => Trello
- Generelle Kommunikation => Skype, später Slack
- 1x Monat => Treffen beim Kunden
I've been doing some research on remote work, and I've found that the best practices of distributed teams benefit literally *all* teams.
For ex:
- Shifting from a local, spoken culture to a global, written one
- Practicing proactive empathy
- Making an effort to stay connected
Funktionierende Software ist das wichtigste Fortschrittsmaß.
IIX
Auf das Wesentliche konzentrieren
- Dokumentation?
- Wichtig!
- Konzept?
- Wichtig!
- Planung?
- Wichtig!
- Aber was ist am wichtigsten in der Softwareentwicklung?
- SOFTWARE!
Funktionierende Software ausliefern
- Jede Iteration ein funktionierendes Produkt ausliefern (MVP)
- Testen wo es geht!
- Automatisieren wo es geht!
Agile Prozesse fördern nachhaltige Entwicklung. Die Auftraggeber, Entwickler und Benutzer sollten ein gleichmäßiges Tempo auf unbegrenzte Zeit halten können.
IX
Gebt einander Feedback!
- Der Kunde ist Teil des Teams
- Anforderungen ändern sich
- Neue Ideen kommen auf
- Man ändert die Richtung
Übernehmt Verantwortung!
- Qualität
- Timing
- Erwartungen
- Kosten
- Jeder im Team!
Zwei Werkzeuge
Für mehr Qualität...
Definition of Done
Task: Enkel soll das Laub im Vorgarten entfernen
- Wann ist es "fertig"?
- Wenn er einen Plan abgibt, wie er den Vorgarten fegen will?
- Wenn er das Laub besonders schick auf einen Haufen gefegt hat?
- Den Vorgarten so fotografiert, dass das Laub nicht mehr zu sehen ist?
Done:
- wenn der Vorgarten frei von Laub ist...
- und das Laub ordentlich im Komposter gelandet ist...
- und Harke und Kehrblech wieder ordentlich in der Garage sind!
Soll das bei Software anders sein?
Das Inception Deck
Das Inception Deck
...in Teilen
Stecke den groben Zeitrahmen ab
Ist das ein 3-, 6-, 9- oder 12-Monats Projekt?
Erstelle einen Elevator Pitch
Wenn wir nur 30 Sekunden hätten unser Projekt zu beschreiben, was würden wir sagen?
"Treffe deine Nachbarn"
Das Team, welches direkt oder indirekt an dem Projekt arbeitet, ist oftmals größer als man im Vorfeld denkt. Warum nicht alle an einen Tisch bringen?
Erfinde eine Verpackung
Wenn wir in einer Zeitschrift blättern würden und eine Werbung für unser Produkt oder unsere Dienstleistung sehen würden, wie würde sie aussehen und - viel wichtiger - würden wir sie kaufen?
Prioritäten abstecken
Erstelle eine "NICHT"-Liste
Es ist recht klar, was wir in diesem Projekt machen sollen. Lass uns noch klarer festhalten, was wir nicht machen!
Ständiges Augenmerk auf technische Exzellenz und gutes Design fördert Agilität.
X
Warum ist das so wichtig?
- Erweiterbarkeit
- Pflegbarkeit
- Wiederverwendbarkeit
- Nutzbarkeit
In regelmäßigen Abständen reflektiert das Team, wie es effektiver werden kann und passt sein Verhalten entsprechend an.
XI
Iteratives Arbeiten
Iteratives Entwickeln
- Testgetrieben
- Anforderungsgetrieben
- Refactoring
- Automatisierung
- Continuous Integration
Einfachheit -- die Kunst, die Menge nicht getaner Arbeit zu maximieren -- ist essenziell.
XII
- KISS
- YAGNI
- DRY
Clean
Code Developer
Project Member
Agile is a way of developing software
that reminds us
that although computers run the code,
it’s people who create and maintain it.
It all comes down to this...
Quellen und Lektüre
-
The Agile Samurai - Jonathan Rasmusson
("The Pragmatic Programmers") - Handbook for New Employees - Valve Corporation
- Das Agile Manifest
- The Furious Four
- Leadership in der IT - Johann Peter Hartmann (Slideshare, YouTube)
- Drive: Was Sie wirklich motiviert - Daniel Pink (ISBN: 3902404957)
- Agile In a Nutshell
Fragen?
Fragen!
Agile Paradise
By neusta Coaching-Team
Agile Paradise
Agile Softwareentwicklung in einer perfekten Welt
- 1,709