I really like the way Luke Hohmann describes
the aspects of completeness and maturity in an architecture:
It is really important to distinguish between incompleteness and immaturity. ... You always want to shoot for completeness.
... because if you shoot for maturity before completeness, you can greatly limit the usability of your product. Hohmann mentions that having only add and delete functionality is complete, but not mature. Having only add and edit functionality is (in a way) more mature, but not complete. With add and delete I can do an edit by deleting then adding. With only add and edit, I still can't delete. Seems I've seen this exact example a zillion times myself (in fact, my own blogki here can't delete pages ... but I've argued to some that that is intentional ... that's another topic :-)
Hohmann continues on
with this great point:
The way to [add functionality], in my opinion, is to take one use case and push it all the way through.
Of course I think it's as great point because it sums up this personal example I related in my XP paper
In another situation, a new data entry form was being added to an existing application. The GUI for the form had been designed to be as easy to use as possible. Implementing the design required use of some third party GUI tool that was complex and time consuming to work with. Many additional weeks were added to the timeline tweaking out the GUI. After it was complete, the new form was still useless, however, because the data entered into the system through this form had not been included into other processes required in the application. Following the practice of small releases that are as close to functional as possible would have delayed the more elaborate GUI features to focus on including the new data elsewhere in the app. If an early iteration worked well enough for the customer, the more elaborate GUI might have been easily scaled down to a less efficient, but still quite usable form, allowing the customer to move on to more important items.
Thx to AdamKeys
for his blog entry
reminding to re-read these Hohmann articles -- I'd skipped over them too quickly the first time ‘round.
See also AlmostBarelyWorking
When you make a thing it is so complicated making it that it is bound to be ugly, but those that do it after you they don't have to worry about making it and they can make it pretty, and so everybody can like it when the others make it. -- Gertrude Stein (quoted in “Proust Was a Neuroscientist”)
tags: ComputersAndTechnology AgileDevelopment