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

91
23 DINGE, die Sie über Software-Entwicklung in Teams wissen sollten. 1 Stephan Schmidt Head of Web Sales Development @ 1&1 Internet AG 05.06.2012

description

Vortrag auf der International PHP Conference 2012 Spring Edition

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

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

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

1

Stephan SchmidtHead of Web Sales Development @ 1&1 Internet AG

05.06.2012

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

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

2

NICHT UNBEDINGTTOTAL NEUE

Stephan SchmidtHead of Web Sales Development @ 1&1 Internet AG

17.04.2012

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

DALE,YOGI‘BERRA‣ Spielte von 1946 bis 1964

professionellen Baseball in der Major League.

‣ Erst Spieler, dann Manager.

‣ Bekannt für seine Yogiisms.

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

Yogi Berra

4

„Baseball is ninety percent mental. The other half is physical.“

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

YOGIBEAR

5

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

Yogi Berra

6

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

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

THEORIE VS PRAXIS‣ 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.

7

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

TEIL 1: TOOLS UND CODE

8

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

#1Etablieren Sie Collective Code Ownership.

9

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

COLLECTIVE CODE OWNERSHIP

‣ 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.

‣ Macht den Code besser und reduziert den „Truck Factor“.

‣ Sie profitieren von den Stärken aller Teammitglieder.

10

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

#2Setzen Sie ein Werkzeug zur Revisionskontrolle ein.

11

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

REVISIONS-KONTROLLE

‣ 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 oder anderen hippen Scheiss.

12

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

Dale Berra

13

„You can't compare me to my father. Our similarities are different.“

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

#3Standardisieren Sie die Entwicklungsumgebung Ihres Teams.

14

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

15

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

#4Definieren Sie Coding Standards in Ihrem Team.

16

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.

‣ Die Coding-Standards des Frameworks, das Sie einsetzen sind ein guter Ausgangspunkt.

17

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

#5Stellen Sie sicher, dass Ihre Standards eingehalten werden.

18

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

STANDARDS EINHALTEN

‣ Nur ein angewandter Standard ist ein sinnvoller Standard.

‣ Sinnvoll: Integration in den Build-Prozess und die IDE.

‣ Umstritten: Integration in SVN Pre-Commit-Hooks oder Deployment.

‣ Schrittweise einführen.

‣ Sie sind Pfadfinder, ihr Code ist der Zeltplatz.

19

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

#6Führen SieCode-Reviews durch.

20

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

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.

21

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

#7Sorgen Sie dafür, dass Ihr Build reproduzierbar ist.

22

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

DER BUILD IST REPRODUZIERBAR

‣ Spart Ihnen Zeit (ja, schon wieder).

‣ Spart Ihnen Ärger.

‣ Bei jedem neuen Mitarbeiter müssen diese Schritte ausreichen:

23

$ svn co http://example.com/svn/trunk project$ cd project$ phing | ant | php build.php$ // oder ähnliches

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

Yogi Berra

24

„We made too many wrong mistakes.“

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

#8Machen Sie nicht den Fehler, keine Tests zu schreiben.

25

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 nicht manuelle Tests, also „Coden Sie Ihren Test und testen Sie Ihren Code“.

26

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

Yogi Berra

27

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

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

#9Integrieren Sie Ihren Build regelmäßig.

28

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.

29

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

#10Liefern Sie so oft wie nur möglich fertige Software aus.

30

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

CONTINUOUS DELIVERY

‣ Stoppen Sie nicht nach dem erfolgreichen Kompilieren und Durchführen der automatisierten Tests.

‣ Bauen Sie eine Deployment-Pipline auf und Integrieren Sie auch andere Teams außerhalb der Entwicklung.

‣ Wenn es weh tut, tun Sie es noch öfter.

‣ Bis Sie das „One-Click-Deployment“ erreicht haben.

31

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

CODE.FLICKR.COM

32

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

THOUGHTWORKS

33

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

