SlideShare a Scribd company logo
Built it, but nobody came:
Avoiding over-engineering
Jon Peck @fluxsauce | #SANDCamp 2016.02.26
Jon Peck
Senior Engineer, Four Kitchens
twitter.com/fluxsauce
github.com/fluxsauce
linkedin.com/in/jonpeck
What’s over-engineering?
... the designing of a product to be more robust or complicated than is
necessary for its application, either to ensure sufficient factor of safety,
sufficient functionality, or because of design errors. (Wikipedia)
Making something that isn’t used
Cautionary Tale
“Creative Works”
Old system had a librarian who
managed taxonomy of movies,
albums.
The librarian left, so editors reverted
to flat tags.
PO for new site wanted order.
Migrated content into clean
hierarchy, but...
PO left and the replacement didn’t
share vision. Site launched.
Today? Flat tags.
What causes over-engineering?
Human nature - we want to do good things
Pride - because we can
Ignorance - don’t know of a better way
Don’t care - somebody else’s problem
Cautionary Tale
Technical stakeholder at client
concerned about performance.
Disallowed Panels, but...
Required Panels flexibility.
Reinvented the wheel, added
dozens of hours, fragile & scary
codebase.
“Let’s reinvent Panels!”
Design - wireframes and mockups make it look easy
Meetings - priority miscommunication
Architecture - prescriptive requirements
Implementation - ignorance and inexperience
When does over-engineering start?
Success Story
Site on a tight budget has an events
calendar.
Wireframe has an RSVP.
Framework doesn’t have an off-the-
shelf events calendar.
Where will RSVPs be handled?
Off-site; just link to it.
“Event RSVP”
Analyze the request.
What is the goal?
Who needs this feature?
Why is this feature needed?
Is this the only way?
What data backs it up?
Engineer assumed support of very
old versions of IE.
Support means extra overhead.
Checked Google Analytics...
Less than 3%! HTML5 Shiv
unnecessary.
Success Story
“Minimum version of
Internet Explorer”
Build a Minimum Viable Product
The minimum viable product (MVP) is a product which has just enough
features to gather validated learning about the product and its continued
development. (Wikipedia)
A MVP is the basis for iteration and drives the conversation.
Estimation, prioritization, iteration
Define the cost of a feature.
Cost and interest drive prioritization.
Iterate beyond the MVP.
Cautionary Tale
Wanted optional arbitrary
placement of items in a list of
content.
Built it and the interface; worked on
it until launch.
Really only needed a sticky flag.
Editorial control over list items
Iteration communicates by making something tangible.
If it can’t be used, it’s not iteration.
Iteration only works if there’s something to iterate on.
Under-engineering
Cautionary Tale
Working on project for many
months.
Most functionality was complete;
content migrated, design was being
implemented.
“Site’s not built, we can’t review!”
Navigation wasn’t finished;
removed placeholders and finalized
menu.
“Site’s not built yet.”
Did I really need to do that?
Spending hours making changes that have no tangible effect on the system.
Change for the sake of change.
Artificial challenges whose solutions don’t impact the product.
Slippery Slope
Always apply security updates.
Always apply relevant bug fixes.
Incrementally update when
convenient and testable.
Evaluate new features, upgrade if
you need them.
Version updates
Cautionary Tale
Site optimization.
ESLint produced list of all problems,
including errors, warnings, and
stylistic problems.
What should have gotten fixed —
syntax errors and warnings.
What happened instead — entire
rewrite of all JavaScript.
ESLint JavaScript errors
Slippery Slope
for vs foreach, echo vs print,
. vs , …
No practical difference in most use
cases.
Usually makes code harder to
maintain.
Focus on big picture first — slow
queries, caching, errors...
Micro optimizations
Do you have a
story to tell?
Audience participation.
Avoiding over-
engineering is not
an excuse to say
no.
Thank you.
twitter.com/fluxsauce
twitter.com/fourkitchens

More Related Content

