Software-Entwicklung Im Team

73
23 Dinge, die Sie über Entwicklung in Teams wissen sollten Stephan Schmidt 1&1 Internet AG

description

Presentation held at PHP World 2009 in Munich

Transcript of Software-Entwicklung Im Team

Page 1: Software-Entwicklung Im Team

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

Stephan Schmidt1&1 Internet AG

Page 2: Software-Entwicklung Im Team

Stephan Schmidt

• Software-Entwickler und "Beinahe Pädagoge"

• Kombiniert gerne beides im Beruf

• Head of Web Sales Development bei der

1&1 Internet AG

• Autor, Redner und die ganzen anderen

Sachen

• (außer Consultant)

Page 3: Software-Entwicklung Im Team

"Yogi" Berra

• Bürgerlicher Name Lawrence Peter Berra

• Spielte von 1946 bis 1964 professionellen

Baseball in der Major League

• Kein anderer hat die World Series so oft

erreicht und gewonnen

• Bekannt für seine Yogiisms

• Auch kein Consultant

• Eventuell auch Namensgeber für

Yogi-Bear

Page 4: Software-Entwicklung Im Team

"In theory there is no

difference between theory

and practice.

In practice there is."

Yogi Berra

Page 5: Software-Entwicklung Im Team

Theorie vs Praxis

• Die Präsentation beruht auf meiner

Erfahrung.

• Die Regeln 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.

Page 6: Software-Entwicklung Im Team

Es geht um Menschen

Page 7: Software-Entwicklung Im Team

Teil 1:Tools und Code

Page 8: Software-Entwicklung Im Team

#1

Etablieren Sie

Collective Code

Ownership.

Page 9: Software-Entwicklung Im Team

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.

• Macht den Code besser.

• Sie profitieren von den Stärken aller

Teammitglieder.

Page 10: Software-Entwicklung Im Team

#2

Setzen Sie ein Werkzeug

zur Revisionskontrolle

ein.

Page 11: Software-Entwicklung Im Team

Revisionskontrolle

• Nur dadurch werden parallel Änderungen

an einem Projekt möglich.

• Es ist egal, welches System Sie einsetzen,

aber tun Sie's.

• CVS

• Subversion

• GIT

• Team Foundation Server

• etc.

Page 12: Software-Entwicklung Im Team

" Our similarities are

different."

Dale Berra (Sohn von Yogi Berra)

Page 13: Software-Entwicklung Im Team

#3

Standardisieren Sie die

Entwicklungsumgebung

Ihres Teams.

Page 14: Software-Entwicklung Im Team

Standardisierung

• Spart Zeit, wenn eine neue Instanz benötigt

wird.

• 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 1 Stunde statt

2 Tagen

Page 15: Software-Entwicklung Im Team

#4

Definieren Sie Coding

Standards.

Page 16: Software-Entwicklung Im Team

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 17: Software-Entwicklung Im Team

#5

Stellen Sie sicher, dass

Ihre Standards

eingehalten werden.

Page 18: Software-Entwicklung Im Team

Standards forcieren

• Coding Standards sind nur sinnvoll, wenn

sie eingehalten werden.

• Statische Code-Analyse mit PHP_CodeSniffer

überprüft den gesamten Code auf Regel-

verletzungen.

• Sinnvoll: Integration in den Build-Prozess und

die IDE.

• Umstritten: Integration in SVN Pre-Commit-

Hooks oder Deployment.

Page 19: Software-Entwicklung Im Team

#6

Führen Sie Code

Reviews durch.

Page 20: Software-Entwicklung Im Team

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 21: Software-Entwicklung Im Team

#7

Sorgen Sie dafür, dass Ihr

Build reproduzierbar

ist.

Page 22: Software-Entwicklung Im Team

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

$ // evtl. Apache Config einbinden

$ ./start.sh

Page 23: Software-Entwicklung Im Team

"We made too many wrong

mistakes."

Yogi Berra

Page 24: Software-Entwicklung Im Team

#8

Tests erlauben Ihrem

Team die Freiheit, Code zu

ändern.

Page 25: Software-Entwicklung Im Team

Testen des Codes

• Im Team wird der Code von verschiedenen

Entwicklern erstellt oder modifiziert.

• Tests ermöglichen Entwicklern zu prüfen

ob die Änderungen negative Auswirkungen

hatten.

• Tests nehmen dem Team die Angst,

Änderungen durchzuführen.

• Tests sind außerdem eine gute

Dokumentation.

• Mit "Tests" meine ich nicht manuelle Tests.

Page 26: Software-Entwicklung Im Team

"It's like déjà vu all over

again."

Yogi Berra

Page 27: Software-Entwicklung Im Team

#9

Integrieren Sie Ihren Build

regelmäßig.

Page 28: Software-Entwicklung Im Team

Continuous Integration

• Build wird in regelmäßigen Abständen oder

nach jedem Commit angestoßen.

• Dabei wird immer ein vollständiger Build

erzeugt und alle Unit- und Integrationstests

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 29: Software-Entwicklung Im Team

#10

Nutzen Sie Task-Boards

zur Planung Ihrer

Projekte.

Page 30: Software-Entwicklung Im Team

JIRA und Greenhopper

Page 31: Software-Entwicklung Im Team

