Developing Windows Error Messages: Error Messages that Communicate
Ben Ezzell | 1998-04-01 00:00:00 | O'Reilly Media | 254 | Software Engineering
Although the computer industry has made enormous advances in the last 25 years, the development of error messages has somehow been left behind. Error messages have only progressed from reporting errors as numerical codes to popping up rather simple text messages. Developing Windows Error Messages focuses on the three important elements of an effective error message: notification, explanation, and solution. This book teaches C, C++, and Visual Basic programmers how to write effective error messages that notify the user of an error, clearly explain the error, and most important, offer a solution. Throughout the book the author uses examples that illustrate incomplete error messages and then describes how to make them more effective. The book also discusses methods for preventing and trapping errors before they occur and tells how to create flexible input and response routines to keep unnecessary errors from happening. The accompanying CD-ROM contains a dynamic link library, ErrorMessage.DLL, that is accessible by VB, C, C++, and MFC programs. This DLL contains routines that, when called by the programmer, will present all error messages in a standard format and provide responses for different levels of errors.
Reviews
I would agree with other comments that this book is more philosophical than technical, but I think that is a good thing. When planning a program the error handling side should be more thoroughly planned, and this book helps with just that. I found much of the book obvious, and could flip through 5 or so pages at a time, but the bits that are not so obvious are worth searching for.
If programs are written using the style of error messages and/or the error message handling process suggested within this book I feel that the user term "User Friendly" (at least in relation to errors) would actually be deserved. For instance, how many times have you come across an error that only has one action that you can take "OK"? Is it okay that the error happened? Is it okay that you can't do what you were trying to do?
Therefore I would say that this book holds much more value to the project manager/project leader/planners than programmers.
Much of what is spoken about is not OS specific (besides a bit of code). It seems that it is directly aimed at Windows 95, which is why there is no talk of NT error logs.
I found the supplied code (2 DLLs) to be a bit old but it was a simple enough to use it as a template and build on them. The dialogs within the sample code are quite user and programmer friendly and did not need altering. Using code I already had, I added database error lookup/logging, screen and system capturing, NT Event Logging, email support and COM Interface within a day. HOWEVER I feel that the supplied code is of little value to any programmer who is not planning on altering the code in some way, so it may not be much use if you don't know C++.
Reviews
Ben's book is well-written and well-edited and provides a number of useful ideas on how to write effective error handlers and error messages in the Windows environment. It's focus may seem strange to nonprogrammers, but programmers appreciate this sort of guidance on details.
However, Ben does repeat some saws or maxims which need to be deconstructed.
One is that at one time, error messages were overly terse because "there was not enough storage" to make them useful.
I find this disingenuous, because the dreamtime to which Ben is referring to is probably the early 1980s. In the early 1980s, I was as a former IBM 1401 programmer (whose first machine ten years prior had 8000 characters of storage) in awe of the possibilities of the primitive disk and tape systems then available.
On the 1401 I had developed a system which used an "overlay" and a supplemental manual procedure to provide a user with fully expounded error messages in English, and by the early 1980s, providing my users with English error messages was not a problem.
The idea that at any time "we are limited by the gear available" is to me a confession that a certain need is not important enough to warrant our time. Basically, the need of users for error messages has always been triaged and continues to be triaged in an unconscious binary opposition between the "serious" and MALE tasks of programming, and the "not serious" FEMALE task of communication. To me the first mistake was to divide these tasks.
Another old saw Ben repeats is that "programmers", in inverse proportion to their skill level or interest in being "programmers" do not like to write, or cannot write.
This saw exists in a logical dependence on an idea from outside programming which is that there is such a thing as a content-free "skill in communication". Although a convenient corporate reification, useful for example in getting rid of racial minorities, women, and older employees on the basis that they are mistreated because of a generalized lack of "communications skills", the very idea that we can speak of communication without discussing content, or for that matter simple morality, is nonsense.
"Poor communicator" may be a true generalization as applied to the actual population of programmers in the United States. However, it is belied by a maxim of hero computer scientist Edsger Dijsktra, which is that programming ability is indicated by command of the language.
To the extent that programmers write overly terse error messages they may actually be, while statistically representative of American programmers considered highly qualified, less well-qualified than they could be.
This is because the only evidence we have that the programmer understands his system is something outside code.
Ben Ezzell himself shows he's qualified by not only writing good examples of error messages but also by being aware of what the user probably needs. He does so as a programmer who can code, and it is a false humility of his to say that programming skill has nothing to do with communications skill.
Managers love to give programmers books such as Who Moved my Cheese? and The Elements of Style, probably because these books rigorously exclude the content of the programmer's work from consideration. This may be useful in some cases but basically it is an attempt to deprofessionalize, for it denies that the programmer has learned anything worthwhile.
The managerial saw is that by definition "mere programmers" do not know enough to communicate with users and require by definition an interface consisting of people who do things like review, or actually compose, error messages. But inside the corporation, resources are allocated by non-market means despite the commitment to the free market, and the practical result is that most corporate employees seek first to avoid blame and are therefore not likely to compose forceful and hard-hitting error messages because in the corporation, the messenger is killed for bad news.
I am not dismissing the need for people to perhaps specialise in technical writing or even the composition of error messages...especially for international systems. It would almost be too much to expect programmers to know multiple human languages. What I don't like is the ideology implicit in saying that we must cultivate a content free communications style. I like Ben's book because it is ABOUT both programming and communicating.
The genuine quality of this book, together with its genuine aporias, indicates a need for a definition, outside corporate hegemony, of programming. This definition is needed because if programming is implicitly defined ONLY as MIS programming, it becomes impossible to develop effective systems for the public good...as evidenced by the real problems government and not for profits have in implementing systems; because of omnipresent cost considerations, many such organizations are forced to use off-the-shelf packages which encapsulate (at a deep level) assumptions valid only for private, for profit businesses in what are called "business rules."
A critical theory would define programming, not just writing error messages or documentation, as writing and not mathematical, while at the same time realizing that many practitioners seriously underestimate the applied mathematics of programming. In the present arrangements in the US, programming is considered mathematical and numerical in some sense, thereby excluding many people who could make a contribution, while in another sense, any form of real mathematics and real logic is excluded at the critical point in the development of many systems, usually when cost constraints can be used to justify hand-waving.
If I understood what Claude Levi-Strauss was talking about in expounding a way to read a myth against its own grain rather than literally, I would be able to conclude that American programming praxis is a form of systematically misreading an Enlightenment myth. This would help me to understand why such genuine talent and ability such as Ben's is on display in books from publishers like O'Reilly whereas in practice error messages STILL confuse genuine end users.
Reviews
The book provides some clues on how errors should be considered. It spends a lot of time describing the current situation in a very verbose style. OK that's fun but not very instructive (I mean, we all know half the messages are stupid, unfounded, incomprehensible, etc.). This beeing said I would recommend the book for the same reason....
Reviews
This book contains very little meat for my taste. I can't believe that, as a book devoted to Windows error messages, it does not even mention the Windows NT Event Log anywhere! I'm returning the book since I can't find much in the book that adds to my experience.
Perhaps new programmers can learn a thing or two from this book such as the three elements of good error messages. But as an experienced developer, I'm totally disappointed with this book and would not recommend it to any of my peers.
Reviews
Great book, it read like a satire. This is the first book I have read dedicated to how to write error messages for a particular OS. I guess when your OS is full of cryptic hogwash, investigation reveals that the OS should be discarded altogether. I see a new usenet group forming: alt.badOS.poor.lowest_common_denominator.
I will keep the book as a paean to Bill Gates. Otherwise an average written book by an otherwise great publisher.
Download this book!
Free Ebooks Download