The first step in a software development process is gathering a team. These teams need to have all of the skills necessary to develop and deliver custom software, including, but not limited to, programming, UI & UX design, operations, management, vision, and testing. In addition to Engage’s developers, designers, and managers, this typically includes at least one “product owner” from our partner, who regularly provides guidance on what to build (and in what order).
As time goes on, these teams grow in effectiveness. Everyone understands how best to work together (in part because we’re committed to growth). This understanding takes time to develop, and so we try to avoid churn in our teams. In order to avoid disrupting the dynamics of the team, James Shore’s rule of thumb is to only add or remove one team member per month. Similarly, team members are dedicated to the team, not split between different teams. Team stability is pivotal to consistently deliver software and develop technical excellence.
The whole team is the unit of production. Teams are self-organizing; that is, the team is in charge of determining how to best make use of everyone’s skills. Measuring any individual’s output creates hostility and unhealthy competition. Often those who officially complete the fewest tasks (and assigning or counting tasks is a bad idea to start) are those who are spending the most time making everyone else successful.
Creating, developing, and maintaining a team is crucial to the success of the process of creating custom software.
Recommended Reading