Outlook

Page 32: Software-Entwicklung Im Team

#11

Verwenden Sie

nicht für alles ein

elektronisches Tool.

Page 33: Software-Entwicklung Im Team

Taskboard v1.0

Page 34: Software-Entwicklung Im Team

Taskboard v1.0

Page 35: Software-Entwicklung Im Team

Teil 2:Prozesse, Menschen

und Kommunikation

Page 36: Software-Entwicklung Im Team

Cowboys und Indianer

Page 37: Software-Entwicklung Im Team

#12

Kommunikation

entscheidet in den

meisten Projekten über

Erfolg und Niederlage.

Page 38: Software-Entwicklung Im Team

Kommunikation

• 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?

Page 39: Software-Entwicklung Im Team

"It was hard to have a

conversation with anyone;

there were so many people

talking. "Yogi Berra

Page 40: Software-Entwicklung Im Team

#13

Sorgen Sie dafür, dass

genug Möglichkeiten zur

Kommunikation

geschaffen werden.

Page 41: Software-Entwicklung Im Team

Kommunikationsmittel

• Treffen von Angesicht zu Angesicht

• Treffen von Angesicht zu Angesicht

• Treffen von Angesicht zu Angesicht

• E-Mails und Instant Messenger

• Projekt-Blogs

• Microblogging / Twitter

• Telefonkonferenzen

• Videokonferenzen

Page 42: Software-Entwicklung Im Team

#14

Suchen Sie kreative Wege,

um persönliche

Kommunikation

herzustellen.

Page 43: Software-Entwicklung Im Team

Kreative Wege

Page 44: Software-Entwicklung Im Team

#15

Gemeinsames Essen

stärkt die Teambildung.

Page 45: Software-Entwicklung Im Team

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 46: Software-Entwicklung Im Team

#16

Verwenden Sie nicht den

erprobtesten Prozess.

Page 47: Software-Entwicklung Im Team

#16

Verwenden Sie nicht den

erprobtesten besten

Prozess.

Page 48: Software-Entwicklung Im Team

#16

Verwenden Sie nicht den

erprobtesten besten

neusten Prozess.

Page 49: Software-Entwicklung Im Team

#16

Verwenden Sie nicht den

erprobtesten besten

neusten coolsten Prozess.

Page 50: Software-Entwicklung Im Team

#16

Verwenden Sie nur den

Prozess, der bei Ihnen

funktioniert.

Page 51: Software-Entwicklung Im Team

Prozessmodelle

• Wasserfall-Modell

• Hat in meinen Projekten noch nie

funktioniert.

• Agile Prozesse

• Versprechen deutlich höhere Erfolgs-

chancen.

• Bitte nicht sklavisch einhalten.

• Sprechen Sie nicht nur von Chickens,

Scrum-Master, etc.

Page 52: Software-Entwicklung Im Team

#17

Es gibt immer mehr als

nur einen Prozess.

Jutta Eckstein

Page 53: Software-Entwicklung Im Team

Verschiedene Prozesse

• 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 54: Software-Entwicklung Im Team

"If you don't know where

you're going, you'll wind

up somewhere else."Yogi Berra

Page 55: Software-Entwicklung Im Team

#18

Sitzen Sie nicht dem

Irrtum auf, dass "agil" mit

"ungeplant" gleich-

zusetzen ist.

Page 56: Software-Entwicklung Im Team

Sie sind es

wirklich nicht.(ganz ehrlich)

Page 57: Software-Entwicklung Im Team

#19

Machen Sie Planungen

und Aufwands-

schätzungen im Team.

Page 58: Software-Entwicklung Im Team

Aufwandsschätzungen

• Planning Poker kann ein hilfreiches

Mittel sein.

Page 59: Software-Entwicklung Im Team

"The future ain't what it

used to be."

Yogi Berra

Page 60: Software-Entwicklung Im Team

#20

Nur Teams, die sich an

Veränderungen anpassen,

sind erfolgreich.

Page 61: Software-Entwicklung Im Team

Embrace Change

• 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 62: Software-Entwicklung Im Team

#21

Hinterfragen Sie

regelmäßig den Status

Quo.

Page 63: Software-Entwicklung Im Team

Der Status Quo

• 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 64: Software-Entwicklung Im Team

"Nobody goes there

anymore. It's too

crowded."Yogi Berra

Page 65: Software-Entwicklung Im Team

#22

Verhindern Sie eine Kultur

der Angst.

Page 66: Software-Entwicklung Im Team

Kultur der Angst

"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 67: Software-Entwicklung Im Team

Kultur der Angst

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 68: Software-Entwicklung Im Team

" I want to thank you for

making this day

necessary."Yogi Berra

Page 69: Software-Entwicklung Im Team

#23

Hören Sie auf Tom

DeMarco, Spencer Johnson

und das Agile Manifest.

Page 70: Software-Entwicklung Im Team

" I never said most of the

things I said. "

Yogi Berra

Page 71: Software-Entwicklung Im Team

Bücher

Page 72: Software-Entwicklung Im Team

" It ain't over till

it's over. "

Yogi Berra

Page 73: Software-Entwicklung Im Team

Vielen Dank für

Ihre Aufmerksamkeit.

[email protected]