Growing a design

Nine years ago my job was to create a player application for language learning. The application was written in C++ using the PowerPlant GUI framework.

This was my first experience with C++ and frameworks. I didn't have a clear spec. My app was just supposed to do whatever the PC version did, and the PC version was a moving target. So I just started writing code.

Not just throwing something together, though - I was growing a product. I felt like I was building a statue out of clay. I would add an appendage here, a feature there, then decide I wanted the appendage there and the feature here so I would move them. All the while keeping the code supple and clean and expressive.

When I needed a new widget I wrote it. I knew I wanted reusable widgets so they couldn't depend on their environment. The widgets have to be told what to do. In this way I discovered the essence of Inversion of Control.

Through all of this, I never had a master plan for the design, I just let it grow, I kept the code expressive of its intent, I only put in what I needed, I didn't repeat myself. And it worked! The product did what was needed and did it well. It had very few bugs discovered in testing. And four years and four major releases later, it was still supple, readable, modifiable and maintainable.

last change 2004-04-03 21:05:52

April 2004
MoTuWeThFrSaSu
    1 2 3 4
5 6 7 8 91011
12131415161718
19202122232425
2627282930  
Mar
2004
 May
2004

The best designs grow organically with the software.

XML-Image Letterimage

BlogRoll

© 2004, Kent Johnson