Saying "NO"

Saying "NO".

Posted by Uncle Bob on 12/04/2009

I saw this cartoon in a tweet today. It’s the story of how a boss corrupts the work of a professional. It’s a funny cartoon, and a sad story that happens all too often in our profession. But who, exactly, was at fault?...

The difference between a laborer and a professional is that a laborer takes orders from his boss, and a professional provides input to his superiors. Laborers are hired to take direction. Professionals are hired to ensure that the direction chosen makes sense.

Imagine this conversation between a patient and a doctor:

Patient: “My arm hurts.” Doctor: “What would you like me to do about it?” Patient: “Make my arm stop hurting.” Doctor: “Do you want me to cut it off?, I can do that.” Patient: “No, I just want it to stop hurting.” Doctor: “I could cut all the nerves to your arm. That’ll stop it.” Patient: “Isn’t there something less drastic you could do?” Doctor: “Ooops, sorry, time for my break.”

Clearly we don’t expect doctors to behave this way. Even though the patient is the boss, the patient expects the doctor to have the answers and help set the direction.

Here’s another version of the conversation:

Patient: “I want you to cut my arm off.” Doctor: “What’s wrong with your arm?” Patient: “It hurts. I’m tired of it. Just cut it off.” Doctor: “Let me see your arm. Hmmm. Looks like you’ve got a sprain or perhaps a hairline fracture. We should take some X-Rays.” Patient: “No, just cut it off.” Doctor: “Sir, I do not cut off healthy arms.” Patient: “But I’m paying you. You have to do what I say!” Doctor: “No, sir, I don’t. Cutting off your arm would violate my oath.”

Which of these two doctors would you rather be? Now project these two doctors into your own profession, and which would you rather be?

Programmers are professionals. They know more about designing and implementing software systems than their bosses do. Indeed, they are hired for this knowledge and expertise. And they have a solemn duty to prevent their managers from doing things that would be harmful.

All this boils down to one simple thing. Professionals are willing to say “No”. When their managers come to them with direction that makes no sense, a professional programmer will refuse the direction.

Is this risky? Sure. But part of being a professional is the willingness to stand on principle. There are lines that a professional will not cross.

Of course saying “No.” is only one side of the coin. Professionals are also expected to explain their positions, and come up with viable alternatives. Professionals negotiate with their superiors until both parties are satisfied with the chosen direction.

The poor web-designer schmuck in that cartoon was not behaving as a professional. He was behaving as a laborer. The fiasco at the end was his fault. He should have said “No.” and started a negotiation with his customer instead of just doing everything the customer said.

The cartoonist painted the web-designer as a wise but impotent victim, and the boss as the overbearing dufus. The reality is that the web-designer took the role of the victim voluntarily and shirked his responsibility to refuse direction that he considered harmful.

If you are a professional, you never allow yourself to be put in the role of the victim.


