User login

Applying Design Principles to Software

A woman likes designSometimes I find a well-written library with a great API. It's well documented, easily understood, and it seems to do what it "should" do. It's almost as if the author of the library anticipated my usage. Those libraries are a pleasure for me to use. I tend to call them well-designed.

I've been reading a fascinating book on design recently, called The Design of Everyday Things (DOET). It discusses good and bad design of the objects we use every day, from the doorknob to stovetops. The book presents principles of good design that, if followed, can make products easier to use. And the reasoning behind the principles is so simple and straightforward.

In this article I'd like to explore principles of design as applied to writing software. Not user interface design, but the design of API's and libraries.There are two users of a module: the programmer, and the client code he/she writes. Both types of users are important, so I'll try to give some useful tips about both.