The secret of successful software development

Like any organization also a software development organization is constantly challenged to deliver more with less, reduce time to market and show more agility to respond quicker to market needs. Many articles and books have been written about different development methods and processes like RUP, Scrum, XP, etc... These methods are all great, but sometimes we do forget it's all about People.

Image credit: Sara Petagna 

Software development is done by people and I believe people come before process, so I've developed a little model to explain why software development in general is so damn difficult. In software development there are in general 2 types of people involved, Functional people to define and review the functionality of the solution and the Technical people to do the actual realization of the proposed solution. Now lets compare these 2 types of people.

Functional Technical
Extravert Introvert
See opportunities See risks
Want it now! It's difficult, it takes time!
Think solutions Think frameworks
It's simple, just a few things How about Security, Performance and Scalability?

The above chart now shows clearly that there is a natural incompatibility between the Functional and Technical people. Off-shoring and outsourcing often make it even more difficult with 12 hour flight, an ocean and multiple time zones in between. This is a serious challenge, because it's essential for success that they work as a team. It's usually not the team with the best individual players that wins, but the team with good players that understands and complements each other. This is why a good coach is important.

The secret of successful software development is the coach that makes sure you have a software development team that understands and complements each other. The coach bridges the gap between the different personalities. It's up to the coach to decide how to do this, I personally like to bring the Functional and Technical people together at every stage of the projects. Especially in the requirement phase I like to do 'reality checks' and come to a shared concept solution. This scopes the solution down,  manages the expectations of the Functional people and makes the Technical people more involved in the whole process. I also realize that it's difficult to formalize the role of the coach, because every team and organization is different. Sometimes it's just the Product Owner and in other situations it's the Development Manager. It can be anybody, as long the gap between the different personalities is narrowed.

The coaching part doesn't dismiss your organization from having a formal software development process. A well defined process is still  necessary to keep track of events, control your quality and for compliance and responsibilities. However the process should never be placed above the people that are doing the actual work, instead it should guide them to better results.

4 comments

Great, yes it is all about people,people and poeple.
Functional people and technical people should indeed work close together. They should have multiple iterations. Otherwise one of the groups is describing a proposed solution in too much details which will be rejected by the other group. Both groups need to come to an consencus about the right solution. With this consensus you can start to describe the detailed solution.

Gr. André

Sure its about people. Along with people I would also say that every person in the project understands what it needs to make the software market Ready. Many times, I have seen that people involve in a process so much that they forget that the software is ever going to be used and miss on usability, Market readiness and more

great chart. having a good coach that can narrow the gap is rare thing.

Thiruppathyraja

Excellent sharing Thanks for share i am sure its must help me. thanks for doing this.
Software Product Development

Post a Comment