The Artima Developer Community
Sponsored Link

Weblogs Forum
We will not ship shit.

19 replies on 2 pages. Most recent reply: Feb 22, 2013 7:21 AM by Jay SuperDev

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 19 replies on 2 pages [ 1 2 | » ]
Robert C. Martin

Posts: 111
Nickname: unclebob
Registered: Apr, 2003

We will not ship shit. (View in Weblogs)
Posted: Jul 15, 2003 2:33 PM
Reply to this message Reply
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.


Dejan Jelovic

Posts: 1
Nickname: djelovic
Registered: Jul, 2003

Re: We will not ship shit. Posted: Jul 16, 2003 5:02 AM
Reply to this message Reply
I love the sentiment of your post. I don't like the fact that you mixed it with XP propaganda which does not sit well with people like me that have not drank the XP Kool-Aid.

Dejan

Chris Hartjes

Posts: 12
Nickname: bloodshot
Registered: May, 2003

Re: We will not ship shit. Posted: Jul 16, 2003 11:24 AM
Reply to this message Reply
I don't see that there is "XP propaganda" in there at all. Okay, so he mentions that XP has helped him follow the principles that he is talking about, which is "We will not ship shit".

Just because he mentions XP doesn't mean you should discount him. Sheesh, that's like dismissing EUP because you haven't "drank the EUP Kool-Aid". We use XP here at work, but not every project uses it.

I think Robert has hit the nail right on the head. FEAR is the biggest obstacle a programmer will face. What SDLC methodology the programmer uses doesn't matter when fear is holding things back.

> I love the sentiment of your post. I don't like the fact
> that you mixed it with XP propaganda which does not sit
> well with people like me that have not drank the XP
> Kool-Aid.
>
> Dejan

Isaac Gouy

Posts: 527
Nickname: igouy
Registered: Jul, 2003

Re: We will not ship shit. Posted: Jul 16, 2003 1:58 PM
Reply to this message Reply
compromise the quality of our work
Hmmm doesn't seem to me that quality is an absolute - we can provide the quality level the client desires.

I will *ship shit*
- whenever it provides value to the client
- openly and with the client's knowledge

Robert C. Martin

Posts: 111
Nickname: unclebob
Registered: Apr, 2003

Re: We will not ship shit. Posted: Jul 16, 2003 4:44 PM
Reply to this message Reply
This is a matter of conscience, not measurement. Each one of us has a build in shit-o-meter.

Isaac Gouy

Posts: 527
Nickname: igouy
Registered: Jul, 2003

Re: We will not ship shit. Posted: Jul 16, 2003 6:19 PM
Reply to this message Reply
Pity the client who desired less than the conscience of the programmer dictated must be done!

Pity the client who desired measurable quality beyond that which satisfied the conscience of the programmer!

Robert C. Martin

Posts: 111
Nickname: unclebob
Registered: Apr, 2003

Re: We will not ship shit. Posted: Jul 17, 2003 8:56 AM
Reply to this message Reply
> Pity the client who desired less than the
> conscience of the programmer dictated must be done!

Would a client truly desire anything other than the programmer's best efforts to satisfy his needs? We aren't talking embellishment or overdesign here. We are talking about the professionalism of creating the software that the customer requires.

> Pity the client who desired measurable quality
> beyond
that which satisfied the conscience of the
> programmer!

Again, it is the client who specifies the need. Professional programmers do their best to meet that need.

Isaac Gouy

Posts: 527
Nickname: igouy
Registered: Jul, 2003

Re: We will not ship shit. Posted: Jul 17, 2003 12:16 PM
Reply to this message Reply
it is the client who specifies the need. Professional programmers do their best to meet that need

That seems stunningly conventional and agreeable ;-)

(Mentioning that the programmers shit-o-meter is subservient to the customers needs would have made the polemic less stirring, although it might have been nice to mention the client somewhere, even just in passing.)

Len Holgate

Posts: 2
Nickname: lenh
Registered: Jul, 2003

Re: We will not ship shit. Posted: Jul 22, 2003 5:43 PM
Reply to this message Reply
> (Mentioning that the programmers shit-o-meter is
> subservient to the customers needs would have made the
> polemic less stirring,

I'm not sure that my shit-o-meter IS subservient to the customer's need.

I'm not going to provide them with quality that they don't wish to pay for, but there's a level below which I don't choose to go and if they want a solution with a quality below that level then chances are I'll walk away.

I don't want to work on shit code and they're not going to force me to, I'd rather work for someone else.

I'm concerned that if I do start to deliver shit quality just because that's what the client wants then I'll unlearn all the stuff I've been working at for the past few years and I wont be able to deliver quality to those that DO want it.

Scott Bogartz

Posts: 1
Nickname: scottb
Registered: Jul, 2003

Re: We will not ship shit. Posted: Jul 23, 2003 12:17 PM
Reply to this message Reply
> Pity the client who desired less than the
> conscience of the programmer dictated must be done!
>
Ahhh quality! The ace up the sleeve of any client/manager trying to rush software to the market. Clients often say that they are willing to accept some sacrifice in quality, until the first bug occurs in production.

When we talk about making trade-offs with quality, we are really talking about scope. We can cut back on the richness of the user interface, or not optimize performance in early releases. These trade-offs effect overall quality of the application, but they do not make the application low quality. However when we skip testing, employ new technology with out understanding it or follow other high risk practices in the name of a quality trade-off we have a recipe for disaster. Most often the client who asks for a quality trade off seeks this kind of approach, while still asking for all of the bells and whistles in the feature list.

Can you name many other true professions where the actual quality of the outcome is considered negotiable. Would an architect/builder honor a client's request to reduce the re-bar and skip the curing time for the concrete in a building in order to deliver the building cheaper and quicker ?

Len Holgate

Posts: 2
Nickname: lenh
Registered: Jul, 2003

Re: We will not ship shit. Posted: Jul 23, 2003 6:46 PM
Reply to this message Reply
> Ahhh quality! The ace up the sleeve of any client/manager
> trying to rush software to the market. Clients often say
> that they are willing to accept some sacrifice in quality,
> until the first bug occurs in production.

I worked for someone recently where schedules were pulled from thin air and the whole team knew we couldnt hit the date from the first day of the project. I asked the guy in charge of the date which he'd prefer to lose if we couldn't hit the date; features or quality. He turned and said that as long as it looked complete he didn't care if it worked or not... The bugs would be dealt with in a later phase but as least we'd hit the date.

Suffice to say I didn't seek to extend my relationship with this particular client and I didnt tell them that I was writing unit tests and that I was ignoring his request to ignore bugs and concentrate on features. We dropped something to QA on the date (it was that kind of project) and kept working on features that we had missed out. We switched to an unofficial incremental delivery plan. The QA testers weren't much good, but as they found missing features we added them and released a new version, often we added them before they found they were missing. I decided that it would be easier to add features to a bug free program than fix bugs in a feature complete program and we did OK. Wont go back to them, didnt feel good about it, but I learnt a few things so it's not all bad.

> Can you name many other true professions where the actual
> quality of the outcome is considered negotiable. Would an
> architect/builder honor a client's request to reduce the
> re-bar and skip the curing time for the concrete in a
> building in order to deliver the building cheaper and
> quicker ?

The quality trade offs in building are generally in the stuff that's not covered by regulations (unless your builders are corrupt). The quality of finishing is generally user definable - but then I guess that doesn't really map well to software; I ask for the painters to do a quick, cheap job and live with the roller marks... I suppose we could treat the finishing as a 'what colour do you want your buttons' thing; though personally I go crazy if my plastering isnt right and the corners aren't square and uprights aren't, etc (but that's because I had a mispent youth as an apprentice builder working for a perfectionist ;) ) I digress, I'll stop. ;)

Kimberley Burchett

Posts: 2
Nickname: kimbly
Registered: Jun, 2003

The Client Knows Not Posted: Jul 28, 2003 6:42 PM
Reply to this message Reply
I'm surprised to see people thinking that quality == robustness, and then being willing to sacrifice "quality" if the client requests it. I'll use an architectural metaphor to explain what I mean:

Suppose an architect is hired to build a building, and the client says to sacrifice quality in order to keep the cost down. This does not mean that the architect can skip all the calculations involved in making sure that the building will actually stand up. All it means is that they should use cheaper materials for the unimportant parts of the building -- the eye candy, if you will.

Perhaps the interior doors are hollow instead of solid wood -- that doesn't mean that the doors don't have to open. Perhaps there's only one electrical outlet per room instead of three -- that doesn't mean that the wiring to that one outlet can be faulty.

Low-quality does not mean broken or dangerous. However it may mean ugly or tedious. So go right ahead and require that the user edit XML by hand instead of having a configuration dialog box. Feel free to leave out the splash screen with the pretty picture. But don't think that the quality of the code itself can be sacrificed without creating an extremely unhappy client, and possibly (justifiably) a lawsuit.

Tim Vernum

Posts: 58
Nickname: tpv
Registered: Dec, 2002

Re: The Client Knows Not Posted: Aug 19, 2003 6:24 AM
Reply to this message Reply
People choose lower quality products all the time in exchange for money in their pocket.

I've lived with a dodgy starter motor on my car for a couple of years. The engine often takes a couple of minutes to turn over, but I don't care. I don't want to spend money on making it work "first-time every-time", as long as it works "within a reasonable period of time".

That's about equivalent to me saying "If you leave the app running for more than 4 hours it will stop responding, but if you kill it off an restart it, then it will be fine for another 4 hours".

Clients have the right to accept that behaviour, or pay for me to fix it.
It is not OK for me to tell them that they have to wait until I've fixed the problem, because "I won't ship shit".

Artima User

Posts: 1
Nickname: thedude
Registered: Nov, 2003

Re: We will not ship shit. (humor) Posted: Nov 18, 2003 12:33 AM
Reply to this message Reply
Will your message reach it's intended audience, however? Here it is translated for morons:

As soffware craffsmen webuh habe rules, duuhhhh, disciplines, duuhhhh, 'n prackices dat webuh foll to help us maitain a high degree of kality 'n professhunalism. Duh, howebeh, dehe are allays trade-offs, duuhhhh, allays considehashuns, duuhhhh, allays possibiltibies. Somebimes webuh abandon a c'plex test case cuz webuh neid to finish the, duh uhh, task, and bisual inspeckshun or manual testigg is sufficient. DOIHH!Somebimes webuh fail to write an acceptass test cuz it's c'plicated, uh uh uh uh, 'n de bang-f'-buck is low. Somebimes webuh don't program in pairs, duuhhhh, cuz -- webuhll -- webuh don't habe a partneh nearby, or webuh're sick of programmigg wid someone else, uh uh uh, or de current task is mechanical. GEE danks.Somebimes webuh keep a module checkid out f' more dan a couble of hours, GEEEHEEHEEE.Somebimes (damnid rarely! Doihh, COOL!) webuh check in code dat fails t' pass all de acceptass tests, duuhhhh, or all de ut tests. Dey're dgust rules, duuhhhh, 'n rules are made t' be broke. Blind folligg rules is a fools ehrand. Gawlly!Webuh habe enough grey matteh to discehn when de rules are helpful 'n when dey are not. Webuh habe de reponsibiltiby t' continuous mehbshur whedeh de rules are helpful, or whedeh dey are not. But den -- dehe's somedigg else. Somedigg dat is cold 'n hard, uh uh uh uh, 'n yet simultaneous hot 'n blazigg. Somedigg, amidst all the, errr, c'promise 'n ambiguity, dat is neideh c'promisid nor ambiguous. Somedigg dat spawns 'n repawns de rules webuh foll, 'n yet challenges dose rules at ebehy turn. De still small boice; de angel's trumpet, uh, de grim detehminashun, de dgoyous declarashun: "I WILL NOT SHIP SHIT." - "I am a professhunal -- a craffsman! Doihh, COOL!" -- "No matteh what pressures are on me." -- "No matteh duh, how I'be had t' bend de rules." -- "No matteh what shortcuts I'be had t' take." -- "No matteh what de gods, duuhhhh, or managehs, duuhhhh, habe done or may do." -- -- "I WILL DO THE BEST WORK I CAN POSSIBLY DO." -- -- "Anydigg short of my best is shit." -- -- "I _ WILL _ NOT _ SHIP _ SHIT." F' me, uh uh uh, at least, uh, dis is what it all comes down to. I find dat de rules of XP help me t' achiebe dis most of the, duh uhh, time -- more of the, duh uhh, time dan any odeh set of rules I habe folled. But rules are rules, duuhhhh, 'n when dey get in the, uh, the way of dis goal, dey get set aside. I do not set de rules aside lite. Indeed, uh uh uh uh, when in dout, I foll dem. When de pressure is on, I foll dem. When the, uhhh, deadline looms, duuhhhh, I foll dem. I try hard not t' let fear dribe me. Fear is de mind killeh. It breeds idiocies like: "Webuh don't habe time t' write tests." "Webuh don't habe time t' program in pairs." "Webuh don't habe time t' integrate continuous." "Webuh don't habe time t' automate our acceptass tests." Dese idiocies are a siren's song. GEE danks.Deir lure is strong. Look in deir direckion 'n De Despair begins. All de rules will fall away. Our core of professhunal pride is the, errr, cure. Dat somedigg dat is bod cold 'n hard, uh uh uh uh, yet hot 'n blazigg. It won't set aside a rule out of fear. It sets aside a rule when *de rule* will cuz you t' ship shit. Go now, uh uh uh uh uh uh, de lesson has ended.

Translation by http://rinkworks.com/dialect/

J. B. Rainsberger

Posts: 12
Nickname: jbrains
Registered: Jan, 2004

XP propaganda? Posted: Jan 6, 2004 5:26 PM
Reply to this message Reply
Distilled, Bob wrote "Following XP's rules is a fallback position I have found effective in avoiding shipping shit."

This is propaganda?

/This/ is propaganda: "XP is the One True Way to avoid shipping shit." It's propaganda, and it's shit.

Flat View: This topic has 19 replies on 2 pages [ 1  2 | » ]
Topic: Is Scala Only for Computer Scientists? Previous Topic   Next Topic Topic: Things to Know About Python Super [1 of 3]


Sponsored Links



Google
  Web Artima.com   

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