PDF
How to audit Drupal Sites for performance, content and best practices
PDF
Drupal Site Audit - SFDUG
PDF
貢獻開源專案 (Contribute to open source project)
PPTX
14 Habits of Great SQL Developers
PPTX
14 Habits of Great SQL Developers
KEY
Continuous integration & deployment
PDF
Apache contribution-bar camp-colombo
PPTX
Collaborating on GitHub for Open Source Documentation
How to audit Drupal Sites for performance, content and best practices
Drupal Site Audit - SFDUG
貢獻開源專案 (Contribute to open source project)
14 Habits of Great SQL Developers
14 Habits of Great SQL Developers
Continuous integration & deployment
Apache contribution-bar camp-colombo
Collaborating on GitHub for Open Source Documentation

What's hot (20)

PDF
Dynamic bpm design by doing lightning talk
PPTX
A Personal Journey
PPTX
Continuous Integration
PDF
Does Your Stuff Scale?
PPT
Jira and Confluence - How the company behind those products works - Anatoli K...
PPTX
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...
PPTX
Untangling the web - fall2017 - class 4
PDF
Trying Out Tomorrow’s WordPress Today
PPTX
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
PDF
React talk, GrunnJs 24 September 2014
PPTX
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
PDF
COSCUP 開源工作坊:Git workflows
KEY
Pivotal tracker presentation 10-13-2010
PDF
Dev Tools for Admins - Forcelandia 2016
PDF
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...
PPTX
Automated Acceptance Tests & Tool choice
PPTX
Api Design Anti-Patterns
PPTX
Engage 2019 - De04. Java with Domino After XPages
PDF
Bridging the gap between UX and development - A Storybook by Marko Letic at F...
PPTX
Forcelandia Salesforce CI
Dynamic bpm design by doing lightning talk
A Personal Journey
Continuous Integration
Does Your Stuff Scale?
Jira and Confluence - How the company behind those products works - Anatoli K...
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...
Untangling the web - fall2017 - class 4
Trying Out Tomorrow’s WordPress Today
Design patterns for efficient DevOps processes - Rebecca Fitzhugh - DevOpsDay...
React talk, GrunnJs 24 September 2014
A culture of Automation - Joe Smith - DevOpsDays Tel Aviv 2017
COSCUP 開源工作坊:Git workflows
Pivotal tracker presentation 10-13-2010
Dev Tools for Admins - Forcelandia 2016
How to survive continuous innovation - Sebastien Goasguen - DevOpsDays Tel Av...
Automated Acceptance Tests & Tool choice
Api Design Anti-Patterns
Engage 2019 - De04. Java with Domino After XPages
Bridging the gap between UX and development - A Storybook by Marko Letic at F...
Forcelandia Salesforce CI
Ad

Viewers also liked (7)

PPT
Overengineering Simplicity
PDF
Menos overengineering: Notepad++
PDF
Organisational Wiki Adoption
PDF
Internet of Things - Benefits for the Ummah
PDF
How Ceph performs on ARM Microserver Cluster
PDF
Modular vs Monolith
PDF
Avoid these 10 mistakes in your internal communications strategy
Overengineering Simplicity
Menos overengineering: Notepad++
Organisational Wiki Adoption
Internet of Things - Benefits for the Ummah
How Ceph performs on ARM Microserver Cluster
Modular vs Monolith
Avoid these 10 mistakes in your internal communications strategy
Ad

Similar to Built it, but nobody came: avoiding over-engineering (20)

