Sunday, April 27, 2008 11:38 AM
Lately Evan Hoff and I have been discussing the concept of '-ilities' which we use to communicate the qualities of the software we develop. As a developer I have always valued certain qualities in the code that I write and in the software I develop but I hadn't really thought about this concretly before. Some sample '-ilities' are scalability, availability, testibility, and so on (basically anything with an 'ilitity' on the end of it). Some of the qualities I have been focusing on lately are reversability (how can I write my code in such a way that I can reverse out a decision easily), decomposability (how can a structure my program so that it can be worked on by multiple teams) and testibility.
By choosing these qualaties I am making an important statement about what I am willing to trade off in favor of these. I can then take this to the customer and ask them how important do they think this is and we can start to have a disscussion about their software in a non-techincal context.
I encourage you to do the same. If you would like to read more about this I would recommend reading the book Software Architecture in Practice, which contains a better and longer discussion on the topic.