Slide 1

Slide 1 text

BOOTSTRAP YOUR PROJECT! Developer Conference Hamburg 2012

Slide 2

Slide 2 text

THORSTEN RINNE ‣ Diplom-Informatiker (FH) ‣ Senior-Software-Entwickler ‣ Yatego GmbH ‣ phpMyFAQ ‣ @ThorstenRinne

Slide 3

Slide 3 text

DAS PROJEKT

Slide 4

Slide 4 text

NOT!

Slide 5

Slide 5 text

Definiere die Projektvision

Slide 6

Slide 6 text

Beginne mit einem kleinen Team.

Slide 7

Slide 7 text

Aber bitte keine Code-Monkeys!

Slide 8

Slide 8 text

Füge neue Entwickler langsam hinzu.

Slide 9

Slide 9 text

Teile die Vision mit dem Team.

Slide 10

Slide 10 text

Sammle alle Requirements. Zuerst die Wichtigen.

Slide 11

Slide 11 text

Ordne sie nach ROI. Sammle alle Requirements.

Slide 12

Slide 12 text

Dokumentiere deine Tasks!

Slide 13

Slide 13 text

Priorisiere die Tasks nach ROI und Komplexität.

Slide 14

Slide 14 text

Achte auf Cheap Wins!

Slide 15

Slide 15 text

INFRASTRUKTUR

Slide 16

Slide 16 text

Keine Hardware. Noch nicht.

Slide 17

Slide 17 text

Virtuelle Maschinen

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

$ vagrant box add base http://files.vagrantup.com/lucid32.box [vagrant] Downloading with Vagrant::Downloaders::HTTP... [vagrant] Downloading box: http://files.vagrantup.com/lucid32.box [vagrant] Extracting box... [vagrant] Verifying box... [vagrant] Cleaning up downloaded box... $ Vagrant

Slide 20

Slide 20 text

$ vagrant init A `Vagrantfile` has been placed in this directory. You are now ready to `vagrant up` your first virtual environment! Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant. $

Slide 21

Slide 21 text

$ vagrant up [default] Importing base box 'base'... [default] Matching MAC address for NAT networking... [default] Clearing any previously set forwarded ports... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! [default] Mounting shared folders... [default] -- v-root: /vagrant $ Und fertig :-)

Slide 22

Slide 22 text

Konfigurationsmanagement

Slide 23

Slide 23 text

class nginx::package { anchor { 'nginx::package::begin': } anchor { 'nginx::package::end': } case $::operatingsystem { debian,ubuntu: { class { 'nginx::package::debian': require => Anchor['nginx::package::begin'], before => Anchor['nginx::package::end'], } } opensuse,suse: { class { 'nginx::package::suse': require => Anchor['nginx::package::begin'], before => Anchor['nginx::package::end'], } } } }

Slide 24

Slide 24 text

Private und Public Clouds

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

Jedes Feature ist ein Branch.

Slide 27

Slide 27 text

Nutze HTML Diff E-Mails

Slide 28

Slide 28 text

Automatisiere so gut wie alles. Entwickler sind faul.

Slide 29

Slide 29 text

Nutze ein Wiki. Und halte es aktuell!

Slide 30

Slide 30 text

Dokumentiere so, dass du ersetzbar bist.

Slide 31

Slide 31 text

Nutze eine Tracking Software.

Slide 32

Slide 32 text

FRAMEWORK. NIH.

Slide 33

Slide 33 text

Nutze Frameworks. Für das Frontend. Für das Backend.

Slide 34

Slide 34 text

Nutze bewährte Frameworks

Slide 35

Slide 35 text

Nutze die Community

Slide 36

Slide 36 text

Checke Google Hits der Technologie X

Slide 37

Slide 37 text

Donald Knuth: „Premature optimization is the root of all evil.“

Slide 38

Slide 38 text

Test-Driven-Development

Slide 39

Slide 39 text

Der „Abbrechen“-Button? Wurde nicht getestet! :-(

Slide 40

Slide 40 text

Unit-Tests für die wichtigen Basis-Klassen.

Slide 41

Slide 41 text

Teste deine API automatisiert

Slide 42

Slide 42 text

Keine Selenium-Tests zu Beginn. Zu teuer.

Slide 43

Slide 43 text

VIELE, KLEINE MEETINGS

Slide 44

Slide 44 text

Iteratives Vorgehen

Slide 45

Slide 45 text

SCRUM

Slide 46

Slide 46 text

KANBAN

Slide 47

Slide 47 text

XP Kommunikation Einfachheit Feedback Mut Respekt

Slide 48

Slide 48 text

XP Feedback Loops Release Plan Iteration Plan Acceptence Test Daily Standup Pair Negotiation Unit Test Pair Programming Code Monate Wochen Tage Tag Stunden Minuten Sekunden

Slide 49

Slide 49 text

Daily Standup

Slide 50

Slide 50 text

Team-Mittagessen

Slide 51

Slide 51 text

⇥ Timeboxing ⇤

Slide 52

Slide 52 text

Vorbereiten auf Meetings

Slide 53

Slide 53 text

2 Wochen Rhythmus 14 days

Slide 54

Slide 54 text

Führe Retrospektiven durch

Slide 55

Slide 55 text

Lerne aus ihnen!

Slide 56

Slide 56 text

Pair-Programming fördert den Knowhow-Aufbau

Slide 57

Slide 57 text

Pair-Programming reduziert den Fragen-Overhead

Slide 58

Slide 58 text

Führe Usertests so früh wie möglich durch

Slide 59

Slide 59 text

Rapid Feedback. Lenkt die Entwicklung.

Slide 60

Slide 60 text

ÄNDERE NICHT ALLES.

Slide 61

Slide 61 text

Bekämpfe das „second system syndrome“

Slide 62

Slide 62 text

Nutze alten, wiederverwendbaren Code

Slide 63

Slide 63 text

Nutze bewährte Bibliotheken

Slide 64

Slide 64 text

Ständiges Refactoring

Slide 65

Slide 65 text

No content

Slide 66

Slide 66 text

Walking Skeleton

Slide 67

Slide 67 text

A/B Testing 20% Conversion Rate 25% Conversion Rate

Slide 68

Slide 68 text

Monitoring

Slide 69

Slide 69 text

Monitoring

Slide 70

Slide 70 text

Lege dich spät fest.

Slide 71

Slide 71 text

Habe Spaß am Projekt

Slide 72

Slide 72 text

„Stay hungry, stay foolish!“ Steve Jobs, 2005

Slide 73

Slide 73 text

Fragen? Kommentare?

Slide 74

Slide 74 text

Vielen Dank für Eure Aufmerksamkeit! Twitter: @ThorstenRinne App.net: https://alpha.app.net/thorsten Slides: http://speakerdeck.com/u/thorsten Thorsten Rinne Yatego GmbH [email protected]