87
( ) 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.

23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

Embed Size (px)

DESCRIPTION

Slides des Vortrags auf der International PHP Conference Spring Edition 2010

Citation preview

Page 1: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )23 Dinge,die Sie über Software-Entwicklung in Teams wissen sollten.

Page 2: 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

Page 3: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )⊛ 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

Page 4: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )⊛ 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

Page 5: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„In theory there is no difference between theory and practice. In practice there is.“

Yogi Berra

Page 6: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )⊛ 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

Page 7: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)(

Page 8: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )Teil 1:Tools und Code

Page 9: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Etablieren Sie Collective Code Ownership.

#1

Page 10: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 11: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Setzen Sie ein Werkzeug zur Revisionskontrolle ein.

#2

Page 12: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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, ...

Page 13: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„Our similarities are different.“

Dale Berra (Sohn von Yogi)

Page 14: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Standardisieren Sie die Entwicklungsumgebung Ihres

Teams.

#3

Page 15: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 16: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Definieren Sie Coding Standards in Ihrem Team.

#4

Page 17: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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

Page 18: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Stellen Sie sicher, dass Ihre Standards eingehalten werden.

#5

Page 19: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 20: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Führen SieCode-Reviews durch.

#6

Page 21: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 22: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Sorgen Sie dafür, dass Ihr Build reproduzierbar ist.

#7

Page 23: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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

Page 24: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( „We made too many wrong mistakes.“

Yogi Berra

Page 25: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Machen Sie nicht den Fehler, keine Tests zu schreiben.

#8

Page 26: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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“.

Page 27: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„It's like déjà vu all over again.“

Yogi Berra

Page 28: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Integrieren Sie Ihren Build regelmäßig.

#9

Page 29: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 30: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Nutzen Sie Task-Boards zur Planung Ihrer Aufgaben.

#10

Page 31: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 32: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 33: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Verwenden Sie nicht für alles ein elektronisches Tool.

#10

Page 34: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 35: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 36: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )Teil 2: Prozesse, Menschen und Kommunikation

Page 37: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 38: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Kommunikation entscheidet in den meisten Projekten über

Erfolg und Niederlage.

#12

Page 39: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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?

Page 40: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„It was hard to have a conversation with anyone; there were so many people talking.“

Yogi Berra

Page 41: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Sorgen Sie dafür, dass genug Möglichkeiten zur Kom-

munikation geschaffen werden.

#13

Page 42: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 43: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Suchen Sie kreative Wege, um persönliche Kommunikation

herzustellen.

#14

Page 44: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)(

Page 45: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Gemeinsames Essen stärkt die Teambildung.

#15

Page 46: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 47: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)(erprobtesten

Verwenden Sie nicht den Prozess.

#16

Page 48: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Verwenden Sie nicht den Prozess.

#16

besten

Page 49: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Verwenden Sie nicht den Prozess.

#16

neusten

Page 50: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Verwenden Sie nicht den Prozess.

#16

coolsten

Page 51: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( #16Verwenden Sie nur den Prozess,

der bei Ihnen funktioniert.

Page 52: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 53: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( „Es gibt immer mehr als nur einen Prozess.*“

#17

*Jutta Eckstein

Page 54: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 55: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„If you don't know where you're going, you'll wind up somewhere else. “

Yogi Berra

Page 56: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Sitzen Sie nicht dem Irrtum auf, dass "agil" mit "ungeplant"

gleichzusetzen ist.

#18

Page 57: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 58: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Machen Sie Planungen und Aufwandsschätzungen im Team.

#19

Page 59: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )Planning Poker

Page 60: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„The future ain‘t what it used to be.“

Yogi Berra

Page 61: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Nur Teams, die sich an Veränderungen anpassen, sind

erfolgreich.

#20

Page 62: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 63: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Hinterfragen Sie regelmäßig den Status Quo.

#21

Page 64: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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.

Page 65: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„Nobody goes there anymore. It‘s too crowded.“

Yogi Berra

Page 66: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Verhindern Sie eine „Kultur der Angst“ in Ihrem Team.

#22

Page 67: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„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"

Page 68: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )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

Page 69: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„I want to thank you for making this day neccessary.“

Yogi Berra

Page 70: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)( Hören Sie auf Tom DeMarco, Spencer Johnson und das

Agile Manifest.

#23

Page 71: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„I never said most of the things I said.“

Yogi Berra

Page 72: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 73: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 74: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 75: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 76: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 77: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 78: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 79: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 80: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 81: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 82: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 83: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 84: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 85: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )

Page 86: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

( )„It ain‘t over till it‘s over.“

Yogi Berra

Page 87: 23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten

)([email protected]

http://blog.schst.net/

@schst

Vielen Dank,für Ihre Aufmerksamkeit.