By Peter Bell

The Importance of Examples

Whether you're doing software development, marketing consulting or product line engineering (three domains I'm pretty involved with) it's amazing how consistently useful concrete examples are in improving the quality of your thinking and results . . .

Test Driven Development
In software development, I'm really finding that Test Driven Development (or as Dan North likes to call it, Coding by example) has a huge impact on the quality of my coding - especially for core, important code like API's.

I always used to suffer from analysis paralysis when trying to develop "ultimate APIs" for solving a problem space. Now I just hack something to solve a specific problem and then refactor the structure of the api as new examples come along. I've found this consistently gives me sparser, more elegant and fully utilized APIs when compared with trying to come up with the API, code it and then write the calling code.

Personas
Sometimes we are called in to help with either general marketing consulting or (more commonly) mapping a business strategy to an appropriate set of web based content and functionality. I didn't used to do personas for our smaller projects, but after some recent experiences I'm considering making them a standard part of our development approach. By having a persona for each human role in your system (there are often non-human roles such as other systems or scheduled tasks) it really makes it easier for developers to have a sense who they're coding the app for and to put a real face to the kind of users they're developing for.

Frameworks by Example
I'm playing with adding a bunch of new concepts to our Software Product Line. Some of the concepts are pretty abstract - such as whether to keep an association between metadata and the packages that required it or whether to "flatten" required and custom metadata to be able to easily take advantage of third party tooling like MetaEdit+ or openArchitectureWare. I'm finding that (in addition to blogging) what's really helping is working up some sample metadata as I'm finding that the more samples I have, the more I'm learning about the relationships between features and the metadata used to implement them and the more ideas it's giving me about the appropriate way to make some key architectural decisions that will be relatively hard to reverse down the line.

What has been your experience using "example driven development" at whatever level? Thoughts appreciated!

Comments
BlogCFC was created by Raymond Camden. This blog is running version 5.005.