The Ultimate Unit Test Failure

simon kim said

“I can’t understand what this post say.
somebody tell me what is problem about unit test???”

There is no problem with unit tests. Unit tests should never have been mentioned. Jeff is saying (again) that programmers are not very good at user interface design and tend to ignore it, and get on with coding (which they are supposed to be better at, or at least more comfortable with). This is not exactly a surprise :slight_smile:

Like any sort of design, UI/application design is a skill most people are pretty bad at. End users/customers are no better than programmers at this, but at least if they design their UI and hate it they only have themselves to blame :slight_smile:

But however valid this point, it has absolutely nothing to do with unit testing.

Steve Campbell said:

I’d be interested in a poll to see how many developers have actually

  • seen an interaction designer in the wild (do they really exist?)

Yep, seen one (well, a team of them since this was the BBC and they never use one person when a whole team will do). Not sure how qualified any of them where. Judge for yourself:

http://www.bbc.co.uk/iplayer/

  • worked with an interaction designer on a project

The above project, in a remote sort of way. I didn’t work on the UI

  • pooh-pooh-ed an interaction designer’s input

No, just laughed when I saw the pink on black colour scheme.

  • considered the interaction designer their new best friend

No, although they seemed nice enough people

Thanks Jeff

Many commenters are equating interaction design with (user) interface design. Please do read up and see how interaction design is looking at a much larger picture

Puurvert writes:

Wow, that’s one big fat bald guy selling snake oil.

That big fat bald guy happens to be someone who’s forgotten more about interaction design than you’ll ever know…

At first blush, I thought that the comparison of unit testing to the experience of working with an app was misguided. It didn’t seem like the best way to sell the author’s thoughts on the matter.

Reading through all of the comments, however, I see how wrong I was. He understands his readers and the mind of the engineer focused on coding a solution that compiles and passes a unit test.

I am reminded of a recent conversation with one of my colleagues. He had just returned from a round table discussion about the transition to a “Live Web”. Almost immediately, the conversation went into the definition of “live”… 10sec delay, 1 sec, no delay. Everyone was focused on definition and platforms and such. The conversation had to be brought around to the user on the end end of the line. If there’s no user, then who cares.

It is critically important that everyone involved in the creation of a product understand the users’ needs. Interaction designers are often the champions of users and therefore must have deeper penetration into engineering ranks. If you are an engineer, then please take a designer out to lunch and become friends. You will both be better in your individual disciplines for it.

Read up on IxD: http://www.ixda.org/about_interaction.php

I’m reading Cooper’s “About Face” right now. It’s definitely worth a read. The scarey thing about it is that a lot of what he says about the need for interaction design is head-slappingly obvious but I still don’t see much evidence of it around me. Even in the things that I produce!

When users apologise to me that they aren’t very good at using our application I tell them that the fault is entirely ours for making it too complicated for them to use. They rarely disagree with that statement.

I guess the problem might be education in as much as interaction design is regarded as a ‘lesser science’ to the traditional programming courses. Been a while since I was at University though, so perhaps I’m wide of the mark.

Steve Campbell said:

I’d be interested in a poll to see how many developers have actually
seen an interaction designer in the wild (do they really exist)?

No, never seen one. I’ve heard tales, seen plaster casts of footprints, and have occasionally been down wind of a foul odor, but have never sighted one…

Absolutely! A good programmer should not only bend himself on good coding and testing but also consider the benefits you can bring to the users.

Off-topic, with apologies: Mr. Atwood, your posts are always good and thought-provoking, and evidently popular in light of all the comments.

However, I am dismayed by the number of inappropriate comments. Don’t get me wrong–most of them are fine. But those that aren’t are either barely literate, are comment spam (furniture?), or descend into senseless personal attacks (the person who picked on Mr. Cooper’s appearance).

I know it’s a lot of work, but please consider some editorial effort for your blog’s comments. Screen each comment, and don’t post anything that isn’t relevant and doesn’t add something to the discussion. Ban spam and commenters who post personal attacks. Your blog should be an intelligent and civilized place.

Puurvert writes:
Wow, that’s one big fat bald guy selling snake oil.

Mr. Atwood, why do you allow comments that pick on a person’s appearance? How very Junior High. Edit, please, and make this place civil.

Ok, folks, let’s talk about metaphor and hyperbole, shall we?

“Metaphor (n.) - a figure of speech in which a term or phrase is applied to something to which it is not literally applicable in order to suggest a resemblance.”

“Hyperbole (n.) - an extravagant statement or figure of speech not intended to be taken literally, as ‘to wait an eternity.’” (Both definitions are from Dictionary.com.)

Jeff is applying both constructs to this post.

His metaphor is that a user choosing not to use an application is a kind of unit test. If users pass over an application because it’s UI design is terrible, that’s a unit test failure. Essentially, users “unit test,” too, but they do so by not using our applications.

His hyperbole is that this form of unit testing trumps all other forms of unit testing. That is, if we can’t get users to even USE our applications, then all our other unit tests are inconsequential. This is hyperbole because it’s obviously not true. Read through some of Jeff’s other posts you’ll see that he’s a unit testing proponent.

The other point that Jeff makes is that we engineers like to ENGINEER (and by implication we don’t like that mushy UI design stuff) and we’re a controlling lot. If we ARE actually unit testing, we engineers like to make sure that we get good test coverage, that we’ve tested everything the best that we can. However, there’s one unit test we tend not to cover and that’s making sure our UI design makes user WANT to use our apps. Obsessing over unit testing and test coverage when our users won’t use our applications is a waste of time (more hyperbole).

I hope this brings some clarity to the posts about how unit testing and UI design aren’t related. They aren’t, much. But that’s not the point Jeff’s is trying to make. He’s telling us that usability is more important than almost everything else – maybe even unit testing.

Unit testing is no substitute for UAT - but that doesn’t mean one is more important than another. Both are important.

Why am I not surprised that most of the replies so far are knee-jerk reactions explaining how design quality has nothing to do with unit tests and unit tests are super-awesome?

You’re confirming his point, guys. Tons of programmers obsess mindlessly over unit tests as if it actually is (or ever could be) a confirmation of product quality. Oh, sorry, “code quality”.

Do some interaction testing. Watch how users work. Think about how a screen or an application actually needs to be architected, not how you want it to be architected based on the code you’ve already written and/or created tests for. And for god’s sake, throwing it in UAT for users to sign off on is NOT a substitute. UAT is just a stopgap to prevent something from going into production if it’s wrong or not ready; it’s not and never will be a true quality indicator or useful feedback mechanism, and you’re fooling yourselves if you believe otherwise.

I couldn’t agree more. I actually posted something very similar to this the other day: http://www.mcdonaldland.info/2008/02/14/the-quadruple-edged-sword/

Software practices are only one part of a whole that determines the success of a given piece of software.

I can’t understand what this post say.
somebody tell me what is problem about unit test???

To Jim Cooper

Thank you…
I understand meaning of this post with your reply…
i’ve got point of this post…
thank you…

^^!