How to Guarantee That Your Software Will Suck 24

Posted by Uncle Bob Tue, 09 Dec 2008 01:35:17 GMT

This blog is a quick comment about Justin Etheredge’s blog by the same name.

I thought the blog was good. Really. No, I did. It’s a pretty good blog. Honestly.

My problem with is is that it points the finger outwards. It’s as though software developers have no responsibility. The blog seems to suggest that projects fail because managers do dumb-ass things like not buying dual monitors, setting deadlines, and requiring documentation.

Reading a blog like Justin’s may make you feel like high-five-ing and doing a little touch-down jig. OK, fine. And, after all, there’s some truth to what Justin has to say. But there’s another side of the coin too. A pretty big side.

Your software will suck if you write it badly. Yes, you should have good tools. Yes, you should work under realistic schedules. Yes, you should have time for social interaction. But these aren’t the things that make software suck. YOU, make your software suck.

Can you write good software with just one monitor? Of course you can. It might not be ideal, but what is?

Can you write good software if the deadlines are unreasonable? Of course you can! The definition of an unreasonable deadline is a deadline you won’t make, so you might as well make the code as good as it can be in the time you’ve got. If we’ve learned anything in the last 50 years it’s that rushing won’t get you to the deadline faster.

Can you write good software if you also have to write documentation? Can you write good software if your machine isn’t top-of-the-line? Can you write good software while standing on your head under water? (er, well, I’ll give you that might be tough, but for all the others:) Of course you can!

Don’t get me wrong. I think short-shrifting on tools, monitors, and schedules is stupid. I think Justin’s points are all valid. But the burden doesn’t fall solely upon management. We also have to do our jobs well.

Comments

Leave a response

  1. Avatar
    Justin Etheredge 14 minutes later:

    Agreed, I was merely pointing out ways in which management can guarantee that they will have an extremely difficult time retaining talented developers. With so many options available to those of us who truly care about our craft, who would want to work in a place that treats us like second class citizens?

    But I agree with you that my software is not better because I have a large monitor or because I use Resharper, but it is better because I put the time and effort into trying to perfect my craft. If my job is made more difficult because of a sub-par environment, I am willing to be that it would affect the quality of my work.

  2. Avatar
    Kevin Hazzard, C# MVP 38 minutes later:

    Thanks, Bob, for your reply to Justin. I agree that there’s no doubt that the secret ingredient in good software is real talent. And real talent is pretty rare, I believe. Real talent plus passion is rarer still. I got a lot out of Justin’s post because it’s sometimes useful to express what works in terms of what won’t. If you make a great big pot of chili and put bad ingredients in, it will most likely be unpleasant. And, as you point out, failing to put the right ingredients in is also a bad choice.

    The analogy kind of breaks down here, though, because, unlike chili, bad developers can become good. And that’s what’s at the heart of Justin’s post for me. I have rescued a few shops from disaster by converting their developers to goodness using some of the tools that Justin mentioned: respecting planning, buying better hardware and software, learning to buy instead of build when it makes sense, teaching them how to focus and use good design principles.

    I certainly appreciate your culling out the truth that developers are the secret ingredient. But Justin’s message is one of hope, even if it’s expressed in the negative. I liked it, too. :)

  3. Avatar
    David Simar about 1 hour later:

    IMHO all these little things hurts the developers ego. Basically the developer reasoning is: if the company doesn’t want to invest in helping me, why would I bother doing a good job for them? This is basic psychology, if you don’t show interest in people why would they in return show interest for you.

    The manager is here to make sure that all the employees he’s responsible for can do their job in optimal conditions. Common, let’s get back to real-world, this is just asking a few hundreds bucks to invest in tools and hardware. Developer are not asking for the last BMW or 100K$ bonus to do good job.

    I have been in the past in bad managerial hands and I would say that 30% of the time of the team went in moaning about the stupidity of the manager!

  4. Avatar
    Guy Kolbis about 1 hour later:

    Hi Bob, my opinion is that “software may suck” when the combination of both occure. On one hand, it is about my capabilities as a developer and on the other hand it is about the conditions my manager gives me. Surely, the manager can help me be more productive…but the quality of the software depends on my skills.

  5. Avatar
    Daren about 2 hours later:

    Your both right. What makes good software is good people, both in development and management. If either is not up to par, the whole will suffer.

    I think the following blog summarizes it well: http://ansanelli.com/blog/?p=44

    “Would you rather have a great team with the wrong strategy, or the wrong team with a great strategy?”

  6. Avatar
    Mark Nijhof about 5 hours later:

    Hi Bob,

    I like you down to earth posts a lot and have to say I agree with them fully. As a developer we also have the responsibility to make management understand what the implications of their decisions are going to be. So when you want a license for tool XYZ you should be able to show your manager that it either makes you work faster, more efficient or just makes you happy. Same goes for all the other things that cost money, show them the benefit, make it a well defined business decision.

    Same goes for unreasonable deadlines make it a clear business decision and make it a bad decision to write bad code. Al do I have to say your idea is much better, because there is still the possibility that your manager will tell you to write bad code, it would be very nice to be able to say. “You hired me because you want quality work done, and that means that I cannot meet your deadlines”, have to try that next time. (no sarcasm intended).

    -Mark

  7. Avatar
    Curtis Cooley about 5 hours later:

    The responsibility lies with the developer. I’ve worked in ‘fun’ shops and seen software suck. I’ve worked in ‘bad’ shops and seen software suck.

    The bottom line is when I sit down to write code today, am I going to be professional or not. If I choose to be professional, I write the best code I can given the tools I have. Do I want better tools? Damn straight, but that doesn’t imply any kind of responsibility for the quality of my code to management.

  8. Avatar
    Markus Gärtner about 12 hours later:

    There is one lack I sense in your blog, but in the last paragraph I see it nearly addressed: The people behind software. What we never should forget is the context. There might be one person, who does a great job if he gets the support from management for new computer hardware. He most likely works energized and does the job well, when showing her to be relevant by providing him the hardware she would like to have. On the other hand there is the stabilizing guy, who is seeking a proper plan with achieveable targets. This person will most probably won’t be able to do a good job, if put under stress through a impossible mission. Leadership know-how is a topic that should not be forgotten under these circumstances as well.

    In general I fully agree to your concerns, but I would like to add this note to the human factors as well.

  9. Avatar
    Justin Pavatte about 19 hours later:

    I totally agree with both of the posts. I like how Uncle Bob reminds developers to take responsibility for their code and not pass the buck. By the way, I am currently reading your Clean Code book! Also, I enjoyed Justin’s post which is I see as a message to management rather than developers.

  10. Avatar
    Lee Brandt about 20 hours later:

    Perhaps Justin’s post should be called “Guaranteed Ways to Drive Good Programmers Away” ?

    Just a thought.

    Great posts.. both of you.

  11. Avatar
    Andy Brandt 2 days later:

    Great post.

    I see developers as artists. They should care about their code no matter what and try to make it as good as possible always. As I sometimes say “the art must not suffer”. Not always 100% possible, but this is the ideal to strive for.

    One other related thought: Agile is an approach that embraces much of what Justin was writing about (except maybe huge LCD screens). However to work right agile requires much more discipline on the part of team members. Plus they must take ownership of the code they do in the sense that they should do all to be proud of what they did.

  12. Avatar
    arts degrees 6 months later:

    I enjoyed Justin’s post which is I see as a message to management rather than developers.

  13. Avatar
    gps nextar 6 months later:

    An avarage developer loves his work but do not know where to put his efforts and he has very short attention span. I worked with some of them and they were helpless in strategic planning (however, I have a friend developer who runs a succesful IT business, as well, but that’s an exception, IMHO).

  14. Avatar
    Online Certificate Programs 8 months later:

    Some people write so-called “spaghetti code” and that will definitely make sure software unworkable.

  15. Avatar
    Designer wedding outfit 11 months later:

    Good developers also ignore many problems and this result in a waste program.

  16. Avatar
    expert witness 12 months later:

    I also have fibromyalgia and I want to know your take on its relation to auto immune conditions. I know it has officially been removed from the list of auto immune diseases (that’s what some say), but I know it is definitely related. I found it interesting that you didn’t include it in this blog. expert witness

  17. Avatar
    Beauty Solutions 12 months later:

    If you’re listed in the directory, you see your OpenID address along with a link at the bottom to login. Click “login” & OpenID-LDAP uses mod_rewrite to redirect your request back to the index page.. Beauty Solutions

  18. Avatar
    tutoring resume about 1 year later:

    I agree, we must give freedom to glow and make them happy so – what they like, if it is not

    spoiled tutoring resume

  19. Avatar
    CFNM about 1 year later:
  20. Avatar
    Kooba Handbags about 1 year later:

    Living without an aim is like sailing without a compass. with a new http://www.handbags4buy.com/ idea is a crank until the idea succeeds.

  21. Avatar
    moncler clearance about 1 year later:

    Very quietly I take my leave.To seek a dream in http://www.edhardy-buy.com/ starlight.

  22. Avatar
    jams about 1 year later:

    Awesome! Some really helpful information in there. Bookmarked. Excellent source. http://bemyvalentinesforever.blogspot.com/ http://yourlovemeter.blogspot.com/

  23. Avatar
    ipad video converter about 1 year later:

    it is .. ah ha so what?

  24. Avatar
    jewellery about 1 year later:

    ou can have a ttr

Comments