Last week we engaged in a series of workshops with the business to establish alignment throughout the organization and gain some insight into the scope of our project. One of the most valuable sessions occured on the final day. In this session the clients (an assortment of "Super Users" from around the world) discussed the essence of the data we will be working with. While the session was termed "Data Modelling", we knew that no data modelling would take place and none did. The end result was far greater than a big up-front table design. The final result of this session was a small yet concise vocabulary of terms frequently used in the domain. Eric Evans calls this Ubiquitous Language in his book "Domain Driven Design" and it has proven its usefulness in project communication.
The session was anything but fun. Most of it was spent frustratingly calibrating our vocabularies so that we were all using the same terms. There were also tedious explainations and a lot of whiteboarding. Inevitably there were arguments and inconsistencies but in the end we were all able to agree upon a dozen or so terms that the business uses on a daily basis.
UbiquitousLanguage:
http://patternshare.org/default.aspx/Home.DDD.UbiquitousLanguage
If you are having problems communicating with your business, I highly recommend setting up a "Data Modelling" session on your project to help establish a Ubiquitous Language.
Wednesday, May 10, 2006
Ubiquitous Language
Friday, May 05, 2006
Let Me Introduce You To Agile
Here's an excerpt from an email I circulated to introduce our developers and BAs to Agile:
While Agile may be a new term to most of you, don't worry, you've probably already used some Agile practices without knowing it already! Agile is simply an umbrella term for a number of software engineering principles and practices that collectively serve to embrace change in software projects. Metaphorically, Agile is to software what Lean (JIT) manufacturing is to the automobile industry. Specifically, the adaptability of Agile projects eliminates the need for a big up front design and gets rid of a lot of wasted effort that can occur in more predictive project environments. The reduction in cruft coupled with a rigorous approach to testing reduces the impact of changes on the project as it progresses. Bottom line, Agile methodologies can produce high quality and maintainable software in an environment that you will find both challenging and fun. I think you'll like it!
Martin Fowler does a good job in explaining some reasons for the shift in software engineering from predictive to adaptive methods in his article called The New Methodology:
http://www.martinfowler.com/articles/newMethodology.html
The rest of Fowler's site contains a wealth of information on Agile, refactoring and design patterns:
http://www.martinfowler.com
The best jumping off point for Agile is found at the Agile Alliance:
http://www.agilealliance.com
Agile Journal has a few higher level articles:
http://www.agilejournal.com
Probably the most useful resource for the explanation of Agile practices is:
http://www.extremeprogramming.org
My favorite technical Agile development blog is by Robert Martin and is located at:
http://butunclebob.com
I have lately been reading Jim Shore's articles at:
http://www.jamesshore.com
Finally ThoughtWorks publishes heaps of information on their website. Check out the articles, whitepapers and blogs on the ThoughtLeadership site at:
http://www.thoughtworks.ca/thought-leadership.html
