Why is it so hard to report a bug?

July 3rd, 2010

Not so long ago I had a misunderstanding with a colleague, who I’ll call Bob. I received a routine request for technical support from Bob, to which I replied immediately with a clear but brief explanation of how to solve the problem. An hour later, I got a slightly testy email from Bob to say that his problem still wasn’t fixed, and it was really holding him up. I double-checked that the proposed solution worked, silently cursed Bob for being too simple to follow my instructions and pinged back an email with a longer and slightly more patronising set of instructions. Two hours later, a furious email from Bob, copied to the CEO. Didn’t I understand how important this issue was? A critical project was in the balance, and I hadn’t fixed his problem.

The punch line? Bob’s email hadn’t been working all morning, and nothing I sent had got through to him. Bob’s emails read to me as if he’d got my instructions and somehow failed to follow them correctly, so it looked to me like he was being inept. From Bob’s point of view, I was giving him stony silence that could only be explained by a lack of motivation.

I’m sure this kind of problem has been plaguing the interactions between technical and non-technical people for as long as there has been technology to bicker over. Users complain about bugs that don’t get fixed, while techies whinge that the users misdescribe their problems, foul things up further with misguided attempts to fix them and then fail to follow instructions when they get them. Why isn’t it going away as people get more tech-savvy?

Behaving correctly when you encounter a fault and reporting it in a productive way is a reasonably subtle task; Simon Tatham’s piece on how to report bugs effectively is a very approachable and effective guide, but it’ll probably only ever be read by the motivated. Even so, you might think that sheer trial and error would teach people that certain ways of reporting a bug get the solution they’re after more quickly than others.

Some people suggest that we techies are lacking in communication skills, and that we need to work harder at making ourselves understood in order to engage with the modern workplace. This isn’t entirely without merit, but I think it’s facile. I’ve been lucky enough to work with some very articulate developers, and none have been immune to this kind of misunderstanding.

I think there’s something deeper going on here, and I think it lies in psychology. The fundamental attribution error is the observed effect that people tend to attribute other people’s behaviour disproportionately to their character, neglecting the possibility of simple situational explanations. For example, I attributed Bob’s inability to solve his problem to his not taking the time to read my instructions properly, or being too poorly-skilled to put them into operation. All the time I was building up in my head a picture of Bob as an incompetent, over-confident bumbling oaf who shouldn’t be trusted to go near a keyboard—and all because his email wasn’t working.

But it goes the other way too. I’ve no doubt Bob had painted a picture to himself of me as an uncommunicative nerd who didn’t appreciate the importance of Bob’s project to the business. Neither of us even considered that there might be an alternative explanation.

The thinking that leads to the fundamental attribution error makes some sense, when you think about it. When you’re dealing with someone on a casual basis you can come to great harm by not making an assessment of their character, and assuming that any flaws you observe are likely to hurt you again in the future is a sound defensive position. This might lead to missed opportunities in casual acquaintances, but that could be a price worth paying.

This thinking is catastrophic, though, when it becomes an entrenched pattern that prevents the very nature of the problem from being properly understood. Blaming developers for being aloof, or users for being incompetent, only reinforces the stereotypes. Working on our communication skills only helps if the thoughts we communicate are based on the right model.

Forwarding events in C#

March 7th, 2010

For a long time I’ve had a problem with events in C#: I want to wrap one class in another, which offers a higher level of abstraction, but this means that all the events have to be copied and lots of boilerplate code has to be written to do the forwarding. The obvious thing to do would be to have an event exposed as a property, which would give clients of the abstract interface read-only access to the event:

public class HigherLevelClass
{
   public event SomeDelegate MyEvent
   {
      get { return impl.MyEvent; }
   };

   private LowerLevelClass impl;

   /* ... */
}

Unfortunately this isn’t valid syntax, and at first glance that seems to be the end of it. However, I discovered today that the designers of C# have actually thought of this, and provided a way round it:

public class HigherLevelClass
{
   public event SomeDelegate MyEvent
   {
      add { impl.MyEvent += value; }
      remove { impl.MyEvent -= value; }
   };
}

