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

  • View
    4.677

  • Download
    0

  • Category

    Business

Preview:

DESCRIPTION

Slides des Vortrags auf der International PHP Conference Spring Edition 2010

Citation preview

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

)(stephan.schmidt@1und1.de

http://blog.schst.net/

@schst

Vielen Dank,für Ihre Aufmerksamkeit.

Recommended