Beyond Fast, Good And Cheap Alan Stevens Finding our values in the face of uncertainty
Nov 01, 2014
Beyond Fast, Good And Cheap
Alan Stevens
Finding our values in the face of uncertainty
Contact Me
Slides: speakerdeck.com/alanstevens
Email/IM: [email protected]
Website: halanstevens.com
Twitter: @alanstevens
nerdhiveindustries.com
II. The Problem
III. Values
V. Rules
I. Backstory
IV. Principals
I. Backstory
I Hate Crappy Code
The Real World
Constraints
Priorities
Values
II. The Problem
The Project TriangleFast
GoodCheap
pick any two
Fast
Good
Cheap
How do we balance building the right thing with building it well?
Building the right thing is always a higher priority!
I'm never in favor of writing code poorly, but I am in favor of writing code to reflect your current understanding of a problem even if that understanding is partial.
Ward Cunningham“Ward Explains Debt Metaphor”
http://c2.com/cgi/wiki?WardExplainsDebtMetaphor
Can we verify that we are building the right thing?
The tests specify requirements in a way that does not require human interpretation to indicate success or failure.
Jim NewkirkTest Driven Development in Microsoft .NET
Building it right has a minimum acceptable threshold which must be met
Once you get your systems to work, you still have to go back and clean up the wreckage left behind by the victorious battle.
“Uncle” Bob Martin“The Rush”
http://blog.objectmentor.com/articles/2009/06/26/the-rush
You are not done until the victorious code has been cleaned, polished, and oiled.
“Uncle” Bob Martin“The Rush”
http://blog.objectmentor.com/articles/2009/06/26/the-rush
The Last 10% is 50% Of The Work
How do we guarantee baseline design without impeding
productivity?
Image credit : FlyoverPeople.net
III. VALUES
The *ILITIESAgility
Testability
Readability
Reversibility
Changeability
Flexibility
Maintainability
Coined by Kevlin Henney
Prevention is the best cure
Continuous Improvement
“With every mistake, I must surely be learning”
George Harrison
As applications mature, they should become more maintainable, not less.
Avoid Complacency
IV. Principles
Value Developer Cycles Over CPU Cycles
Do the simplest thing that could possibly work
Follow the “Boy Scout Principle”
Manage Technical Debt
I thought that rushing software out the door to get some experience with it was a good idea, but that of course, you would eventually go back
Ward Cunningham“Ward Explains Debt Metaphor”http://c2.com/cgi/wiki?WardExplainsDebtMetaphor
as you learned things about that software you would repay that loan by refactoring the program to reflect your experience as you acquired it.
Ward Cunningham“Ward Explains Debt Metaphor”http://c2.com/cgi/wiki?WardExplainsDebtMetaphor
Enable Change
Build Architectural Seams
At least build fault lines
V. Rules
the code is more what you'd call "guidelines" than actual rules
a developer's career is spent pursuing better and better answers to the question "where should this code go?"
Jeremy MillerOn Writing Maintainable Codehttp://codebetter.com/blogs/jeremy.miller/archive/2006/12/06/On-Writing-Maintainable-Code.aspx
Where should this code go?
Don’t Repeat Yourself&
Separation of Concerns
D RYDon’t
Repeat Yourself
See it once: do it
See it twice: notice it
See it a third time:
Abstract It!
The Rule of Three
Separation of Concerns
High Cohesion &
Low Coupling
When you finally realize what your program is doing, you have to go back and make it look like you knew that all along.
Ward Cunningham“Mastering the Craft of Programming”http://railslab.newrelic.com/2009/09/15/ward-cunningham-aboutus-org
Make it look like it was easy to write this program, even if it wasn’t.
Ward Cunningham“Mastering the Craft of Programming”http://railslab.newrelic.com/2009/09/15/ward-cunningham-aboutus-org
Make it look like it was
easy to write.
Thanks For Listening!
Email/IM: [email protected]
Blog: http://halanstevens.com
Twitter: @alanstevens
Slides: speakerdeck.com/alanstevens
Email/IM: [email protected]
Website: halanstevens.com
Twitter: @alanstevens
Thanks For Listening!