Simple, once you know how. But this illustrates an interesting problem with keyword search when applied to programming techniques: I’ve searched for just this information on several occasions, but wasn’t able to find it until I hit on the magic phrase “event forwarding”. In my experience it’s pretty common to know how to describe what you’d like something to do, but not be able to find the same words as the person who knows how to do it.

I’m sure this is far from the only reason, but perhaps it goes some way to explaining why there are eight separate implementations of every single open source library type, each of which is partially complete.

Four things that are going to change whether the publishing industry likes it or not

February 6th, 2010

It was an accident of circumstance that led the music industry to experience a major transformation, from selling objects to selling information, sooner than the book-publishing industry. Simplifying wildly, the fact that headphones are much cheaper to produce than screens is all that has held up the status quo in publishing for so long.

Currently some of the discussion in publishing centers on the fact that music is now sold in $1 downloads rather than $15 albums. But this too is an accident of circumstance. The length of a CD album is not a golden standard of the quantity in which people like to enjoy music, but one person’s personal taste: Sony vice-president Norio Ohga wanted a CD to hold the entire of Beethoven’s 9th symphony, and so for over a decade that is how we purchased our music.

Current commentary sometimes seems to imply that the music industry allowed the business model to be shifted to single-track purchases (to its cost) due to poor negotiation, and that the print industry might avoid making the same mistake. This is a delusion: certain changes in technology simply invalidate the old assumptions.

I expect the Amazon / Macmillan negotiation soap opera will resolve itself before long, but is in danger of drowning out discussion of the lasting shifts that the industry will inevitably go through. Here are a few of my predictions:

More competition with out-of-copyright works

In a physical book shop works that are out of copyright tend to sell for almost as much as recent releases. This is not unreasonable, since they still require editing, desigining and promoting, not to mention the cost of printing the physical book. Shelf space is a major cost in high street book shops, and costs no less when the work is out of copyright.

In a market for electronic books, some of these costs go away. The rest can be defrayed over a much longer period of time, since there is no opportunity cost to keeping books on the shelf. Competition with amateurish free copies will drive down the cost of a professionally-edited version to far below the cost of a new work, while still allowing publishers to turn a profit.

Most authors are not blessed with the wisdom of Marcus Aurelius, the wit of Jerome K. Jerome or the inventiveness of Arthur Conan Doyle (just three authors I’ve enjoyed for free on my Kindle). Of course the modern world has its own share of geniuses, and even those of middle rank can offer great value to readers by writing about the subjects that interest them, but it would be a sad world indeed if people didn’t capitalise on the opportunity to enjoy classic works for peanuts.

More flexibility in length of published works

It used to be that a book had to be of a certain length to be worth publishing. This is going to change, since the fixed costs of printing have gone away. The only question remaining is whether people will consent to pay small amounts for small amounts of content. There is no rational reason why not, but the field of paid content isn’t a shining example of rational consumer behaviour to date.

More competition from the back catalogue

The ‘long tail’ effect, where stock can diversify as shelving cost drops to zero, can flourish in the electronic market as the cost of warehousing drops out of the model. No book need ever again be out of print. This is going to help some authors and hurt others: books that have fallen from prominence aren’t necessarily bad, and if priced keenly they might prove a worthy substitute for recent publications at hardback prices.

More competition from the ‘gift economy’

Once you discard the requirement that books have to be printed on paper to be consumed, the barrier to entry to the market is much lower. Vast amounts of text in blogs, wiki articles and social network postings become readable in exactly the same circumstances as published books.

People who infer that this will drive the price of all textual content down to zero are unjustified in their conclusion and hopefully wrong. A well-researched, professionally-written and carefully-edited document is worth substantially more than an amateurish one, and a rational consumer will be prepared to pay more for it. However, for the portions of our reading time (hopefully not all) that are idle escapism, it may well be that the difference isn’t worth caring about.

Don’t shoot the messenger

I’m not saying the above out of ideology, but because I think the trends are inescapable, in direction if not in extent. More important is what won’t change: people will still exchange money for items that are of value to them. The lesson from the music industry’s experience is that the publishers that embrace the new rules and figure out how to turn them to their advantage will prosper.