I see lots of stuff lately about Agile Software Development, but what I really envision (and believe there is great interest in) is simply agile software. These are two very different ideas - both are good; but I prefer the latter. Being agile (and flexible) while developing software is important, especially if you're agility benefits paying customers. At MyST we took this to a higher level - we declared - "We must be able to meet constantly shifting requirements, and we must create software technologies that support new ideas and use cases long before they have been invented." - MyST Technology Partners, 2002 To me, this describes agile software. An example of agile software is an ability to meet a previously unknown requirement without any signifcant engineering or development effort. XML is a good foundation to have if agile software is a requirement; abstract designs are also mandatory. "You do this by including the customer in the development cycle and testing with them to constantly course correct. This gives you the agility to tweak product direction rapidly." -- Tim Wolters Ironically, creating agile software and being agile while developing software, each require customer involvement. At MyST we [typically] don't tweak applications as they are being developed. Instead, we consider more abstract designs at the outset so that tweaking (to meet specific use cases) is more about defining a process or configuration, than it is about changing gears in the middle of the development process. There are times when we must refactor, but we do so to create better infrastructure, not to create a new feature. This blog post is a good place where we can see an example of agility in the MyST platform. Imagine you wanted to use the links below as an RSS feed. This is not a likely occurence, but meeting unlikely requests (the exceptions) are the foundation of being agile. Here is it: http://blogsite.com/item/100643?model=apps/blog-site-mss/mss-rss While we didn't build Blogsite with the intent of using each blog post as an RSS feed source, we also didn't rule it out. Instinctively we knew that if we provided a capability to create collections of links (as we do with Link Properties), we knew that someone (eventually) would use blog posts in ways that were unintended. RSS agility (to us) is a requirement. Another example - the MyST platform was designed long before podcasting became a known idea, yet Link Properties support arbitrary collections of file types. We created this level of agility by listening to customers and observing ways that customers uncover unintended use cases. |