PDF
Indix Engineering Culture Code (2015)
PDF
The Lost Tales of Platform Design (February 2017)
PDF
When Things Go Bump in the Night
PPTX
Engineer - Mastering the Art of Software
PPT
Arch factory - Agile Design: Best Practices
PDF
Quality is a variable
PDF
[Keynote] James Higgs - Quality is a variable
PPTX
Getting it Built
PPTX
How to build a great Web Application - Lessons from Getting Real by 37 Signals
PPTX
OSSCube - Zend Webinar
PDF
Big guns for small guys (reloaded)
PDF
Startup Architecture: How to Lean on Others to Get Stuff DoneUntitled
PPTX
Iterating In the Open
PPT
Software Development in 21st Century
PDF
Traits of a Good Engineer
PDF
10 bezcennych lekcji dla software developera stającego się szefem firmy
PDF
Book: Software Architecture and Decision-Making
PDF
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
PDF
Ten lessons I painfully learnt while moving from software developer
to entrep...
PDF
Pair Programming, TDD and other impractical things
Indix Engineering Culture Code (2015)
The Lost Tales of Platform Design (February 2017)
When Things Go Bump in the Night
Engineer - Mastering the Art of Software
Arch factory - Agile Design: Best Practices
Quality is a variable
[Keynote] James Higgs - Quality is a variable
Getting it Built
How to build a great Web Application - Lessons from Getting Real by 37 Signals
OSSCube - Zend Webinar
Big guns for small guys (reloaded)
Startup Architecture: How to Lean on Others to Get Stuff DoneUntitled
Iterating In the Open
Software Development in 21st Century
Traits of a Good Engineer
10 bezcennych lekcji dla software developera stającego się szefem firmy
Book: Software Architecture and Decision-Making
SFI 2017 Plantacje Programistów (Developers Plantations) - Colonialism in XXI...
Ten lessons I painfully learnt while moving from software developer
to entrep...
Pair Programming, TDD and other impractical things

More from Jon Peck (10)

