Re: Timeless Classics of Software Engineering
Date: 11 Aug 2004 15:47:51 -0700
Bernd Paysan <bernd.paysan_at_gmx.de> wrote: snipped most of a fabulous post about XP and engineering.
I agree with most all of what you wrote, except for the very last bit:
> BTW: The real hacker way to deal with customer requirements is to throw
> them into the bit bucket, and analyze the problem yourself (only care
> about it if it is interesting, and redefine it until the solution is
> trivial). Unfortunately, this often leads to software where user and
> developer have to be the same sort of people, and which doesn't solve
> the problems of average users (problems hackers don't have at all).
It is not necessarily so, that hacker's can't think like regular users and solve regular users problems. It may currently be the case, in general, but it is not a necessary state of affairs. The technical and engineering community needs to take a masonic attitude toward this problem and start 'making better hackers.'
Many, if not most, hackers started out as regular users and should be able to recall what it felt like to deal with the recalcitrant machine: I can certainly recall the feeling of helplessness I experienced for the first few years I used unix, and I try to channel that feeling into my programs and documentation.
The disciplines of user-interface design and HCI (human-computer interaction), at their best, are attempts to focus the attention of technical people on the problems and perceptions of non-technical users. If you, as a software developer, can manage to think like a non-technical user, even if only occasionally, you will have gone a long way toward making better programs. Of course, the requirement for user reviews and focus groups is an admission that such focus is difficult to maintain, and that formal processes may be required as occasional reminders.
Still, as a hacker, it should not be so difficult to put yourself in other peoples' shoes. In the commercial environment you may have to ignore some things in the interest of meeting a deadline or a budget, but the private hacker has no such limitations. It requires only a change of attitude, not of constitution. I simply don't believe that hackers are inately incapable of thinking like non-technical users, only that they are unaccustomed to it.
To bring this back on topic, there are a few books that I like for discussing user interface design:
- 'Tog on Interface' and 'Tog on Software Design' by Bruce Tognazinni
- 'The Elements of Programming Style' by Kernighan and Plauger chapter 5 on input and output
- 'The Practice of Programming' by Kernighan and Pike chapter 4 on interfaces (last part on user interfaces)
- 'Programming as if People Mattered' by Nathaniel Borenstein
- 'The Humane Interface'
by Jef Raskin
- Jeff Dutky