Successfully reported this slideshow.
Beyond Fast, Good And Cheap
Alan Stevens
Finding our values in the face of uncertainty
Contact Me
Slides: speakerdeck.com/alanstevens
Email/IM: alanstevens@gmail.com
Website: halanstevens.com
Twitter: @alanste...
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 Triangle
Fast
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
pr...
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 New...
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 battl...
You are not done until the
victorious code has been
cleaned, polished, and oiled.
“Uncle” Bob Martin
“The Rush”
http://blo...
The Last 10% is 50% Of The Work
How do we guarantee baseline
design without impeding
productivity?
Image credit : FlyoverPeople.net
III. VALUES
The *ILITIES
Agility
Testability
Readability
Reversibility
Changeability
Flexibility
Maintainability
Coined by Kevlin Henn...
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...
as you learned things about that
software you would repay that
loan by refactoring the program
to reflect your experience ...
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 Mille...
Where should
this code go?
Don’t Repeat Yourself
&
Separation of Concerns
D RY
Don’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.
Wa...
Make it look like it was easy
to write this program, even if
it wasn’t.
Ward Cunningham
“Mastering the Craft of Programmin...
Make it look
like it was
easy to write.
Thanks For Listening!
Email/IM: alanstevens@gmail.com
Blog: http://halanstevens.com
Twitter: @alanstevens
Slides: speakerdeck.com/alanstevens
Email/IM: alanstevens@gmail.com
Website: halanstevens.com
Twitter: @alanstevens
Thanks...
Beyond Fast Good and Cheap
Beyond Fast Good and Cheap
Beyond Fast Good and Cheap
Upcoming SlideShare
Loading in …5
×

Beyond Fast Good and Cheap

2,774 views

Published on

How do we balance building the right thing with building it well? In this presentation we will examine this question at multiple levels of focus. We will discuss how a team can define the threshold for acceptable quality for their own context.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Beyond Fast Good and Cheap

  1. 1. Beyond Fast, Good And Cheap Alan Stevens Finding our values in the face of uncertainty
  2. 2. Contact Me Slides: speakerdeck.com/alanstevens Email/IM: alanstevens@gmail.com Website: halanstevens.com Twitter: @alanstevens
  3. 3. nerdhiveindustries.com
  4. 4. II. The Problem III. Values V. Rules I. Backstory IV. Principals
  5. 5. I. Backstory
  6. 6. I Hate Crappy Code
  7. 7. The Real World
  8. 8. Constraints
  9. 9. Priorities
  10. 10. Values
  11. 11. II. The Problem
  12. 12. The Project Triangle Fast GoodCheap pick any two
  13. 13. Fast
  14. 14. Good
  15. 15. Cheap
  16. 16. How do we balance building the right thing with building it well?
  17. 17. Building the right thing is always a higher priority!
  18. 18. 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
  19. 19. Can we verify that we are building the right thing?
  20. 20. The tests specify requirements in a way that does not require human interpretation to indicate success or failure. Jim Newkirk Test Driven Development in Microsoft .NET
  21. 21. Building it right has a minimum acceptable threshold which must be met
  22. 22. 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
  23. 23. 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
  24. 24. The Last 10% is 50% Of The Work
  25. 25. How do we guarantee baseline design without impeding productivity?
  26. 26. Image credit : FlyoverPeople.net III. VALUES
  27. 27. The *ILITIES Agility Testability Readability Reversibility Changeability Flexibility Maintainability Coined by Kevlin Henney
  28. 28. Prevention is the best cure
  29. 29. Continuous Improvement
  30. 30. “With every mistake, I must surely be learning” George Harrison
  31. 31. As applications mature, they should become more maintainable, not less.
  32. 32. Avoid Complacency
  33. 33. IV. Principles
  34. 34. Value Developer Cycles Over CPU Cycles
  35. 35. Do the simplest thing that could possibly work
  36. 36. Follow the “Boy Scout Principle”
  37. 37. Manage Technical Debt
  38. 38. 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
  39. 39. 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
  40. 40. Enable Change
  41. 41. Build Architectural Seams
  42. 42. At least build fault lines
  43. 43. V. Rules
  44. 44. the code is more what you'd call "guidelines" than actual rules
  45. 45. a developer's career is spent pursuing better and better answers to the question "where should this code go?" Jeremy Miller On Writing Maintainable Code http://codebetter.com/blogs/jeremy.miller/archive/2006/12/06/On-Writing-Maintainable-Code.aspx
  46. 46. Where should this code go?
  47. 47. Don’t Repeat Yourself & Separation of Concerns
  48. 48. D RY Don’t Repeat Yourself
  49. 49. See it once: do it See it twice: notice it See it a third time: Abstract It! The Rule of Three
  50. 50. Separation of Concerns
  51. 51. High Cohesion & Low Coupling
  52. 52. 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
  53. 53. 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
  54. 54. Make it look like it was easy to write.
  55. 55. Thanks For Listening! Email/IM: alanstevens@gmail.com Blog: http://halanstevens.com Twitter: @alanstevens
  56. 56. Slides: speakerdeck.com/alanstevens Email/IM: alanstevens@gmail.com Website: halanstevens.com Twitter: @alanstevens Thanks For Listening!

×