Effective software teams

Effective software teams

One of the challenges, non-technical business leaders often encounter, is in understanding the application development process. I hope this article will provide a framework for evaluating the problem. Without a clear understanding of this process, it is difficult to produce software at scale. By scale, I mean a team of programmers - rather than an individual developer along with the crew of other supporting roles needed to maximize their productivity. I will use the analogy of a band performing a rock concert to demonstrate what is needed. I use a band as this requires a team of [creative] musicians to coordinate their activities with other [non-musicians] to produce a concert or show. I believe software development is a similar creative process that needs extensive coordination and support. Effective software development (music development), testing (rehearsals), and refinement lead to a great product (concert).

Let's start with the band's creative process. The band has an audience. One or two of the members are the key drivers of the music they develop. In other words, they are the designers or architects of the content the band produces. They determine the creative direction of the output. If they are a rock band they will not suddenly move the group to produce country music. Will their music have a mood? Will it deliver a message? Who is their audience? What is their demographic? All these are determined and maintained by the lead designers of music for the band.

The true challenges begin when they have the recorded music and decide to go on tour. For most musicians, this takes them away from their interests. Most of them probably became musicians because of their love for playing and some for composing music. Some of them like performing but that is only a tiny part of the tour. This is very similar to programmers working on an application or product. They love to write code and some of them love the process of designing and optimizing their code to work in high-performance environments. Most musicians and developers do not think of themselves as process deliverers. Standard process delivery is what is needed to repeatedly deliver a cost-effective, high-quality concert. The same can be said for delivering high-quality applications. It requires everyone to get in sync with one another. A very different direction and effort to being creative.

Back to our band. In order to deliver a good show they probably need someone to design the show itself and then for someone to be able to take the design and choreograph the elements. These include the band members of course but could also require sets, lights, dancers, etc. for the stage. Behind the scenes might require costumes, makeup, ticket sales, food and drink vending, security, etc. If these activities are not well executed most people will notice. If the drinks person gets the wrong date - will anyone know? I think so.

What would the application development version of this look like? I am going to get a little creative with the analogies so you can get a good picture. For design, we have application and data architects. We have a project manager to choreograph the effort. They might get help from the support team to address issues with users (audience). For sets, and lights we have hardware and for dancers, we might consider UI designers and developers. The equivalent of setup and teardown for a concert is done by dev-ops in the application space. Ticket sales and refunds are done by the people responsible for user management. Finally, probably the most important, the quality assurance team ensures the customers (users/audience) are happy. Rehearsals do the equivalent, to perfect a concert.

I am sure some of you are thinking, that seems like a lot of people for a development team. For small teams of 5-6, some of the players take on multiple roles. However, it is important to recognize one needs the right skillset and mindset to complete certain activities. A creative person (developer) might not be the right person to meticulously perform the QA function. I believe it is better to have a combination of 2 developers and 2 QA people than 4 developers and no QA staff. 

Good luck with your next venture.  

To view or add a comment, sign in

Others also viewed

Explore content categories