PDF
Multiplier Effect: Case Studies in Distributions for Publishers
PPT
Creating a PHP Portal for Perseus Survey Solutions
PDF
The Great Consolidation: Entertainment Weekly Migration Case Study (DrupalCon...
PDF
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
PDF
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
PDF
Terminus, the Pantheon command-line interface
PDF
SANDcamp 2014 - A Perfect Launch, Every Time
PDF
Pantheon Launch Check Introduction Webinar
PDF
Drush for humans - SANDcamp 2013
PPT
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Multiplier Effect: Case Studies in Distributions for Publishers
Creating a PHP Portal for Perseus Survey Solutions
The Great Consolidation: Entertainment Weekly Migration Case Study (DrupalCon...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Terminus, the Pantheon command-line interface
SANDcamp 2014 - A Perfect Launch, Every Time
Pantheon Launch Check Introduction Webinar
Drush for humans - SANDcamp 2013
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)

Recently uploaded (20)

PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PPTX
Sustainable Sites - Green Building Construction
PPTX
Construction Project Organization Group 2.pptx
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
Strings in CPP - Strings in C++ are sequences of characters used to store and...
PPTX
bas. eng. economics group 4 presentation 1.pptx
PDF
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
PDF
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
PDF
Digital Logic Computer Design lecture notes
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
PDF
Model Code of Practice - Construction Work - 21102022 .pdf
PPTX
Foundation to blockchain - A guide to Blockchain Tech
PPT
Project quality management in manufacturing
DOCX
573137875-Attendance-Management-System-original
PDF
Arduino robotics embedded978-1-4302-3184-4.pdf
DOCX
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
PDF
composite construction of structures.pdf
PPTX
Lecture Notes Electrical Wiring System Components
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
additive manufacturing of ss316l using mig welding
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
Sustainable Sites - Green Building Construction
Construction Project Organization Group 2.pptx
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
Strings in CPP - Strings in C++ are sequences of characters used to store and...
bas. eng. economics group 4 presentation 1.pptx
PRIZ Academy - 9 Windows Thinking Where to Invest Today to Win Tomorrow.pdf
Mitigating Risks through Effective Management for Enhancing Organizational Pe...
Digital Logic Computer Design lecture notes
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
Model Code of Practice - Construction Work - 21102022 .pdf
Foundation to blockchain - A guide to Blockchain Tech
Project quality management in manufacturing
573137875-Attendance-Management-System-original
Arduino robotics embedded978-1-4302-3184-4.pdf
ASol_English-Language-Literature-Set-1-27-02-2023-converted.docx
composite construction of structures.pdf
Lecture Notes Electrical Wiring System Components
Operating System & Kernel Study Guide-1 - converted.pdf
additive manufacturing of ss316l using mig welding

Built it, but nobody came: avoiding over-engineering

  • 1. Built it, but nobody came: Avoiding over-engineering Jon Peck @fluxsauce | #SANDCamp 2016.02.26
  • 2. Jon Peck Senior Engineer, Four Kitchens twitter.com/fluxsauce github.com/fluxsauce linkedin.com/in/jonpeck
  • 3. What’s over-engineering? ... the designing of a product to be more robust or complicated than is necessary for its application, either to ensure sufficient factor of safety, sufficient functionality, or because of design errors. (Wikipedia) Making something that isn’t used
  • 4. Cautionary Tale “Creative Works” Old system had a librarian who managed taxonomy of movies, albums. The librarian left, so editors reverted to flat tags. PO for new site wanted order. Migrated content into clean hierarchy, but... PO left and the replacement didn’t share vision. Site launched. Today? Flat tags.
  • 5. What causes over-engineering? Human nature - we want to do good things Pride - because we can Ignorance - don’t know of a better way Don’t care - somebody else’s problem
  • 6. Cautionary Tale Technical stakeholder at client concerned about performance. Disallowed Panels, but... Required Panels flexibility. Reinvented the wheel, added dozens of hours, fragile & scary codebase. “Let’s reinvent Panels!”
  • 7. Design - wireframes and mockups make it look easy Meetings - priority miscommunication Architecture - prescriptive requirements Implementation - ignorance and inexperience When does over-engineering start?
  • 8. Success Story Site on a tight budget has an events calendar. Wireframe has an RSVP. Framework doesn’t have an off-the- shelf events calendar. Where will RSVPs be handled? Off-site; just link to it. “Event RSVP”
  • 9. Analyze the request. What is the goal? Who needs this feature? Why is this feature needed? Is this the only way? What data backs it up?
  • 10. Engineer assumed support of very old versions of IE. Support means extra overhead. Checked Google Analytics... Less than 3%! HTML5 Shiv unnecessary. Success Story “Minimum version of Internet Explorer”
  • 11. Build a Minimum Viable Product The minimum viable product (MVP) is a product which has just enough features to gather validated learning about the product and its continued development. (Wikipedia) A MVP is the basis for iteration and drives the conversation.
  • 12. Estimation, prioritization, iteration Define the cost of a feature. Cost and interest drive prioritization. Iterate beyond the MVP.
  • 13. Cautionary Tale Wanted optional arbitrary placement of items in a list of content. Built it and the interface; worked on it until launch. Really only needed a sticky flag. Editorial control over list items
  • 14. Iteration communicates by making something tangible. If it can’t be used, it’s not iteration. Iteration only works if there’s something to iterate on. Under-engineering
  • 15. Cautionary Tale Working on project for many months. Most functionality was complete; content migrated, design was being implemented. “Site’s not built, we can’t review!” Navigation wasn’t finished; removed placeholders and finalized menu. “Site’s not built yet.”
  • 16. Did I really need to do that? Spending hours making changes that have no tangible effect on the system. Change for the sake of change. Artificial challenges whose solutions don’t impact the product.
  • 17. Slippery Slope Always apply security updates. Always apply relevant bug fixes. Incrementally update when convenient and testable. Evaluate new features, upgrade if you need them. Version updates
  • 18. Cautionary Tale Site optimization. ESLint produced list of all problems, including errors, warnings, and stylistic problems. What should have gotten fixed — syntax errors and warnings. What happened instead — entire rewrite of all JavaScript. ESLint JavaScript errors
  • 19. Slippery Slope for vs foreach, echo vs print, . vs , … No practical difference in most use cases. Usually makes code harder to maintain. Focus on big picture first — slow queries, caching, errors... Micro optimizations
  • 20. Do you have a story to tell? Audience participation.
  • 21. Avoiding over- engineering is not an excuse to say no.