#11Verwenden Sie nicht für alles ein elektronisches Tool.

34

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

35

PAPPKARTEN

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

36

MAGNETE

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

TEIL 2: MENSCHEN UND PROZESSE

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

#12Kommunikation entscheidet in den meisten Projekten über Erfolg und Niederlage.

38

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

KOMMUNIKATION IST 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?

39

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

Yogi Berra

40

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

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

#13Sorgen Sie dafür, dass genug Möglichkeiten zur Kommunikation geschaffen werden.

41

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

KOMMUNIKATIONS-MITTEL

‣ Treffen von Angesicht zu Angesicht.

‣ Treffen von Angesicht zu Angesicht.

‣ Treffen von Angesicht zu Angesicht.

‣ Videokonferenzen & Telefonkonferenzen.

‣ E-Mails & Instant Messenger.

‣ Projekt-Blogs, Microblogging & Twitter.

42

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

#14Suchen Sie kreative Wege, um persönliche Kommunikation herzustellen.

43

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

44

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

45

KONSUM WÄCHST MITDEM TEAM.

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

#15Gemeinsames Essen stärkt die Teambildung.

46

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

GEMEINSAME ERLEBNISSE

‣ Schaffen Sie Rituale.

‣ 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ß.

47

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

Verwenden Sie nicht denProzess.

erprobtesten#16

48

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

Verwenden Sie nicht denProzess.

#16

48

besten

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

Verwenden Sie nicht denProzess.

#16

48

neusten

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

Verwenden Sie nicht denProzess.

#16

48

coolsten

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

#16

48

Verwenden Sie nur den Prozess, der bei Ihnen funktioniert.

Page 53: 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.

49

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

#17„Es gibt immer mehr als nur einen Prozess.“

50

Jutta Eckstein

Page 55: 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.

51

Machen Sie den Prozess, der dafür sorgt, dass Sie zu Lösungen kommen

explizit.

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

Yogi Berra

52

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

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

#18Sitzen Sie nicht dem Irrtum auf, dass „agil“ mit „ungeplant“ gleichzusetzen ist.

53

Page 58: 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.

54

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

#19Machen Sie Planungen und Aufwandsschätzungen im Team.

55

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

PLANNING POKER56

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

#20Spielerisch geht alles leichter.

57

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

58

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

GAMIFICATION‣ Nutzen Sie das „Continuous Integration Game“ für

Jenkins.

‣ Vergeben Sie Punkte für gefixte Bugs und eingehaltene Standards.

‣ MS Visual Studio bietet ein Plugin, das den Entwicklern Badges verleiht.

59

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

VERGEBEN SIE BADGES

60

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

Yogi Berra

61

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

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

#21Nur Teams, die sich an Veränderungen anpassen, sind erfolgreich.

62

Page 67: 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.

‣ Die Geschichte „Who moved my cheese?“ von Spencer Johnson hilft Ihnen dabei.

63

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

#22Hinterfragen Sie regelmäßig denStatus Quo.

64

Page 69: 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 aus dem Web verdrängt.

65

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

Yogi Berra

66

„Nobody goes there anymore.

It‘s too crowded.“

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

#23Verhindern Sie eine „Kultur der Angst“ in Ihrem Team.

67

Page 72: 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?“

68

Umberto Eco, "Der Name der Rose"

Page 73: 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.

69Aus „Spielräume“ von Tom DeMarco

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

Yogi Berra

70

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

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

71

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

71

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

71

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

71

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

71

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

71

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

71

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

71

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

71

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

71

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

71

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

71

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

71

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

72

DAS WAR EINE PRÄSENTATION VON

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

STEPHANSCHMIDT‣ Software-Entwickler

‣ Pädagoge

‣ Head of Web Sales Development bei 1&1 Internet AG

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

Yogi Berra

74

„If you ask me anything I don't know, I'm not going to answer.“

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

VIELEN DANK.‣ [email protected]

‣ http://blog.schst.net

‣ @schst