PHP Summit 2013 - Make or Buy?

Preview:

DESCRIPTION

Die alte Software genügt den Anforderungen nicht mehr, eine neue muss her. Zahlreiche Standardsysteme buhlen um die Gunst der Entscheider - aber ist Standard immer das richtige? Wann lohnt sich eine individuelle Eigenentwicklung? In der Session wird beleuchtet, warum der neue Shop von Globetrotter Ausrüstung nicht mit einer Standardsoftware läuft - und welche Vorteile das Unternehmen aus dieser Entscheidung zieht.

Citation preview

Sebastian Heuer | Globetrotter Ausrüstung

Make or Buy?

@GlobetrotterDEV

FOLLOW US!

STATUS QUO

Eigenentwicklung

STATUS QUO

Eigenentwicklung Standardsoftware

STATUS QUO

URSPRÜNGLICHER PLANStandardsoftware Standardsoftware

WHAT HAPPENED?

FEATURES, FEATURES, FEATURES• Produktvergleich

• Merklisten

• Gutscheine

• Bestellhistorie

• Backoffice (Artikel- und Bestellverwaltung)

–Random Globetrotter Employee

„Die Features passen fast zu unseren Anforderungen.“

CUSTOMIZING

CUSTOMIZINGBestehende Software wird an individuelle

Anforderungen angepasst

Feature X Feature Y Feature Z

Core Code Customization

HOUSTON, …• Artikelimport

• Varianten- und Merkmalstrukturen passen nicht zusammen

• Performance

• aufwändiges Caching, Probleme bei Invalidierung

• ohne Cache ein CPU Core je Request

THE WAY OUTAlternative Eigenentwicklung

THE WAY OUTAlternative Eigenentwicklung

THE WAY OUTAlternative Eigenentwicklung

THE WAY OUTAlternative Eigenentwicklung

Die Idee wird geboren

Die Idee wird geboren

Infizierung des Teams

„das wird niemals bewilligt“

Die Idee wird geboren

Infizierung des Teams

„das wird niemals bewilligt“

Workshop wird genehmigt \o/

Die Idee wird geboren

Infizierung des Teams

„das wird niemals bewilligt“

Workshop wird genehmigt \o/

Bau eines Prototypen „Wir schaffen das!“

Die Idee wird geboren

Infizierung des Teams

„das wird niemals bewilligt“

Workshop wird genehmigt \o/

Bau eines Prototypen „Wir schaffen das!“

Die Idee wird geboren

Infizierung des Teams

Entscheidung für die Eigenentwicklung!

„das wird niemals bewilligt“

Workshop wird genehmigt \o/

Bau eines Prototypen „Wir schaffen das!“

Die Idee wird geboren

Infizierung des Teams

finaler Lasttest

Entscheidung für die Eigenentwicklung!

„das wird niemals bewilligt“

Workshop wird genehmigt \o/

Bau eines Prototypen „Wir schaffen das!“

Die Idee wird geboren

Infizierung des Teams

Produktivsystem läuft

finaler Lasttest

Entscheidung für die Eigenentwicklung!

„das wird niemals bewilligt“

Workshop wird genehmigt \o/

Bau eines Prototypen „Wir schaffen das!“

Wir sind live!

Die Idee wird geboren

Infizierung des Teams

Produktivsystem läuft

finaler Lasttest

Entscheidung für die Eigenentwicklung!

–Green Lantern

„With great power comes great responsibility“

ARCHITECTURE IS THE KEY

ARCHITECTURE IS THE KEY• Wenn man bei NULL anfängt, muss man sich gut

vorbereiten. Kein „just do it“ in dieser Phase.

ARCHITECTURE IS THE KEY• Wenn man bei NULL anfängt, muss man sich gut

vorbereiten. Kein „just do it“ in dieser Phase.

• Wichtig: nicht sofort in Technologien denken („Webprojekte macht man jetzt mit Rails“)

ARCHITECTURE IS THE KEY• Wenn man bei NULL anfängt, muss man sich gut

vorbereiten. Kein „just do it“ in dieser Phase.

• Wichtig: nicht sofort in Technologien denken („Webprojekte macht man jetzt mit Rails“)

• Technologieunabhängige Architektur steht am Anfang

ARCHITECTURE IS THE KEY

Webserver StoreFront

Middleware

DataPool

Search

StoreBack

TEAM SETUP

TEAM SETUP• Coding Guidelines

TEAM SETUP• Coding Guidelines

• PHP CodeSniffer Ruleset erarbeiten

TEAM SETUP• Coding Guidelines

• PHP CodeSniffer Ruleset erarbeiten

• Welche Metriken sind uns wichtig und warum?

TEAM SETUP• Coding Guidelines

• PHP CodeSniffer Ruleset erarbeiten

• Welche Metriken sind uns wichtig und warum?

• CI aufsetzen

TEAM SETUP

TEAM SETUP• Definition of Done festlegen und leben

TEAM SETUP• Definition of Done festlegen und leben

• interne QA durch zweiten Entwickler

TEAM SETUP• Definition of Done festlegen und leben

• interne QA durch zweiten Entwickler

• Deploymentkonzept

TEAM SETUP• Definition of Done festlegen und leben

• interne QA durch zweiten Entwickler

• Deploymentkonzept

• so früh wie möglich ins CI integrieren

DEPLOYMENT

THINK ITERATIVE

THINK ITERATIVE• Mit minimalem Featureset starten

THINK ITERATIVE• Mit minimalem Featureset starten

• Stabiles Fundament errichten

THINK ITERATIVE• Mit minimalem Featureset starten

• Stabiles Fundament errichten

• Stabilen Stand nach und nach um Features erweitern

THINK ITERATIVE• Mit minimalem Featureset starten

• Stabiles Fundament errichten

• Stabilen Stand nach und nach um Features erweitern

• regelmäßige Reviews

DAS MINIMUM

DAS MINIMUM• Navigation

DAS MINIMUM• Navigation

• Produktlisting

DAS MINIMUM• Navigation

• Produktlisting

• Produktdetailseite

DAS MINIMUM• Navigation

• Produktlisting

• Produktdetailseite

• Warenkorb

DAS MINIMUM• Navigation

• Produktlisting

• Produktdetailseite

• Warenkorb

• Checkout (Adresse + Zahlart Vorkasse)

SOLVING CONFLICTS• Diskussionen über mögliche Lösungswege

brauchen einen Moderator und einen Entscheider, dessen Urteil akzeptiert wird

SOLVING CONFLICTS

SOLVING CONFLICTS• Alleingänge vermeiden und stoppen

SOLVING CONFLICTS• Alleingänge vermeiden und stoppen

• Ablehnung von kreativen Vorschlägen aus dem Team ist manchmal notwendig, aber demotivierend

SOLVING CONFLICTS• Alleingänge vermeiden und stoppen

• Ablehnung von kreativen Vorschlägen aus dem Team ist manchmal notwendig, aber demotivierend

• <insert anecdote here>

THE SKY TEAM IS THE LIMIT

THE SKY TEAM IS THE LIMIT• Bei der Umsetzung von Features gibt es quasi™

keine Grenzen mehr

THE SKY TEAM IS THE LIMIT• Bei der Umsetzung von Features gibt es quasi™

keine Grenzen mehr

• Das Team kennt jede einzelne Codezeile

THE SKY TEAM IS THE LIMIT• Bei der Umsetzung von Features gibt es quasi™

keine Grenzen mehr

• Das Team kennt jede einzelne Codezeile

• Schnelles Team = schnelle Weiterentwicklung

THE SKY TEAM IS THE LIMIT• Bei der Umsetzung von Features gibt es quasi™

keine Grenzen mehr

• Das Team kennt jede einzelne Codezeile

• Schnelles Team = schnelle Weiterentwicklung

• Langsames Team = langsame Weiterentwicklung

non-comment lines of code (NCLOC)

Magento CE 1.8.0.0 (/app)

Symfony 2.3.7 (/vendor)

globetrotter.de

0 125.000 250.000 375.000 500.000

ermittelt mit phploc 2.0.0

non-comment lines of code (NCLOC)

Magento CE 1.8.0.0 (/app)

Symfony 2.3.7 (/vendor)

globetrotter.de

0 125.000 250.000 375.000 500.000

ermittelt mit phploc 2.0.0

FAZITWarum war die Eigenentwicklung die richtige Entscheidung für uns?

FAZITWarum war die Eigenentwicklung die richtige Entscheidung für uns?

• Wir wollen kein „me too commerce“

FAZITWarum war die Eigenentwicklung die richtige Entscheidung für uns?

• Wir wollen kein „me too commerce“

• Wir haben die Chance, mit Innovationen den Markt mitzugestalten

FAZITWarum war die Eigenentwicklung die richtige Entscheidung für uns?

• Wir wollen kein „me too commerce“

• Wir haben die Chance, mit Innovationen den Markt mitzugestalten

• Wir wollen die volle Kontrolle über unsere Applikation

FAZITWarum war die Eigenentwicklung die richtige Entscheidung für uns?

• Wir wollen kein „me too commerce“

• Wir haben die Chance, mit Innovationen den Markt mitzugestalten

• Wir wollen die volle Kontrolle über unsere Applikation

• Wir haben die richtigen Leute!

WE ARE HIRING! (THIS IS THE Q&A SLIDE)

Sebastian Heuer | Globetrotter Ausrüstung

Make or Buy?

Recommended