For a good part of my IT career I worked as a consultant for large professional consulting firms in Europe and here in Australia. I’d be assigned to large scale software development projects and design and build systems with a small team of developers. Most of us had around 5-10 years IT experience at that point, were led by a more experienced project manager and architect and we’d spend months writing requirements specs, technical specs, attending meetings, writing more documents, creating proof of concepts, getting customer buy-in and finally cutting code.
The end result was usually a very expensive piece of software put together by a team of developers starting out in their IT careers. Most of my fellow developers tended to write fairly decent code – but unfortunately not all. The software would need to progress through many iterations before most of the significant bugs were ironed out. The customer would eventually get a solution that met their requirements – often many months later after many iterations of testing and bug fixing.
A large part of the cost and delay in delivery would relate to time spent writing and reviewing upfront business analysis and design documentation, attending meetings and jumping through process hoops.
Unfortunately this model of acquiring custom software – i.e. paying a big name consultancy firm (using a large crew of often junior to intermediate level programmers) – is still the norm for many large corporate projects. Whilst there are certainly many successful projects delivered this way, on the flip side many businesses are also deploying buggy software with often atrocious usability that is late to market and has cost them a small fortune.
Here are some examples of the pain points I’m talking about:
- Insurance companies are deploying insurance quoting software that resets all form data where you click the ‘back’ link, doesn’t validate street addresses and allows non-numerical data in numerical input fields.
- Parents are struggling with school reports software with very poor usability that even a seasoned tech head can’t figure out.
- Organisations that seek advice on technical strategy are often forking out tens if not hundreds of thousands of dollars for technical consultancy.
Based on my experience, both working within large corporate and government IT projects and as an independent consultant, I know there is a better way.
Micro consultancy and rapid development
On many projects a small team of experienced developers – and by small I mean 4 to 6 tops for most medium scale projects – can achieve results in terms of quality and time to market that far outstrip the capabilities of a larger team made up of junior to mid level programmers and outsourced staff. There is really no substitute for experience.
I’ve seen it with my own eyes – multiple times. Some years back I worked with an excellent group of highly experienced Java EE programmers on a mobile payments project. There were 6 of us on the team and the quality of the output and the speed with which we delivered working code was exceptional. Team leadership had a lot to do with it – our team lead was a legend (hat tip to Bern ;)), but in general it was the depth of experience in the team that made all the difference. This is the depth of experience that can only be developed with time at the coal face – the depth of experience that a lot of seasoned freelancers and contractors will have, but will not generally be available in junior to mid level programmers starting their careers in a consultancy.
Realising that a small agile (more about that later) team of experienced developers can produce code of higher quality, more quickly to market than a larger team of less experienced programmers (following a consultancy’s homebrand methodology) was a light bulb moment for me.
Ok it’s fairly obvious you’d say.. and you’d be right. Except that it’s obvious to you if you’re in the software development business – but not if you’re a business looking for software development expertise. The default option is often to pick a big name consultancy over a ’boutique’ software agency down the road.
When that light bulb went off in my head here’s what I realised.
Businesses don’t always need to hire expensive teams to develop software. Many solutions can be provided by a small team of highly experienced developers following a ‘process light’ / agile development methodology, using rapid development practices and supporting tools.
Notice the key elements to the magic formula:
- Highly experienced developers
- Agile development methodology
- Rapid development practices and tools
Another aspect to the magic formula above is that the team do not have to be employees of the same business. They can be a team of freelancers working collaboratively on the same project. Much as with open source projects (for example this recent Github offering) where developers will usually not work for the same organisation, freelancers will collaborate together for mutual benefit.
In order to ensure that only ‘highly experienced’ freelance developers were invited onto a particular project there would need to be some form of vetting or pre-qualification process of course.
In my next post I’ll move on to talk about this vision of alternative consultancy (a blend of ‘Micro Consultancy’ and small scale distributed agile development) and its disruptive potential.
If you’ve got this far, I thank you for reading. Please leave a comment. It would be great to hear your feedback.. more to come.