Mathieu Tozer's Dev Blog

Cocoa, the development of Words, and other software projects (including those dang assessment tasks).




The Craft Of Designing and Building Software

0 comments

I learned from MacPaint that in order to get a piece of software to be smooth, you must start over a number of times. You need to test it on a lot of different people and have them use the program. A lot of what I would do was just watch Susan Kare using it.

"What is it that you'd like to be able to do?" I would ask her, "What's the most frustrating thing about this?"

Then I would go back and see what I could do about that. I think that the more user testing a piece of software has, the smoother it can become. The process of software design really is one where you start with a vague notion of what you're trying to make, and that vague notion slowly congeals and gets better defined. As you work with it more, it gets to the point where it is something, but as you try it you realize, "You know, I've kind of missed the mark here. This is sort of what I want to do, but what I really want is more like that!"

For example, first you pit it and pat it, and you realize it's some kind of a table. Then you throwaway all of the code and build a table from scratch, and you've got a clear, clean model. Then you start pitting it and patting it, and adding things that people want and it gets a little lopsided and difficult, and you realize after a while, "You know, what I'm really building here is more like a cobbler's bench." That's when you have to put it aside and build a cobbler's bench deliberately, and craft it to be right for a cobbler's bench. You iterate like that, testing, and then being willing to set aside and build from scratch again. So much software today doesn't get that luxury. Partly because the Macintosh hardware wasn't quite ready yet, I got that luxury. Too many pieces of software today ship when their first prototype is built, and then it's much harder for them to evolve, because they have to keep everybody happy by keeping all of the features the way people have become familiar with.

The original Mac only had 128 k-bytes of memory. Alan Kay referred to it as a "Ferrari with a one-pint gas tank." It was particularly challenging to design a painting program that would do a lot with a small amount of memory, as a copy of the whole screen had to be kept in a buffer to allow the undo command. Bill remembers the worst-case scenario, when you typed using one of the bigger fonts, you had an undo buffer and a selection going at the same time, leaving only 138 bytes free. He knew he could only succeed under those conditions by rigorous testing. Large parts of the Macintosh were rewritten in Assembly language for no other reason than compactness; and later they had to be rewritten again in a high-level language to be more maintainable.

Bill Atkinson, as quoted in Designing Interactions, by Bill Moggridge, page 102 - 103.

Labels:


+RSS | dev blog | Portfolio

About me

My status

Last posts

  • my del.icio.us
  • my flickr