In the previous blog entry, we compared an abstracted view of a containerized Application to that of the development process itself. In this part, we will explore what are the dependencies of the software development process and how to quantify them so that we can build a similar “container” for it.
Software Development Process Dependencies
Core Software Engineering Team
Software engineers form the core of a development team. Choosing the right team ensures that the software built adheres to the design, performs at the right level and meets or exceeds expectations of clients. The team will need to be composed of the following:
- An enterprise architect
- A lead developer who can also function as a full-stack software engineer
- One or more senior developers per tier of the system
- One or more junior developers per tier of the system
But for a given project, how many of each of the above will you need? That is a metric that will provide the correct “size” of this dimension of dependency within the container like as though you are estimating the size of CPU required for an application. Also, depending on the size and complexity of the project, a full-time enterprise architect may not be required. Usually the number of software engineers for a single pod or team should not be above 6 or 7 – this includes all the above roles mentioned.
Quality Assurance Engineers
Unbiased software testing requires QA engineers that are not developers. This is a much-debated issue. Even amongst very successful companies, there are differences of opinion as to whether QA engineers are needed apart from software developers. It is our opinion that developers are poor testers and cannot perform unbiased testing. So, any development process container must contain an appropriate number of QA engineers. From a series of successful project executions which involved robust testing techniques and processes, we have determined that the QA team needs to be at least 33% (or 1/3rd) the size of the number of software engineers. For a team which contains 6 software engineers, 2-3 QA engineers will be required.
Modern applications are engineered as smaller components that fit together to provide end-user functionality different from older monolithic designs. This new design, while versatile and flexible also offers significant build, deployment, management, and security challenges. To address this significant dimension of the development effort, DevSecOps engineers are included in the team. For a team the size discussed in previous sections, a minimum of 1 full-time DevOps engineer and a part-time SecOps engineer will be required.
In the next part, we will continue to explore dependencies of the software development process.