59
Beyond Fast, Good And Cheap Alan Stevens Finding our values in the face of uncertainty

Beyond Fast Good and Cheap

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: Beyond Fast Good and Cheap

Beyond Fast, Good And Cheap

Alan Stevens

Finding our values in the face of uncertainty

Page 2: Beyond Fast Good and Cheap

Contact Me

Slides: speakerdeck.com/alanstevens

Email/IM: [email protected]

Website: halanstevens.com

Twitter: @alanstevens

Page 3: Beyond Fast Good and Cheap

nerdhiveindustries.com

Page 4: Beyond Fast Good and Cheap

II. The Problem

III. Values

V. Rules

I. Backstory

IV. Principals

Page 5: Beyond Fast Good and Cheap

I. Backstory

Page 6: Beyond Fast Good and Cheap

I Hate Crappy Code

Page 7: Beyond Fast Good and Cheap

The Real World

Page 8: Beyond Fast Good and Cheap

Constraints

Page 9: Beyond Fast Good and Cheap

Priorities

Page 10: Beyond Fast Good and Cheap

Values

Page 11: Beyond Fast Good and Cheap

II. The Problem

Page 12: Beyond Fast Good and Cheap

The Project TriangleFast

GoodCheap

pick any two

Page 13: Beyond Fast Good and Cheap

Fast

Page 14: Beyond Fast Good and Cheap

Good

Page 15: Beyond Fast Good and Cheap

Cheap

Page 16: Beyond Fast Good and Cheap

How do we balance building the right thing with building it well?

Page 17: Beyond Fast Good and Cheap

Building the right thing is always a higher priority!

Page 18: Beyond Fast Good and Cheap

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

Page 19: Beyond Fast Good and Cheap

Can we verify that we are building the right thing?

Page 20: Beyond Fast Good and Cheap

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

Page 21: Beyond Fast Good and Cheap

Building it right has a minimum acceptable threshold which must be met

Page 22: Beyond Fast Good and Cheap

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

Page 23: Beyond Fast Good and Cheap

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

Page 24: Beyond Fast Good and Cheap

The Last 10% is 50% Of The Work

Page 25: Beyond Fast Good and Cheap

How do we guarantee baseline design without impeding

productivity?

Page 26: Beyond Fast Good and Cheap

Image credit : FlyoverPeople.net

III. VALUES

Page 27: Beyond Fast Good and Cheap

The *ILITIESAgility

Testability

Readability

Reversibility

Changeability

Flexibility

Maintainability

Coined by Kevlin Henney

Page 28: Beyond Fast Good and Cheap

Prevention is the best cure

Page 29: Beyond Fast Good and Cheap

Continuous Improvement

Page 30: Beyond Fast Good and Cheap

“With every mistake, I must surely be learning”

George Harrison

Page 31: Beyond Fast Good and Cheap

As applications mature, they should become more maintainable, not less.

Page 32: Beyond Fast Good and Cheap

Avoid Complacency

Page 33: Beyond Fast Good and Cheap

IV. Principles

Page 34: Beyond Fast Good and Cheap

Value Developer Cycles Over CPU Cycles

Page 35: Beyond Fast Good and Cheap

Do the simplest thing that could possibly work

Page 36: Beyond Fast Good and Cheap

Follow the “Boy Scout Principle”

Page 37: Beyond Fast Good and Cheap

Manage Technical Debt

Page 38: Beyond Fast Good and Cheap

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

Page 39: Beyond Fast Good and Cheap

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

Page 40: Beyond Fast Good and Cheap

Enable Change

Page 41: Beyond Fast Good and Cheap

Build Architectural Seams

Page 42: Beyond Fast Good and Cheap

At least build fault lines

Page 43: Beyond Fast Good and Cheap

V. Rules

Page 44: Beyond Fast Good and Cheap

the code is more what you'd call "guidelines" than actual rules

Page 45: Beyond Fast Good and Cheap

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

Page 46: Beyond Fast Good and Cheap

Where should this code go?

Page 47: Beyond Fast Good and Cheap

Don’t Repeat Yourself&

Separation of Concerns

Page 48: Beyond Fast Good and Cheap

D RYDon’t

Repeat Yourself

Page 49: Beyond Fast Good and Cheap

See it once: do it

See it twice: notice it

See it a third time:

Abstract It!

The Rule of Three

Page 50: Beyond Fast Good and Cheap

Separation of Concerns

Page 51: Beyond Fast Good and Cheap
Page 52: Beyond Fast Good and Cheap
Page 53: Beyond Fast Good and Cheap

High Cohesion &

Low Coupling

Page 54: Beyond Fast Good and Cheap
Page 55: Beyond Fast Good and Cheap

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

Page 56: Beyond Fast Good and Cheap

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

Page 57: Beyond Fast Good and Cheap

Make it look like it was

easy to write.

Page 58: Beyond Fast Good and Cheap

Thanks For Listening!

Email/IM: [email protected]

Blog: http://halanstevens.com

Twitter: @alanstevens

Page 59: Beyond Fast Good and Cheap

Slides: speakerdeck.com/alanstevens

Email/IM: [email protected]

Website: halanstevens.com

Twitter: @alanstevens

Thanks For Listening!