The Artima Developer Community
Sponsored Link

Uncle Bob's Software Craftsmanship Corner
We will not ship shit.
by Robert C. Martin
July 15, 2003
Summary
As software craftsmen, we have rules. Sometimes we feel bad when the rules mut be broken. They're just rules though. What's important is that we have a moral center, a professional core, that refuses to compromise the quality of our work.

Advertisement

As software craftsmen we have rules, disciplines, and practices that we follow 
to help us maintain a high degree of quality and professionalism.  However, 
there are always trade-offs, always considerations, always possibilities. 
Sometimes we abandon a complex test case because we need to finish the task,
and visual inspection or manual testing is sufficient.  Sometimes we fail to
write an acceptance test because it's complicated, and the bang-for-buck is
low.  Sometimes we don't program in pairs, because -- well -- we don't have
a partner nearby, or we're sick of programming with someone else, or the
current task is mechanical.  Sometimes we keep a module checked out for more
than a couple of hours.  Sometimes (damned rarely!) we check in code that
fails to pass all the acceptance tests, or all the unit tests.  

They're just rules, and rules are made to be broken.

Blindly following rules is a fools errand.  We have enough grey matter to
discern when the rules are helpful and when they are not.  We have the
responsibility to continuously measure whether the rules are helpful, or
whether they are not.  

But then -- there's something else.  

Something that is cold and hard, and yet simultaneously hot and blazing.
Something, amidst all the compromise and ambiguity, that is neither
compromised nor ambiguous.  Something that spawns and respawns the rules we
follow, and yet challenges those rules at every turn.  

The still small voice; the angel's trumpet, the grim determination, the
joyous declaration: 

  "I WILL NOT SHIP SHIT."  

 - "I am a professional -- a craftsman!"
  -- "No matter what pressures are on me."
  -- "No matter how I've had to bend the rules."
  -- "No matter what shortcuts I've had to take."
  -- "No matter what the gods, or managers, have done or may do."

  --  --  "I WILL DO THE BEST WORK I CAN POSSIBLY DO."
  --  --  "Anything short of my best is shit."
  --  --  "I _ WILL _  NOT _ SHIP _ SHIT."

For me, at least, this is what it all comes down to.  I find that the rules
of XP help me to achieve this most of the time  -- more of the time than any
other set of rules I have followed.  But rules are rules, and when they get
in the way of this goal, they get set aside.

I do not set the rules aside lightly.  Indeed, when in doubt, I follow them.
When the pressure is on, I follow them.  When the deadline looms, I follow
them.  I try hard not to let fear drive me.

Fear is the mind killer.  It breeds idiocies like:

   "We don't have time to write tests."
   "We don't have time to program in pairs."
   "We don't have time to integrate continuously."
   "We don't have time to automate our acceptance tests."

These idiocies are a siren's song.  Their lure is strong.  Look in their
direction and The Despair begins.  All the rules will fall away.
  
Our core of professional pride is the cure.  That something that is both
cold and hard, yet hot and blazing.  It won't set aside a rule out of fear.
It sets aside a rule when *the rule* will cause you to ship shit.   

Go now, the lesson has ended.

Talk Back!

Have an opinion? Readers have already posted 19 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Robert C. Martin adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Robert C. Martin (Uncle Bob) has been a software professional since 1970 and an international software consultant since 1990. He is founder and president of Object Mentor Inc., a team of experienced consultants who mentor their clients worldwide in the fields of C++, Java, OO, Patterns, UML, Agile Methodologies, and Extreme Programming. In 1995 Robert authored the best-selling book: Designing Object Oriented C++ Applications using the Booch Method, published by Prentice Hall. From 1996 to 1999 he was the editor-in-chief of the C++ Report. In 1997 he was chief editor of the book: Pattern Languages of Program Design 3, published by Addison Wesley. In 1999 he was the editor of "More C++ Gems" published by Cambridge Press. He is co-author, with James Newkirk, of "XP in Practice", Addision Wesley, 2001. In 2002 he wrote the long awaited "Agile Software Development: Principles, Patterns, and Practices", Prentice Hall, 2002. He has published many dozens of articles in various trade journals, and is a regular speaker at international conferences and trade shows.

This weblog entry is Copyright © 2003 Robert C. Martin. All rights reserved.

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2014 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use - Advertise with Us