Upload
sebastian-heuer
View
159
Download
3
Embed Size (px)
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?