Unusually Adaptable Software

Here's a stab at the definition:

When a new feature or new application for a piece of software is desired, it can be done faster than the requester had hoped possible... at least until they start taking it for granted.


I like this definition -- it captures something seldom seen, but always wonderful. Now: How do we go about achieving it?


Is UnusuallyAdaptableSoftware something we really want? To me it suggests we charged the client too much when we provided what they actually asked for. Is it okay if it is AccidentallyUnusuallyAdaptableSoftware? (e.g., the software is so well refactored and tested that even major changes take a very short time)?


I HaveThisPattern (well, I had it at my previous contract). It was a great feeling. After analysis of what we had achieved, though, I came to the conclusion that the software we had produced was only seen as UnusuallyAdaptableSoftware because the previous version had been so heavyweight. I'm still meditating on the particular approach we used (and I'll start a pattern page for it here one day, honest), but it was a result of a MajorRefactoring?.

The customer had "learned" that even changes which were simple to describe would take a lot of time and effort to get right, and was astonished when the software became more user-aligned, so that his idea of simple matched the developers' idea of simple.

I've since moved on from that project, but I still occasionally hear reports of delight from the current developers that changes are easier than expected.

--FrankCarver


The term I like to use is "Software should be soft". I do not know if Fowler invented the term but he does have an article on it. http://www.martinfowler.com/distributedComputing/soft.pdf In my mind it goes beyone maintainability and goes into the realms of the software reconfiguring itself "on the fly" to adapt to new needs. Generative programming is often used to acomplish this and it has a sort of AI flavor to it. In additon, writing programs that write programs is always more fun. --pjl


EditText of this page (last edited August 29, 2004) or FindPage with title or text search