Here's a bit of Chu-Carroll's post:
This kind of thing happens constantly in software. In my own area of specialiation - software configuration management - virtually every tool on the market presents itself to users in terms of the horribly ugly and complicated concepts of how the SCM system is implemented. Looking at popular SCM systems, you'll constantly see tons of things: branches, merges, VOBS, WOBS, splices, gaps, configurations, version-pattern-expressions. To use the systems as they're presented to you, you need to learn whatever subset of those concepts your system uses. But those concepts are all completely irrelevant to you, as a user of the system. What you're trying to do is to use a tool that preserves the history of how your system was developed, and that lets you share changes with your coworkers in a manageable way. What does a VOB or a VPE have to do with that?
I'm not trying to claim that I'm perfect. I spent the majority of the my time working in SCM building a system with exactly those flaws. I'm as guilty as anyone else. And I didn't realize the error of doing things that way by myself. I had to have it pointed out to me by someone who's a lot smarter than I am. But once he made me aware of it, it made me aware of this as a ubiquitous problem. It doesn't just happen in things like embedded systems (the Xerox card reader) and SCM systems. It's in word processors and spreadsheets, file browsers, web browsers, desktop shells, cell phones, music players...
Software developers - like me - need to learn that users don't view systems the same way that developers do, and the right way to build a system is by focusing on the view of the user.
No comments:
Post a Comment