Let me put forth an axiom: software development is hard. It's not just the coding bits that are hard -- they are, don't get me wrong, it's just that coding isn't the only thing that's hard about software development. There's more to software development than the coding, which is why software development has a bevy of non-coders working on the software.
One of the things that's surprisingly difficult about software development is crafting the error messages. (A second axiom, since I'm feeling axiomatic today: Software has bugs and unexpected problems that it can't handle on its own.) Error messages are so notiously bad that we make jokes about them, write error messages in haiku, and allow you to generate your own.
I've been reminded of how difficult it is to write good error messages a couple of times last week. I reviewed the error messages for RDC v2, which has its own challenges inherent in writing its error messages. Just think of all of the reasons that you might not be able to connect from your Mac to a Windows box, and figure out how to document them in a way such that the user can do something about it (if, in fact, there is something that the user can do). I really don't envy our user assistance team.
In the middle of that review, I've been using Pandora lately. I haven't been keeping music or podcasts on my work laptop (that's all been moved over to my Mac Mini in my office, since people seem to like my shared iTunes library), but I need something to listen to when I'm on the road. Pandora to the rescue. The problem with Pandora is that it requires a solid Internet connection, and my last hotel gave me anything but a stable Internet link. So when it ran into problems when I asked it to add another artist to my newest Pandora station, it gave me the following error message:
I'm sorry, I had a small problem while looking for that music. It's my fault.[try again]
I actually exclaimed, 'oooh!' out loud. I felt bad for the app, felt guilty for making it think that it was the app's fault. What a great error message! I didn't get upset or frustrated. For an app like this, the tone is just right. They don't need formal-sounding error messages, it's a nice little casual app, and friendliness is important for it.
So what's important in writing error messages? Don't tell the user that error 448115490235 just happened or that some generic system error happened, tell them the actual problem. Even better, tell them what they can do to try to fix it or at least troubleshoot the problem. Use the right words and a tone that's appropriate for your audience.
This all sounds easy enough, but it turns out it's not. Software engineers are notoriously bad at this kind of thing (nothing against you code monkeys out there!), which is why there's so many really bad error messages out there. Kudos to the Pandora folks for doing a pretty good job of it.
Hello! [url=http://www.welnet4u.de/wf/chpok/index.php]adderall[/url]
[url=http://www.welnet4u.de/wf/frei7/index.php]winstrol[/url]
[url=http://www.welnet4u.de/wf/ulrich3/index.php]ritalin[/url]
[url=http://www.welnet4u.de/wf/deca/index.php]clomid[/url
[url=http://www.welnet4u.de/wf/xander3/index.php]acyclovir[/url]
[url=http://www.welnet4u.de/wf/mad3/index.php]meridia[/url]
[url=http://www.welnet4u.de/wf/angel3/index.php]lexapro[/url]
[url=http://www.welnet4u.de/wf/matei/index.php]horse racing[/url]
[url=http://www.welnet4u.de/wf/murk/index.php]replica watch[/url]
[url=http://www.welnet4u.de/wf/laka/index.php]ephedrine[/url]
[url=http://www.welnet4u.de/wf/piska/index.php]ultracet[/url]
[url=http://www.welnet4u.de/wf/bong/index.php]plastic bag[/url]
[url=http://www.welnet4u.de/wf/lucky7/index.php]roulette online[/url]
[url=http://www.welnet4u.de/wf/zora3/index.php]weight loss plan[/url]
<i>I reviewed the error messages for RDC v2</i>
YAAAAY
Tease.
Here, in honor of 1-30-07 (NEVER FORGET!): http://www.dyewell.com/saveboston/
HelloA Group is a multienterprise firm that draws its capital from sources extending beyond a single nuclear family: e.g., from people linked by communal, tribal, ethic or personal relations of trust and mutual confidence. In addition somewhat like the zaibatsu in pre-World War II Japan, the Groups invest and produce in several product markets rather than in a single product line. For example, a Group's single decision-making center may encompass activities ranging as widely as textiles, cement, fabricated steel, zinc mining, and cattle ranching. The largest Groups also possess their own banks…and perform the principal functions of a capital market…
[url=http://trade.shwab.info/index.html]index.html[/url]
[url=http://trade.shwab.info/index1.html]index1.html[/url]
[url=http://trade.shwab.info/trade-show-1.html]trade show[/url]
[url=http://trade.shwab.info/mlb-trade-rumor-2.html]mlb trade rumor[/url]
[url=http://trade.shwab.info/trade-stock-3.html]trade stock[/url]
[url=http://trade.shwab.info/special-trade-contractor-4.html]special trade contractor[/url]
[url=http://trade.shwab.info/trade-organization-5.html]trade organization[/url]
[url=http://trade.shwab.info/trade-schools-6.html]trade schools[/url]
[url=http://trade.shwab.info/trade-show-display-7.html]trade show display[/url]
[url=http://trade.shwab.info/allen-iverson-trade-8.html]allen iverson trade[/url]
[url=http://trade.shwab.info/federal-trade-commission-9.html]federal trade commission[/url]
[url=http://trade.shwab.info/trade-secret-10.html]trade secret[/url]
[url=http://trade.shwab.info/edge-hill-mastering-mcgraw-trade-trader-11.html]edge hill mastering mcgraw trade trader[/url]
[url=http://trade.shwab.info/trade-your-way-to-financial-freedom-12.html]trade your way to financial freedom[/url]
[url=http://trade.shwab.info/international-trade-13.html]international trade[/url]
[url=http://trade.shwab.info/forex-trade-14.html]forex trade[/url]
[url=http://trade.shwab.info/trade-show-booth-15.html]trade show booth[/url]
[url=http://trade.shwab.info/iverson-trade-16.html]iverson trade[/url]
[url=http://trade.shwab.info/fair-trade-17.html]fair trade[/url]
[url=http://trade.shwab.info/nba-trade-rumor-18.html]nba trade rumor[/url]
[url=http://trade.shwab.info/auto-trade-19.html]auto trade[/url]
[url=http://trade.shwab.info/world-trade-center-movie-20.html]world trade center movie[/url]
[url=http://trade.shwab.info/trade-show-exhibit-21.html]trade show exhibit[/url]
[url=http://trade.shwab.info/trade-a-plane-22.html]trade a plane[/url]
Thanks for your attantion.
[url=http://tramadol-hgf65.blogspot.com/]tramadol[/url] http://tramadol-hgf65.blogspot.com/
Ciao!
Good old RDC. I hope that the next version doesn't have one of the wonderful bugs the current one does: fail to connect once, (i.e. because something isn't ready, you entered the wrong server, you forgot to sacrifice a goat, whatever) and no further connections will work until you quit it and start it again. Joy!
Error messages are hard. Not least of all if you don't actually know what caused it. "Well yes, the we failed to get that... but is it because it doesn't exist? Or did something else happen? Maybe you forgot to sacrifice a goat..."
John - It's not teasing when you already know that it's coming. If I were going to tease you, ... Heh. No, I'll stop right there. :)
Patrick - It's generally a bad idea to refer to ritual sacrifices in your error messages. But thanks for providing a great example of why software engineers shouldn't write error messages. ;)
It occurs to me that I know several of your VUW friends, so the references to ritual sacrifices shouldn't surprise me at all. You've turned out immensely normal, at least comparitively speaking. At least the worst offender is currently in the UK, and thus not able to cause as much damage to poor defenceless students.
Just in case you thought those arcane error messages (e.g., error 448115490235) are bad, at least they generally convey some information. Even if the significantly-above-average informed customer won't know what it is, theoretically a support person might and would be able to help them out. (And when I mention a support person, I don't generally think of PSS, but rather the developer on the product, since PSS doesn't know these numbers either, except by frequency of hearing from customers that they hit error #448115490235, and then they plead with the development team to fix the problem or help them find a workaround to write in a KB article.) My favorite errors are the ones when a whole class of error conditions is arbitrarily summarized. e.g., One part of the system returns error codes in number format (which may even have a direct translation to error messages _provided to you by the system_), but since the code that uses that system returns a different set of error codes to its clients, all errors from that system get one error code. All of a sudden, you go from a wealth of information that might help a developer, or even the user(!) to solve the problem, down to an inconvenient error message (e.g., error 1) that refers to so many possible problems that no simple text could direct the user how to fix it, and that no support person, all the way back to the developer, can figure out what happened on the user's machine.
While I agree that these numeric error codes need to be translated into (1) informative error messages, (2) directions on what action to take to solve the problem, and maybe even (3) feedback to Microsoft as to how to better address one or more aspects of a particular problem, what I don't agree with is the tendency to UA folks to say something along the lines of, "If you can only have an error number, better not to show anything, as it will confuse the user." On the contrary, it might be the only thing that will help them get any help, even if it does mean it might take customer service interaction and a software revision to get it to them.
-nh
"John - It's not teasing when you already know that it's coming. If I were going to tease you, ... Heh. No, I'll stop right there. :)"
Bad Nadyne! Wicked Nadyne! Wicked Evil Nadyne!
Next you'll be hanging up the Grail-Shaped lantern!
[deleted Asam's latest trolling]
Hello!<a href="http://blognow.com.au/loh/ ">insurance carrier broker agent</a> <a href="http://blognow.com.au/pok/ ">low cost health insurance</a> <a href="http://blognow.com.au/den7/ ">dental insurance</a> <a href="http://blognow.com.au/mirk/ ">online car insurance</a> <a href="http://blognow.com.au/horn/ ">travel medical insurance</a> <a href="http://blognow.com.au/dor/ ">travel health insurance</a> <a href="http://blognow.com.au/mydor/ ">international travel health insurance</a> <a href="http://blognow.com.au/mops/ ">farmer insurance</a> <a href="http://blognow.com.au/miks/ ">disability insurance</a> <a href="http://blognow.com.au/holk/ ">progressive insurance</a> <a href="http://blognow.com.au/ruen/ ">pet insurance</a> <a href="http://blognow.com.au/rent/ ">renters insurance</a>
[url=http://blognow.com.au/loh/]insurance carrier broker agent[/url] [url=http://blognow.com.au/pok/]low cost health insurance[/url]
[url=http://blognow.com.au/den7/]dental insurance[/url] [url=http://blognow.com.au/mirk/]online car insurance[/url]
[url=http://blognow.com.au/horn/]travel medical insurance[/url] [url=http://blognow.com.au/dor/]travel health insurance[/url]
[url=http://blognow.com.au/mydor/]international travel health insurance[/url] [url=http://blognow.com.au/mops/]farmer insurance[/url]
[url=http://blognow.com.au/miks/]disability insurance[/url] [url=http://blognow.com.au/holk/]progressive insurance[/url]
[url=http://blognow.com.au/ruen/]pet insurance[/url] [url=http://blognow.com.au/rent/]renters insurance[/url]