Generally, a software development team is composed of business analysts, developers, and QA staff, feverishly working towards meeting deadlines collectively. To maximize the likelihood of this team becoming successful, a well-tuned team dynamic, containing the ‘right’ quantity of individuals with the ‘right’ skillset is essential. Usually a team like this is measured in terms of productivity or ‘value for money,’ However, defining what the word ‘right’ means in the above sentence is difficult – so how can we explain what makes a software development team successful?
Well, first and foremost it is important to have a clear set of objectives with a project profile that prioritizes each of the objectives. For example, if your project is for a medical device and the output is a matter of life and death for patients; then, of course, allocating extra resources to ensure that the system is thoroughly documented, requirements are well written, and the implementation is perfectly tested before a single line of code is even written, is entirely justified. However, if the purpose of the project is to serve only internal customers, where minor bugs in a less used function that have minimal impact to production and revenue, then trying to push the throttle for development despite compromising system quality, as a lower priority objective, may be the sensible decision to make. Therefore, ensuring that high application elements get the most attention, sophistication, and automation, as opposed to the lower application elements is vital. Similarly, for projects that involve modernizing systems to align with the growth scenarios of today – e.g. moving an application from on-premise data storage to the cloud – where the details and expectations are well defined, having a highly diverse development team provides a vast number of possible approaches and innovativeness to accomplish the task, and the development team becomes the most valuable entity within the group.
Similar configuration approaches need to be considered in terms of relevance to the general evolution of the project. Starting from inception, building a foundation and expanding on it to allow more complex applications, leading to a maintenance mode where the majority of a team’s focus can be centered on stable operations with smaller periodic updates.
During the inception and foundation building phase, having a highly skilled developer set is crucial. This is to ensure that the basic architecture of the system, not just in terms of database structure or design philosophy; but in terms of deployment processes, SDLC processes, and the general rhythm of work is scalable and operationally efficient. This phase requires high imagination in order to conceive the full scope of the project potential and innovativeness to achieve the same. The initial pieces are the key for further expansion and development. Once the initial foundation begins to settle, and actual operational elements and user interfacing elements trickle in, having a robust support team of QAs and BAs is critical. This group of individuals provides critical feedback of what is comfortable to use and what is not, also allowing for expansion of application of the project without compromising the core principles, as well as taking user experience into consideration. However, as the project begins shifting into maintenance mode, the scope of imaginativeness and the associated costs and risks are often too high to even attempt at this stage. This leads to a significantly reduced scope of innovativeness as well as complexity of subsequent implementation.
Nonetheless, nothing is permanent nor are the expectations of each of the individuals within the development team. This is where ensuring a high level of overlap and alignment of the project’s long term ambitions and the individual’s personal goals come into the picture. This requires a great level of communication, accountability, and transparency within the team. Albeit acknowledging that there is a line in the sand to distinguish between what is vital information in the long-term context, and what is a non-discussable trade secret. The lesser the alignment, the higher the probability of personnel outs and subsequent ins, which inevitably results in inefficiencies due to the impact of offloading and onboarding of turnover personnel.