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.

 

        @djbasster

Agile is a way of developing software
that reminds us
that although computers run the code,
it’s people who create and maintain it.

Jonathan Rasmusson, "The Agile Samurai"

It’s a framework, attitude, and approach to software delivery that is
lean, fast, and pragmatic.

Jonathan Rasmusson, "The Agile Samurai"

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:

  1. Es ist unmöglich alle Anforderungen zu Beginn eines Projektes zu erfassen!
  2. Welche Anforderungen man auch erfasst, sie werden sich ändern!
  3. 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.

Jonathan Rasmusson, "The Agile Samurai"

It all comes down to this...

ENDE

Vielen Dank für Eure Aufmerksamkeit

Ole Rößner

Fragen?

Fragen!