( )23 Dinge,die Sie über Software-Entwicklung in Teams wissen sollten.
( )⊛ Zwei Herzen in einer Brust
⊛ Software-Entwickler
⊛ Pädagoge
⊛ Head of Web Sales Development bei der 1&1 Internet AG in Karlsruhe
⊛ Autor und Redner
⊛ Erst Entwickler, dann Manager
Stephan Schmidt
( )⊛ Bürgerlicher Name „Lawrence Peter Berra“.
⊛ Spielte von 1946 bis 1964 professionellen Baseball in der Major League.
⊛ Erst Spieler, dann Trainer.
⊛ Kein anderer hat die World Series so oft erreicht und gewonnen wie er.
⊛ Bekannt für seine Yogiisms.
⊛ Eventuell auch Namensgeber für Yogi-Bear.
Yogi Berra
( )⊛ Bürgerlicher Name „Lawrence Peter Berra“.
⊛ Spielte von 1946 bis 1964 professionellen Baseball in der Major League.
⊛ Erst Spieler, dann Trainer.
⊛ Kein anderer hat die World Series so oft erreicht und gewonnen wie er.
⊛ Bekannt für seine Yogiisms.
⊛ Eventuell auch Namensgeber für Yogi-Bear.
Yogi Berra
( )„In theory there is no difference between theory and practice. In practice there is.“
Yogi Berra
( )⊛ Die Präsentation beruht auf meiner
Erfahrung.
⊛ Die Regeln funktionierten und funktionieren in meinen Teams.
⊛ Einige funktionieren in allen Teams, andere abgewandelt oder auch gar nicht.
⊛ Versuchen Sie, das heute theoretisch vermittelte Wissen in Ihrer Praxis anzuwenden.
Theorie vs Praxis
)(
( )Teil 1:Tools und Code
)( Etablieren Sie Collective Code Ownership.
#1
( )Collective Code Ownership⊛ Aus dem Extreme Programming.
⊛ Der gesamte Code gehört allen Entwicklern.
⊛ Alle Entwickler sind dazu aufgefordert an allen Stellen Bugs zu fixen, Refactorings durchzuführen oder neue Ideen einzubringen.
⊛ Vermeidet Flaschenhälse in ihrem Team und macht den Code besser.
⊛ Sie profitieren von den Stärken aller Teammitglieder.
)( Setzen Sie ein Werkzeug zur Revisionskontrolle ein.
#2
( )Revisionskontrolle
⊛ Nur dadurch werden parallel Änderungen an einem Projekt möglich.
⊛ Es ist egal, welches System Sie einsetzen, aber tun Sie's.
⊛ CVS (wenn‘s denn sein muss)
⊛ Subversion
⊛ GIT oder Mercurial
⊛ Team Foundation Server, ...
( )„Our similarities are different.“
Dale Berra (Sohn von Yogi)
)( Standardisieren Sie die Entwicklungsumgebung Ihres
Teams.
#3
( )Standardisierung der IDE⊛ Spart Zeit bei neuen Instanzen.
⊛ Idealerweise installiert die EDV-Abteilung nur noch ein Image für PHP Entwickler.
⊛ In vielen Unternehmen schwer einzuführen, da das Thema religiöse Sprengkraft hat.
⊛ Ist den Stress der Diskussion jedoch trotzdem wert.
⊛ In unserem Team noch eine Stunde statt zwei Tagen.
)( Definieren Sie Coding Standards in Ihrem Team.
#4
( )Coding Standards
⊛ Spart Zeit, da sich jeder Entwickler im Code der anderen Entwickler zurecht findet.
⊛ Hier gilt wieder: Es ist egal, welchen Standard Sie einsetzen, aber tun Sie's.
⊛ PEAR Coding Standards
⊛ Zend PHP Coding Standards
⊛ Eigene Coding Standards
)( Stellen Sie sicher, dass Ihre Standards eingehalten werden.
#5
( )Coding Standards einhalten⊛ Nur ein angewandter Standard ist ein
sinnvoller Standard.
⊛ Statische Code-Analyse mit PHP_CodeSniffer überprüft den gesamten Code auf Regelverletzungen.
⊛ Sinnvoll: Integration in den Build-Prozess und die IDE.
⊛ Umstritten: Integration in SVN Pre-Commit-Hooks oder Deployment.
)( Führen SieCode-Reviews durch.
#6
( )Durchführung von Code Reviews⊛ Sind nicht einfach einzuführen, Entwickler
sind sensible Geschöpfe.
⊛ Sie schlagen zwei Fliegen mit einer Klappe:
⊛ Ihr Code wird besser.
⊛ Sie lernen voneinander.
⊛ Ihr Team hält besser zusammen.
OK, das waren drei.
)( Sorgen Sie dafür, dass Ihr Build reproduzierbar ist.
#7
( )Reproduzierbare Builds⊛ Spart Ihnen Zeit (ja, schon wieder).
⊛ Spart Ihnen Ärger.
⊛ Bei jedem neuen Mitarbeiter müssen diese Schritte ausreichen:
$ svn co http://example.com/svn/trunk project$ cd project$ phing || ant || make || php build.php$ // evtl. Apache Config einbinden$ ./start.sh
)( „We made too many wrong mistakes.“
Yogi Berra
)( Machen Sie nicht den Fehler, keine Tests zu schreiben.
#8
( )Testen Sie Ihren Code⊛ Im Team wird der Code von verschiedenen
Entwicklern erstellt oder modifiziert.
⊛ Tests ermöglichen Entwicklern zu prüfen, ob die Änderung negative Auswirkungen hat.
⊛ Tests nehmen dem Team die Angst, Änderungen durchzuführen.
⊛ Tests sind eine gute Dokumentation.
⊛ „Tests“ sind nicht manuelle Tests, also „Coden Sie Ihren Test und testen Sie Ihren Code“.
( )„It's like déjà vu all over again.“
Yogi Berra
)( Integrieren Sie Ihren Build regelmäßig.
#9
( )Continuous Integration⊛ Build wird in regelmäßigen Abständen oder
nach jedem Check-In angestoßen.
⊛ Dabei wird immer ein vollständiger Build erzeugt und alle Tests ausgeführt.
⊛ Fehler werden dadurch sofort entdeckt und nicht verschleppt.
⊛ Verhindert das Auftreten des „Broken Window“ Phänomens.
⊛ Bereits einige Lösungen für PHP vorhanden.
)( Nutzen Sie Task-Boards zur Planung Ihrer Aufgaben.
#10
( )
( )
)( Verwenden Sie nicht für alles ein elektronisches Tool.
#10
( )
( )
( )Teil 2: Prozesse, Menschen und Kommunikation
( )
)( Kommunikation entscheidet in den meisten Projekten über
Erfolg und Niederlage.
#12
( )Communication is King!⊛ Verstehen die Entwickler, was der Kunde
möchte?
⊛ Versteht der Kunde, was der Entwickler liefern kann?
⊛ Verstehen die Entwickler gegenseitig wirklich, wie die Schnittstellen aussehen?
⊛ Verstehen die Entwickler, was die Qualitätssicherung braucht?
⊛ Verstehen Sie, was ich damit sagen will?
( )„It was hard to have a conversation with anyone; there were so many people talking.“
Yogi Berra
)( Sorgen Sie dafür, dass genug Möglichkeiten zur Kom-
munikation geschaffen werden.
#13
( )Kommunikations-wege⊛ Treffen von Angesicht zu Angesicht.
⊛ Treffen von Angesicht zu Angesicht.
⊛ Treffen von Angesicht zu Angesicht.
⊛ Videokonferenzen.
⊛ Telefonkonferenzen.
⊛ E-Mails und Instant Messenger.
⊛ Projekt-Blogs.
⊛ Microblogging / Twitter.
)( Suchen Sie kreative Wege, um persönliche Kommunikation
herzustellen.
#14
)(
)( Gemeinsames Essen stärkt die Teambildung.
#15
( )Teambildung
⊛ Gemeinsame private Erlebnisse stärken das Teamgefühl und fördern die Zusammenarbeit.
⊛ Das gilt nicht nur für gemeinsame Essen, jedoch ist der Effekt dabei besonders groß.
⊛ Schaffen Sie Rituale.
)(erprobtesten
Verwenden Sie nicht den Prozess.
#16
)( Verwenden Sie nicht den Prozess.
#16
besten
)( Verwenden Sie nicht den Prozess.
#16
neusten
)( Verwenden Sie nicht den Prozess.
#16
coolsten
)( #16Verwenden Sie nur den Prozess,
der bei Ihnen funktioniert.
( )Prozessmodelle
⊛ Wasserfall-Modell
⊛ Hat in meinen Projekten noch nie funktioniert.
⊛ Wir bauen Software, keine Häuser.
⊛ Agile Prozesse
⊛ Versprechen deutlich höhere Erfolgschancen.
⊛ Bitte nicht sklavisch einhalten.
⊛ Sprechen Sie nicht nur von Chickens, Scrum-Master, etc.
)( „Es gibt immer mehr als nur einen Prozess.*“
#17
*Jutta Eckstein
( )Drei Prozesse eines Projekts⊛ Der offizielle Prozess, entspricht so gut wie
nie der Realität.
⊛ Der wahrgenommene Prozess, ist meist Kombination aus Wunschdenken und Fehlinterpretation.
⊛ Der tatsächliche Prozess.
Machen Sie den Prozess, der dafür sorgt, dass Sie zu Lösungen kommen
explizit.
( )„If you don't know where you're going, you'll wind up somewhere else. “
Yogi Berra
)( Sitzen Sie nicht dem Irrtum auf, dass "agil" mit "ungeplant"
gleichzusetzen ist.
#18
( )Agile Projektplanung⊛ „Planning is guessing.“ ist keine Ausrede,
um nicht planen zu müssen.
⊛ Planen Sie, aber implementieren Sie mehr, als Sie planen.
⊛ Passen Sie Ihre Planung an, wenn sich Rahmenbedingungen der ursprünglichen Planung ändern.
)( Machen Sie Planungen und Aufwandsschätzungen im Team.
#19
( )Planning Poker
( )„The future ain‘t what it used to be.“
Yogi Berra
)( Nur Teams, die sich an Veränderungen anpassen, sind
erfolgreich.
#20
( )Die Welt ist im Wandel
⊛ Anforderungen werden sich immer ändern.
⊛ Technologien und Methodiken auch.
⊛ Nehmen Sie Änderungen freudig an.
⊛ Agile Methoden stellen Ihnen dafür Werkzeuge zur Verfügung.
)( Hinterfragen Sie regelmäßig den Status Quo.
#21
( )Wandel herbeiführen⊛ Wenn sich sowieso alles ändert, dann
sollten Sie die Änderungen möglichst früh feststellen.
⊛ Oder besser noch: Stoßen Sie die Änderungen an.
⊛ Erfinden Sie die Sprache, die PHP im Web ablöst.
⊛ Die Geschichte „Who moved my cheese?“ von Spencer Johnson hilft Ihnen dabei.
( )„Nobody goes there anymore. It‘s too crowded.“
Yogi Berra
)( Verhindern Sie eine „Kultur der Angst“ in Ihrem Team.
#22
( )„Was wären wir sündigen Kreaturen dann ohne die Angst, diese vielleicht wohltätigste und gnädigste Gabe Gottes?“
Umberto Eco, "Der Name der Rose"
( )Sie leben in einer Kultur der Angst, wenn...
⊛ …es gefährlich ist, bestimmte Dinge auszusprechen.
⊛ …Zielvorgaben so aggressiv sind, dass diese unmöglich erreicht werden können.
⊛ …Macht über gesunden Menschen-verstand triumphieren darf.
⊛ …die Leute, die gehen müssen, sind im Durchschnitt kompetenter als die, die bleiben.
Aus "Spielräume" von Tom DeMarco
( )„I want to thank you for making this day neccessary.“
Yogi Berra
)( Hören Sie auf Tom DeMarco, Spencer Johnson und das
Agile Manifest.
#23
( )„I never said most of the things I said.“
Yogi Berra
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )
( )„It ain‘t over till it‘s over.“
Yogi Berra
http://blog.schst.net/
@schst
Vielen Dank,für Ihre Aufmerksamkeit.