If you are in charge of delivering business value through the implementation of software, go and read this article NOW. Last year I started a “Q Branch” at Readify. When I say started, I mean I created a Team Project in Team Foundation Server and just started writing and shipping code.
I did a little bit of a write-up for our intranet for newcomers to the organisation:
I’m a fan of James Bond – are you? In the James Bond universe there exists a character called “Q”, Q is the head of Q Branch, an R&D lab which produces all manner of gadgets and gizmos to meet the needs of James Bond whilst he is on his missions. The striking thing about Q Branch is that the stuff that they build _is needed_ by James Bond, and it is delivered at just the right time.
A while ago I decided that what organisations need within their IT group is their own Q Branch that listens to what is going on then undertakes small skunkworks operations to solve that need. If you look at some of the most successful systems within Readify – they actually started out as small pet projects to solve a particular need.
Since last year Q Branch has successfully shipped about eleven applications. Some of them are tools to support development, others are tools that support the business (a big part of our business is software development). I’m now convinced that this is the way to incrementally deliver business value.
One of the challenges to this approach to development however is how you maintain these small applications. In some ways this is where the beauty is, because they are so minimal the amount of code is relatively small and rather than slowly bloat a single application I tend to create a new application and link them together either via e-mail workflows or hyperlinks.
For example – I have an application that initiates an e-mail workflow that links together Microsoft CRM, and two Q Branch applications to do with gradually cleaning the address data in our CRM system.
With so many applications you need a fairly good way to deploy them. This is actually somewhere that RoR has an advantage because the output from the tool chain is a fairly consistent structure. The output from .NET projects can be a bit wild and wooly. Where we have overcome that is by using tools like TFS Deployer to automate deployments into test and production environments.
In short – just say no to big monolithic projects. Gather a crew of enthusiastic developers and set them loose on making your world a better place.