Stephen Freeman Rotating Header Image

We're not craftspeople yet.

Software Craftsmanship 2009

In the run up to Software Craftsmanship 2009 it’s worth reminding ourselves how far we have to go. Recently the (London) Times put the dire state of UK government IT projects on its front page.

One bright correspondent suggested:

Why not use university computer science departments for large public sector IT projects? They could form part of the course work and would be far cheaper as there would be no culture of profit to worry about.

I can just hear the other disciplines jumping on this bandwagon: “it was costing too much to do the stress calculations for our nuclear power station, so we assigned them as coursework”, “we can’t afford these QC’s, so we got some students to handle the negligence case”, and “accountants are expensive so we had some students work out the portfolio risk” (no, wait, that last one might make sense).

Anyway, as long as anyone is not too embarrassed to put this sort of nonsense in print, we don’t have a profession.


  1. Simon Kirk says:

    Ah, but will we EVER be craftspeople in the eye of those who write such tripe as you quoted?

    I see the problem as the same age-old one: Apart from the bottom line (and arguably it’s hard to tell whether the bottom line is indicative of craftsmanship or not in the short term – aka the crap may break later than the attention span of the those who matter), nobody “not in the know” can appreciate the craftsmanship of code.

    Code remains a hidden art form. Anybody can have an opinion on a painting, or a well-designed car, as they are physically accessible.

    I still struggle to think of an equivalent profession. As ever I remain optimistic in the face of experience though.

  2. The odd thing is that if you read the rest of the letter it looks like the author claims some experience of developers.

    I think there are plenty of disciplines where the content is not easily accessible–anything mathematical for a start, and how many patients really know what happens in an operating theatre? Unless they got the wrong leg, it’s hard for us to know whether the doctors did as good a job as was possible.

    In the end, the only that really makes a difference is closed entry to the profession and, with the current state of the art, that cure might hurt more than the disease.

  3. Isn’t it worse than the content of the material being inaccessible to our customers? Doesn’t the fear of a closed profession (which I also feel) point to the sad reality that a lot of it is inaccessible to a lot of us? Or, rather, that each of our little tribes is convinced that it’s inaccessible to all the other little tribes?

    We have a lot of growing up to do before anyone is going to take us seriously.

  4. The other part of a closed profession is liability. If a profession is closed, then weak performers can, in theory, be thrown out of it–although the reality isn’t as effective as we might like.

    And I’m not sure that doctoring was much more advanced than software is now when it became a licensed occupation.

  5. denny says:

    Why does it make sense for, say, most health care craftspeople, teachers, and pilots to get “real world” experience as part of their course-work, but not software craftspeoples?

    I don’t think this is an either-or situation, I guess. Putting students to work (actual, productive work, with actual results, usable on resumes and whatnot) seems like a good way to both garner experienced developers, and reap rewards from an otherwise inefficient, cyclical system.

    But I might be off my rocker, so take it with a grain of salt.

  6. I submit to you that as long as we have bright young people like Sean Fanning or Linus Torvalds that are able to build amazing software with little or no formal education (and no guild status), we won’t get to the vision of craft you espouse above. The only way to get those people to stop writing code is to, say, make writing commercial something like law or medicine and require a ‘bar exam’ and advanced degree.

    In my mind, that would be a tradegy. So I’m for a middle ground – we all the non-craftsmen to ply the trade, and every now and again they hit one out of the park. For al the rest, the employers that wanted to scrimp on cost, for the most point, deserve what they get – and the true craftspeople enjoy reputation benefits that lead to employment.

    I’m not completely happy with that, but I like it more than licensure. I’m open to other options.


  7. It often disturbs me how often the general public and decision makers do not understand that a mediocre software developer can deliver *working* software; but what is the real definition of working software? A software craftsman delivers solutions which, among other things:

    – Will scale for its intended audience
    – Can be changed relatively easily to add features
    – Run in a new environment without code changes.
    – Is fault tolerent and reports detailed useful information about errors when they occur.
    – Is self documenting, with detailed comments only where necessary and aptly named methods and classes throughout.
    – Has a high level of unit test coverage
    – Can be maintained by a more junior programmer
    – Is optimized as much as necessary, no more.
    – Uses appropriate technologies and tools for the job.

  8. @Matthew. There’s a huge difference between occasional bright sparks and stuff that people’s lives (or livelihood) depends on. As an industry generally we have a patchy record which, in some cases, involves destroying companies that attempt to automate their business (although perhaps it’s the salesmen who should be certified).

    I’m not sure I’m ready for licensing since I’m not sure we have enough consensus yet, but what I /do/ think is worth considering is the issue of professional responsibility for going along with some of the awful decisions we see.

  9. @denny I think work placement is a great idea, but it’s not what the correspondent was talking about. He was suggesting that students (who are mainly concerned with their grades) should write safety-critical systems as course-work. Frankly, I suspect quite a lot of the faculty can’t write production systems either, that’s not what they’re supposed to do.

  10. Steve – point taken. I believe we are in agreement.


Leave a Reply

Your email address will not be published. Required fields are marked *