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

Software-Entwicklung Im Team

Jun 12, 2015

Download

Technology

Stephan Schmidt

Presentation held at PHP World 2009 in Munich
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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]