A football team is made up of footballers. A cricket team is made up of cricketers. A rugby team is made up of rugby players.
Anybody with more than a passing interest in any of the above sports will tell you that whilst those statements are true they mask a huge amount of detail.
Each of those teams is made up of a blend of different roles and skills. A goalkeeper is very different from a centre-forward. A wicket keeper is very different from a fast bowler. A scrum-half is very different from a hooker.
So why do many organisations still think that a development team is made up only of developers?
Software delivery requires specialist skills across the following areas:
- Analysis | Requirements
- Architecture | Design
- Implementation | Development | Coding | Configuration
- Validation | Testing
This is clearly more nuanced than ‘just development’. Any existing high-quality software will have had these skills applied during its life-cycle.
Would you do this at home?
You wouldn’t start building a house without knowing how many bedrooms and bathrooms you need (analysis), or seeing a vision and blueprint for what the finished house will look like (architecture). Similarly you wouldn’t let the builders leave the site until you’ve checked that the house they’d built for you looks exactly like the blueprint (testing).
“Oh, where exactly is the second bathroom?” is an unwanted conversation for both you and the builders!
To those of you working in the software industry the above may not seem like rocket science, but the need for upfront design and validation is still often overlooked in software development; either through immaturity, haste or both.
Abstract phrases such as ‘Has the architecture been done?” should act as warning signs that the development process is not fully understood. Architecture is not something that is applied, it is both a strategy and design for a system that takes into account current requirements, potential for future growth and also importantly the total cost and deliverability. It is your first proof point that your system (or house) is fit for purpose.
Likewise phrases such as “our developers will do the testing” highlight that the testing discipline is underestimated. Testing is not just about ensuring new functionality works. It is making sure that the new features are compatible, existing functionality is unaffected and that the system as a whole performs to the necessary specification.
I’ve witnessed all too many struggling development functions where the missing ingredient wasn’t “more developers” or a ‘rock-star ninja developer’. In fact the reason for the poor software delivery was the lack of structured input to the developers and the lack of validation and assurance of their output.
Don’t park the bus
A football team has never won the World Cup by ‘parking the bus’ and playing a team of defenders and unless the rules of football change, they never will.
Likewise, if your goal is to deliver quality software then it’s worthwhile making sure you’ve not set up your software delivery process in a similarly defensive way.
This post was first published on LinkedIn Pulse on 5th April 2016 –A development team is more than just developers