OOFILE | Downloads | Purchasing | Press | Services | Company Information | Soapbox | References | F.A.Q. | HOME 



Maybe this is an even bigger ego trip but I've found sometimes my most effective project management has been getting a single, simple message across. I hope you find these useful and would love feedback.


Simplicity is the Shortest Distance Between Two Points

My favourite quote from Bruce Lee.


Classes for Concepts

Dunno where I first heard it but I always find this a useful principle. When in doubt, to take a first cut at a problem (especially a significant architecture) every time you identify a new concept give it a class of its own. Coalescing classes is a refinement step that belongs later.


Coupling sneaks up on you.

I wrote this on a whiteboard during a mentoring session last week. Call it the entropy of OO systems — without period refactoring or other discpline, every system being maintained becomes more closely coupled.


If You're Just Bought This....

The single most effective thing I ever said to someone to improve the quality of their work (on a shipping software library) was this:

If you had just bought this package, what would you want in there to help you get started? Remember this is going to someone just like you.

I've previously heard a variant, more applicable to consumer items, something like:

Would you send this to your mother if she couldn't call you for help?


Know Where the Splinters Hide

Software development really is a craft, much of the time. Like a carpenter learning unfamiliar timber, sometimes we need to work with a toolset or library to get the feel of it, to know Where the Splinters Hide:

  1. What mistakes do you readily make using the tool?
  2. What features would you add if you wrote it?  
  3.  What risks does it bring to the project - what's gonna hurt you when you're not paying attention later?

(January 2003 - this came to me after spending an intensive couple of days coding using our expatpp XML parsing library and understanding just how to work with the parser to solve a design problem that had been troubling me over previous weeks. Despite being the author of the library, I hadn't written a complex parser with it from scratch for a few years. I found, and fixed, a few splinters and had my design in great shape.)



Other ideas on Software Engineering