raganwald
(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Friday, February 22, 2008
  The house that Mike built


I’ll tell you, as a contractor, I’m sick of fixing crap. There’s nothing better than building it right the first time. Repairing bad work is full of compromises—you’re dealing with existing structure, with existing mistakes, with other peoples’ choices of inferior materials and bad designs. It’s always more work, and it costs more, to go back and fix what was done wrong in the first place.
—Mike Holmes, The house that Mike built
 

Comments on “The house that Mike built:
I love that quote. I could stick it on my website and people would think it's about maintenance programming, not fixing a bad construction job. Does that make "Do it right the first time" some kind of universal truth? :-)
 
There are some interesting parallels between building physical things like houses and building software.

What appeals to us, as craftspeople in both construction and programming, is sometimes at odds with our employers' needs.

For example, the faster a real estate developer can get a building constructed, the faster he will see some return on his investment. This is even more important in a time where a real estate bubble bursting appears imminent. So you can imagine the pressure to (sometimes literally) cut corners.

A small real life example from my recently built house: the molding around a bathroom door was wide enough that it would have overlapped with a switch plate. The solution: cut out a notch in the molding.

When I, as a software developer, make similar choices in the heat of the moment, I die a little inside.
 




<< Home
Reg Braithwaite


Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

Books
What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

Share
rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

Beauty
IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

Work
The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Management
Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

Notation
The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Opinion
Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

Whimsey
The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

History
06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /