Coderific

rss feed

blog - only good programmers don't like coding

posted by witten on February 04, 2007

Jonathan "Wolf" Rentzsch claims the following:

Programmers don't like coding, they like problem solving. If programmers liked to code, we'd all be writing in machine language to this day. You can write that stuff all day and get precious little of the real problem solved.

More at: http://rentzsch.com/notes/programmersDontLikeToCode

I'd like to amend this statement in a very important way: *Good* programmers don't like coding in and of itself; they like problem solving. *Bad* programmers find all sorts of ways to code for the sake of coding, and just use problem solving as a convenient excuse to write voluminous amounts of code.

I once worked with a particular programmer from this last camp. Let's call him Bob. Don't worry, if you're one of my former coworkers, and you're reading this, then it isn't you. Bob liked to write code. He liked to write lots of code. He would invent problems where there weren't any, not because he genuinely liked solving problems, but because he liked to write copious amounts of code. He relished big, sweeping architectural changes, and simply based on the frequency with which he caused them, you'd think that he knew no other way to write software.

Bob would often come up with supposed problems to solve and pose them to his manager in order to justify his little coding expeditions. He'd justify the solution by using some metric that hadn't occurred to anyone but Bob himself up to that point, such as using performance considerations to justify making changes to something where performance wasn't really an issue. Right before Bob's team was about to start on a bout of coding that Bob really didn't feel like participating in, he'd find a way to embark on one of his own solo development efforts of dubious utility.

Sure, Bob solved some problems in the course of his coding for coding's sake, but if he did so it was almost by coincidence. Bob was simply too fascinated with the minutiae of his language of choice, and so as long as he was lost in reams of code he had written containing overly complicated component interactions to sort out, he was happy.

But we're not all like Bob, or at least we strive not to be. There are times when even the best programmer falls into the Bob Trap, coding without keeping the problem being solved in sight. And certainly it is the minority of programmers that are good enough to avoid falling into that trap on a regular basis.

So no, Jonathan, it's not that all programmers like problem solving over coding, it's that only *good* programmers do.

5 comments

Write a comment!
  • Re: only good programmers don't like coding posted by rsc on February 04, 2007 03:36 PM

    This debate is wrongheaded. What both of you are talking about is debugging existing code vs rewriting it, not whether programmers like coding. Supposedly if you "like coding", that means you rewrite everything, and if you don't do that, you "don't like coding".

    To be a really good programmer, I think you have to like coding. You have to like the satisfying click of everything fitting into place in a really elegant piece of code. You also have to know when to debug vs when to rewrite, but that is completely separate from whether you like coding.

    reply | quote

  • Re: only good programmers don't like coding posted by witten on February 04, 2007 03:49 PM

    Perhaps "like coding" is a poor choice of words here. What I'm really getting at is that good programmers like the act of solving a problem, the "everything fitting into place in a really elegant piece of code" that you're talking about, but without getting lost in the details of the solution. You must really strike a fine balance to keep both the solution in mind and a sufficient grasp on the tools you're using to get to that solution, without descending into the Bob Trap of fetishizing your tools. Down that path lies madness, bad code, and not getting very much productive work done.

    reply | quote

  • Re: only good programmers don't like coding posted on February 04, 2007 08:32 PM

    I think what you are hinting at is that good programmers try to solve whatever problem is at hand, in the most efficient way and by writing the least amount of code possible. Not-so-good programmers simply don't know how to do this so they come up with elaborate solutions that require ten times as much code as the easiest solution.

    I just did a code review on a piece of work done by an advertising-bureau-turned-web-company. In one very important piece of their web app, they had used 2000+ lines of code to implement something I could instantly write in 30 lines. There was not a single comment among those 2000+ lines of code and they contained tons of unnecessarily duplicated code. The entire application was riddled with this kind of stuff - simply one of the worst, unmaintainable pieces of code I have seen in years. Probably won't ever work the way it was intended, and the customer will spend a lot of money trying to fix and patch stuff if they don't just throw it all away.

    Incompetent people are just that: incompetent people. Simple as that. It is just easier to get away with incompetence in the software industry than in say other engineering intensive industries, probably because it is still a young industry. A building contractor will not get away with building a skyscraper out of Lego(tm), but in the software industry people do get away with that kind of things. Like building all backend enterprise services in VB6, and then when they run into threading issues/blocking they can always blame a third party; "slow database", "bad hardware", "stupid user" etc and add more hardware to solve what could have been solved much cheaper in code. But that is what you get when you use a MS Access guy as the chief architect, or someone who really only has experience with Lego(tm) to build a skyscraper.

    Another problem are all these fake certifications from large software vendors that don't really mean squat. Recruiters and PHBs in many companies have not yet figured out that the guy selling newspapers down at the street corner can get a 'certification' such as MCSD/MCSE/SCJP in a couple of weeks, but that will not turn him into a good developer. Unfortunately, it will probably land him a job someplace where he can mess up stuff.

    Five years down the road, maybe our certified newspaper guy will learn from his colleagues how to write software if his MCSD/SCJP keeps him employed. And then again, maybe he will never learn since he is really a much better at selling news papers than at problem solving.

    Having a certification doesn't mean that someone is a bad developer, but it should not be misinterpreted as a certification that they have a clue what they are doing.

    reply | quote

  • Re: only good programmers don't like coding posted by witten on February 04, 2007 09:18 PM

    someone wrote:
    I think what you are hinting at is that good programmers try to solve whatever problem is at hand, in the most efficient way and by writing the least amount of code possible. Not-so-good programmers simply don't know how to do this so they come up with elaborate solutions that require ten times as much code as the easiest solution.

    Yes, but furthermore, there are two types of not-so-good programmers who generate more code than they need to. One type is just too incompetent to know how to do otherwise, and ends up with gems like this: http://thedailywtf.com/Articles/Paid_by_the_Line.aspx

    The other type of not-so-good programmer, and the kind I term as "Bob" in this blog entry, knows their language well but simply relishes churning out lines and lines of code, using all the coolest, trickiest language constructs available. This type of programmer has probably been at software development several years longer than the simply incompetent programmer, but for some reason generates nearly as much code churn.

    Incompetent people are just that: incompetent people. Simple as that. It is just easier to get away with incompetence in the software industry than in say other engineering intensive industries, probably because it is still a young industry.

    So what'll it take to get the software industry to the point where incompetence isn't tolerated?

    reply | quote

  • Re: only good programmers don't like coding posted on February 04, 2007 09:45 PM

    witten wrote:
    The other type of not-so-good programmer, and the kind I term as "Bob" in this blog entry, knows their language well but simply relishes churning out lines and lines of code, using all the coolest, trickiest language constructs available. This type of programmer has probably been at software development several years longer than the simply incompetent programmer, but for some reason generates nearly as much code churn.

    Ah, ok. Well, Bob is probably just our incompetent newspaper guy but with many years experience. In other words, incompetent but with enough experience to come up with some kind of solution although not a very straightforward solution.

    Bob is also known as 'Mort' in .net circles.

    So what'll it take to get the software industry to the point where incompetence isn't tolerated?

    Time, time and more time. A 747 is a safer aircraft than a MD80, while MD80 is safer than a DC3, and the DC3 was still a lot safer than earlier aircraft. It takes time, time, some more time, and a few accidents every now and then for a new industry like ours to mature.

    Just like passenger aircraft are not made from balsa wood and paper anymore, skyscrapers not made from bricks and logs, a few years down the line noone will attempt to build the server side components of enterprise systems in VB6.

    reply | quote