Leave a response

  1. Avatar
    Ariejan de Vroom 10 minutes later:

    This almost feels like we programmers need to take an oath of “Do no Harm” as well as doctors.

    Great article!

  2. Avatar
    Mr. Zombie 13 minutes later:

    :P Both funny and sad indeed. I lived through a program’s tentacular growth. Small business, I was the only programmer. Every time I implemented a boss-requested feature, there would be destructive criticism asking me to rebuild it otherwise. The business is now, as far as I can tell, on the verge of death.

  3. Avatar
    Dave A 15 minutes later:

    I agree about the whole being a professional thing, but what about the fact that in the cartoon, the client was happy with the result?

  4. Avatar
    Knut Haugen 21 minutes later:

    @DaveA: If the client wouldn’t listen to reason about the work, the web designer should’ve let someone else do the dirty work and not stoop down to the level that he did. The client would be just as happy but the original designer had acted as a professional and spared himself of a lot of pain. Making the customer happy is only one goal. Delivering quality (in the eyes of the professional) and maintainability is another.

  5. Avatar
    Machiel 35 minutes later:

    If you do say ‘no’ to your boss, make sure you know about all consequences, not just developer consequences.

    I hope we can move past the “I’m not a victim”and “fight the power”. The programmer has a work ethic but so does the boss. You need both to make optimum decisions.

  6. Avatar
    Dagfinn Reiersøl 39 minutes later:

    Yes, but…for someone who’s a programmer and being treated as a laborer rather than a professional (as is the case for many if not most programmers), I would not recommend saying “NO” and getting fired. Better to get another job first, where saying “NO” is not a survival risk.

  7. Avatar
    Michael D. Hall 41 minutes later:

    The only thing the designer didn’t do was to at least advise his client against the dark path they wanted to follow. If he did that, he’d have done his due diligence. I am leaving a company where my decisions were constantly overridden by the “subject matter expert” (his words) and during my tenure I’ve advised, been shot down and subsequently blamed for his decisions. Thus I’m leaving. But while I was being paid, I was responsible for doing what the client was paying me to do. We all can’t justwalk away. :)

  8. Avatar
    da 42 minutes later:

    To be fair, the author in his comments does say things like “After the 13th revision, I fired the client”. That sounds quite a lot like saying “no” to me.

    I’m not sure that the Doctor analogy is appropriate. Doctors have a protected profession, and many clients. If they send away someone who wants their arm chopped off, then there’s still another client in the waiting room.

    If I get told to do something unprofessional I’ll put up a fight, but only to a point. There’s only one person who pays my bills (even if his software company works for many clients) and the best I can do is, over time, demonstrate where they went wrong and I was right. But it’s a really slow process.

    Maybe one day we’ll have a software profession. But not yet. Going back to the doctor analogy, people are much of a muchness. Software might look much the same from the outside, but it would be difficult to set up a business where you’ve a Java job, then a Perl job, then a Ruby, then a… well, you get the idea. Even though being a software developer is much the same from job to job, there’s enough of a barrier-to-entry for each job that means that clients end up sticking with the same developers, and developers end up working on the same products.

    PS here’s a youTube clip along the same lines. Alas, it does contain swear words… (and the sequel:

  9. Avatar
    Michael D. Hall 43 minutes later:

    And when I say “shot down” I mean, “shut down hard”. No debate on the decision.

  10. Avatar
    Roland about 1 hour later:

    Often we professionals belive that we know better than the salesman (managers often are responsible for the money comming into the company).

    Often we know better than the manager. But the manager also know things that we don’t know. Things that actually put money in your pockets.

  11. Avatar
    Nate Klaiber about 1 hour later:

    Excellent points. The biggest problem with that cartoon, which was obviously geared more towards design, is when the client (the owner of the website), takes the design given to him, then bastardizes it after working with the professional. The professional could have said NO until they were blue in the face, but at the end – the client took over the work they paid for and ruined it.

    This is more of the thought process behind it. I know plenty of professional designers, who stood their ground through the entire process, then went back to the site days, weeks, or months later to see the client completely ruining the work they did.

    At this point, what say does the designer have in the process?

    So – I saw it as more of an ‘after-the-fact’ frustration – but I understand it happens both ways (in progress and after the fact).

    You make excellent points – I just wonder if it can all be avoided (Think: clients who want a CMS, get a CMS, don’t know what they are doing, and completely tarnish an otherwise beautiful and well-planned interface)

  12. Avatar
    CharlesG about 1 hour later:

    I disagree with several points. Unlike a Doctor, we are paid to do what the client wants, not what we feel is “best”. As a professional, I always give what is my opinion, in writing, with reasons and backing. I don’t argue, I advise. Calmly. They are paying for my experience, expertise and ability. I give them what they pay for.

    In the end, if they still want some piece of trash I either do it or will have to leave. If I sit in a meeting and tell my boss ‘No, I will not do that because…’, I’d be out the door as would most people. I do say ‘I don’t think that is a good solution because….’.

    The web designer is in the same position. While high principles are great I find it difficult to use this to pay the rent. At some point, somewhere, you find yourself doing quality work that results in an ugly product.

    I do draw the line at any code that will, in any way, cheat, spy, steal from or infect a customer, or reduce system security. I’d rather be fired than be complicit. (I’ve already run into one company that wanted me to fiddle a monetary conversion rate and I point-blank refused on the basis that I will not steal. I almost got fired but I won the day. Barely.)

  13. Avatar
    moron4hire about 1 hour later:

    fundamental flaw in your argument: nobody treats programmers like professional. The only reason they call us “professionals” is so they don’t have to pay us overtime, but really they just want us to be trained lemurs with keyboards.

  14. Avatar
    Dave Nicolette about 2 hours later:

    Great point, Bob. I’m not sure it’s really a question of saying “No” as much as it is of helping the boss arrive at a meaningful “Yes,” as suggested by the doctor/arm analogy.

    For some reason, the post dredged up an ancient memory. Back in the 80s I was supporting a large-scale OLTP app running on CICS. My boss approached on day and said, “I want you to put the entire master file in a Temp Storage queue.”

    In the context of that ancient software, Temp Storage could be used for in-memory storage of small quantities of data, to hand off between CICS tasks. What the boss asked for, literally, would have caused the Temp Storage facility to resort to DASD because of the quantity of data involved. She didn’t know that.

    I asked her, “Do you really want the master file in a Temp Storage queue as such, or are you thinking about minimizing I/O overhead by keeping more data in memory?” She replied, “Yeah, that.”

    We were able to save the arm.

  15. Avatar
    John Ours about 2 hours later:

    The doctor example is a straw man. Here’s why:

    “Programmers are professionals. They know more about designing and implementing software systems than their bosses do. Indeed, they are hired for this knowledge and expertise. And they have a solemn duty to prevent their managers from doing things that would be harmful.”

    Building a bad web site, or a bad software system, is not harmful. Silly maybe. A waste of time probably. But not truly harmful.

    When I was finishing my EE degree we had a lot of classes about professionalism and ethics and such. The topic of disobedience was covered because an engineer acquiescing to a boss who wants to use cheaper, substandard bolts on a bridge could cause people to die. An engineer who bows to pressure to use thinner wires to save money could start a fire. These are objective issues – the effectiveness of a substandard bolt or thinner wire is easily derived and proven.

    Web sites, and marketing in general, are subjective practices. In the cartoon the customer has various motivations for his web site: he wants to sell toast, he wants to present a certain image of his business to his customers, he wants to present a certain image of himself to the public, wants to echo some of his in-store experience, and wants to craft his own unique toast-industry message. The web designer probably holds more expertise than the business owner on the first point (selling things on the web) but the business owner undoubtably has a better perspective on the other considerations.

    It would be a different story if you were asked to do something that would legitimately expose customer’s credit card numbers or personal information. Maybe if you were asked to do something that would affect others on a shared hosting platform or something. But as a professional, once you’ve made reasonable attempts to communicate your opinion and persuade others, your job is to implement it, and to do so without drama.

    Saying “No” at that point is neither prudent nor professional. If you’re really honest with yourself as a designer you’ll find you object to the rejection of your layout and artwork as much as you do to the new concepts. Coming to grips with that is the hardest part of being a professional artist.

  16. Avatar
    Aaron Erickson about 2 hours later:

    Great article.

    This is the reason my biggest advice to programmers, even before reading Clean Code :) – is to get their financial house in order so that they can be in a position to say no and mean it.

    In the longer term though, I agree – we need to work hard to make this a norm among most people. If people could doctor shop like they programmer shop today to tell them what they want to hear, they probably would. We have to make “programmer-shopping” harder.

  17. Avatar
    Douglas Squirrel about 2 hours later:

    Suspect it would have been most useful to agree measurement criteria with client up front. Most likely these will be business-meaningful (client will be too embarrassed to suggest writing “my mum likes it” into a contract – and if they insist, you can walk away easily before wasting any time). Then when client tries to use the mum-metric to introduce kittens, you don’t have to say “no” – just say, “Let’s test kittens against non-kittens to see which does better in converting visitors to customers.”

  18. Avatar
    unclebob about 2 hours later:

    Negotiating is meaningless if you aren’t willing to say “no”.

  19. Avatar
    doktat about 2 hours later:

    Bravo! – keep beating this drum Uncle Bob

  20. Avatar
    Jason Y about 3 hours later:

    Great article, and great discussion!

    The comic is how I feel sometimes. Unfortunately, I stinketh most exceedingly at communicating clearly, politely, and even fairly. Due the angry emotions I sometimes feel toward requirements that I think are bad, I have to take much time to cool off and carefully think through the wording of my response to the requirements.

  21. Avatar
    Paul Brown about 3 hours later:

    There is a huge difference between client and employer. If you’re dealing with a client, you should have something in writing that covers what will be used to evaluate. If it’s your boss, then you simply need to document (emails, whatever). At some point his/her superiors are going to take an interest. You now have what you need to show what has been happening (this is the voice of experience). If the boss is the owner or top of the food chain, time to look for another job. Until then, let them pay you while you’re looking. Standing on principle works as long as both sides are reasonable and it is not used very often.

  22. Avatar
    Rajiv N about 3 hours later:

    Uncle Bob, Your message of being professional is well taken. However, I am not sure if I got the same message as you did from this cartoon. The client seems to be happy- and if he is then I guess…job well done. Now if the client was unhappy – then we can argue the designer should have pre-warned the client that the road he is walking on will lead to disappointment.

    If I ask a painter to paint the walls of my house in shocking pink. Is it really his job to tell me that it looks bad and he won’t do it ? Isn’t it my responsibility to see that? Guaranteed he can warn me that the choice of my carpet conflicts with the wall, but only so much…

    At some point , we ALL need to take ‘some’ responsibility including the client

  23. Avatar
    the cartoon was funny - article kind of ruined itabout 4 hours later:

    There isnt a problem here. Everyone knows you need to negotiate with people to get your “way”, everyone has an opinion, and he who has the gold decides. Its timeless and spreads across all business and all sectors. There is no problem that needs solving.

    Except…that some designers get all hissy fitted and are jealous of their friends who get to work on “cool” projects or are able to have “total artistic freedom”. Designers often have no clue about the business they are designing for because all they care about is their portfolio. Good designers try to understand the business and audience, and are always trying to get “aligned” with the client because the client is the expert at the business.

    The cartoon lets designers wallow in their self pity and is funny. It is not advice on how to actually be a good designer. Its parody to help young, inexperienced designers blow off steam while they reconcile their “vision” with reality (aka “maturing”)

  24. Avatar
    Dan Nisbet about 4 hours later:

    While I do agree with your post, there is a couple clients I have worked with that still provide resistance and stubbornness. I’m happy to say that most people I work with are always willing to hear me out and take direction from me and my knowledge on the subject- but even with any amount of proof, they still insist on doing things ‘their way’.

    That being said, I think more designers need to take care to make sure their clients are a good fit for them; not just the client checking to see if the designer is a good fit for their needs. A relationship works two ways and if only one side is working, the outcome of the project or relationship never turns out as well as either side intends.

  25. Avatar
    Mike Lewis about 4 hours later:

    I decided to “just say no” when I turned down a job for technical and business reasons. On the technical side, the product would have worked well for a few years and then degraded into uselessness. On the business side, the client wanted to sell the product in markets that were already saturated.

    Now if only I could find a way to get karma to pay my bills ;-)

  26. Avatar
    Dagfinn Reiersøl about 4 hours later:

    Doctors also do things that are basically stupid sometimes when patients demand it—like giving antibiotics when it’s not needed. Perhaps less of that now that there’s focus on antibiotic resistance, but 30 years ago, I guess there were lots of doctors who would humor patients on something they considered basically useless but harmless. The degree of harm is crucial.

  27. Avatar
    SoftServe about 5 hours later:

    I advised against multiple decisions when I saw the managers of my company try to make decisions they were unqualified to make. Their goal is to get the product out the door and getting a ROI asap. We can “fix’ these things later.

    Managers who do not know the process of building software will think it is like any other discipline or process. In my experience they think it is like a manufacturing process ‘if you build a box you can rebuild the next box quicker’

    I disagree that saying no as a software programmer can’t hurt. I worked for a company that manufactured medical and military equipment.

    If the embedded software fails in a pace maker….well you get the picture. Or working on software that requires military technology not exposed to foreigners, while they have access to other information in the system.

    Saying no wasn’t just maintenance/quality, but security/health risks as well. There if you say “NO” you got fired (I did) or risk putting it into production and getting fined and jailed or both. And yes it has happened in the past!

    I was let go three months ago…”we decided to go another direction” were the words they told me. I heard through the grapevine that they had over 700 reported bugs in their latest module/system testing. I guess they are fixing them later…

    While I now work in a job looking to improve their software and my stress level is much lower.

  28. Avatar
    ian savage about 5 hours later:

    Good article, Uncle Bob. But as some of these comment imply, collaboration with the client (or boss) to arrive at a mutually acceptable solution seems best. If that proves to be impossible, I’m willing to say No.

    But my willingness to say No is bolstered by a couple things other than professionalism: 1) I’m usually able to demonstrate that true software quality professionals are NOT fungible and 2) my career has benefitted from parting company with some folks. :->

    When we software professionals are willing to walk, we have more power and more self-esteem and we are better contributors/craftspeople.

  29. Avatar
    John Miller about 5 hours later:

    I agree that it’s our duty to say no if a decision is illegal or can cause physical harm. But I disagree with your definition a professional. A professional is someone who educates and explains why a choice may or may not be in the organization\client’s best interest. The client has the choice then to follow our recommendation, or go with another option. If the client decides to go against your persuasion, then fine, that’s their call. And we have a right to turn down a project if we so choose (especially if it could negatively affect our reputation). But it’s a bit unfair to imply that someone is not a professional if they (after explaining the ramifications) ultimately follow through and give the client exactly what they asked for. Saying no to a project on grounds other than legal\ethical reasons is a personal decision, not a requirement to being a professional.

  30. Avatar
    Torbjörn Kalin about 7 hours later:

    @Dave A and Rajiv N: Sure, the customer is happy—for now. But will he be happy in a couple of months when he’s losing sales due to the poor design?

    The professional’s job is not to win a popularity contest but to create maximum value.

  31. Avatar
    Brice Stacey about 12 hours later:

    I agree. Professionals need to say, “No,” but obviously with more tact.

  32. Avatar
    matt cross about 14 hours later:

    I saw this comic today and cracked up!

    However, I completely agree with your POV. That puts a whole different spin on the cartoon for me.

  33. Avatar
    Anderson about 16 hours later:

    Many of these types of problems that designers experience would likely be solved, or at least minimized significantly, if they actually employed some kind of project management framework. Expectations should be set by using some kind of change management process.

    There should be a period of flexibility at first (mockups, proofs, etc.), for scope analysis and stakeholder signatures on the aligned goals of the project, but the project should progressively become more firm. The designer needs to communicate to the client that each change after this point must be evaluated and will affect some combination of time, cost, or quality. And as the article suggests, the professional should be prepared to provide sound feedback on the requested changes in addition to locking down changes to certain areas. Explain why certain requests would not be in the client’s best interest.

    Everyone should learn to say “No” sometimes. It is a great lesson in general.

  34. Avatar
    Dave Nicolette about 23 hours later:

    Anderson appears to suggest a return to the 1970s-1980s style of work in which “contract negotiation” supercedes “customer collaboration.”

    PaulBrown also appears to lean toward formality and written agreements, at least when working with clients as opposed to employers.

    It strikes me that this line of reasoning assumes there is some sort of hard line between the designer and the consumer of the design. While things /can/ be that way, I don’t believe they /must/ be that way.

    IMHO we should be looking for more direct and more effective interaction with customers, whether they are clients or employers. Merely to formalize the differences of opinion in a document doesn’t help us produce a better product or generate greater customer satisfaction.

    Sure, after the fact we can whip out the document and say “See? I /told/ ya so!” but is that really a professional approach?

    IMHO the cartoon shows the designer to have an unprofessional attitude. He made no real effort to help the customer understand the marketing implications of his design ideas (or his dog’s design ideas, or whatever). He just took everything as a challenge to his own opinion.

    Is the lesson of the cartoon that the designer should have said “No!” to the client, or that the designer should have helped the client arrive at a meaningful “Yes!” that would have served the business purpose better?

    I got the impression the designer was a petulant child, and not a professional. He had a client who was enthusiastic and interested in participating in his own project. He didn’t know much about website design, but that’s okay. He was /into/ the project. A client like that is pure gold. Instead of cashing it in, the petulant child flushed it down the toilet. To top it off, he’s proud he did so, and advertised it by drawing a cartoon about it.

    “Yes” is the answer our clients want to hear. Sometimes they need a little help to understand which questions to ask to elicit a meaningful “Yes!” That’s where professionalism comes into play.

  35. Avatar
    John Sonmez 1 day later:

    Wow, I just wrote about almost the same exact thing here:

    I am comparing a ScrumMaster to a personal trainer. You wouldn’t want a personal trainer that just did what you said. As software professionals we should learn “do the right thing.”

    I am constantly amazed by how many programmers are not willing to stand up for doing the right thing. Well put!

  36. Avatar
    Dopey 2 days later:

    I am so sorry, but you are very wrong. In your terms, we programmers are a lot closer to laborers than professionals. We can not say no, we are fired, we have families to feed and house.

  37. Avatar
    Amoor Avakian 3 days later:

    Analogies are imprecise and this article is about visual representation.

    In the same way, try to imagine the conversation with a plastic surgeon and not a general practitioner. All of the sudden it could make a lot of sense.

    How annoying would it be if Marilyn Manson heard “No” when he went to put spikes on his head? If he went to the plastic surgeon that the author suggests he would be rejected because spikes on human skulls are not standard-issue, the surgeon knows best. Furthermore they are not based on approved human UX/UI. The surgeon would however suggest a more Tom Cruise look. There goes Marilyn career, millions of dollars and along with all the love from his fans.

    A good product manager will know how to interpret the business needs and have respect for the recommendations of the team and balance them for the best decision.

    The issue is not developers, designers or anybody on the team saying “No”, it’s collaborating, sharing information and respecting each-other’s strengths.

  38. Avatar
    Charles 3 days later:

    In your next column, will you offer job-search tips to junior and mid-level devs who get fired for uncritically following your advice?

  39. Avatar
    Steve Py 3 days later:

    I’d agree that unless something violates our ethical boundary, simply saying “No” is not professional, it’s the signature of a bigot.

    Part of a professional’s job is to advise. The client has the final say, and a good professional is an effective communicator who is able to truly understand what it is the client is trying to acheive, and express the benefits and drawbacks of ideas at hand in a way the client can understand.

    If you get overruled and in the end the client is still happy, your worry over prinicples was moot. So, it’s not the way you would have done it… So what. If it turned out that the client wasn’t happy then it becomes (in much nicer terms) an “I told you so” situation. People learn through mistakes, clients included. “Because I/we know better” isn’t a constructive attitude. It might work for a crankity old veteran, but for most young-blood developers it is a sign of friction. The nail that stands up either gets hammered or pulled out completely and replaced.

  40. Avatar
    André Faria Gomes 4 days later:

    Great Article. Thanks for point it out. I really see that this happens every day…

  41. Avatar
    Chris Melinn 6 days later:

    @unclebob I mostly agree. However, incredibly smart people often disagree as well. So, as a community, how do we know what lines should never be crossed, and which ones can be sacrificed to accomplish a larger goal?

  42. Avatar
    Mark Rogers 6 days later:

    @unclebob Another interesting post bob, but I don’t think people are always in the economic or hierarchical position to say “no” without suffering a lot of negative consequences. Sometimes companies just want the cash from the client and will play along with whatever a paying customer wants to do.

  43. Avatar
    Kees van Dieren 6 days later:
    This situation is very recognizable. What I use to say is that “if you (the customer) enforce me to create this hacky solution now it’ll save you 5 hours now but cost you 250 hours later.” It just comes to this: