How Soon Is Now? Measuring manpower and duration of the software project
Before composing a team, we need to answer ourselves, what actually needs to be done? Defining the scope of work is the crucial aspect prior to dedicating specialists to the tasks. Experienced managers with settled-down procedures and operations might depend on historical data and their knowledge regarding specific team members during the process of team set-up.
The evaluation is based on the amount and contents of the assets brought by the stakeholder. This might be a specification, market analysis, user stories, whitepapers or just a business idea with no deeper investigation behind it. Considering these deliverables, the software development team can:
- perform product discovery session, like Google Design Sprint,
- carry out a technical scoping session with the client, based on the specification and other whitepapers,
- prepare an estimation based on the list of requested features,
- run the User Experience Workshops conducted by UX specialist, supported by experienced software engineers.
A well-defined scope of works might require more than one of the endeavors mentioned above to dedicate the right people for the project. The most important aspect is the relevant skillset and competencies of the team. In a nutshell, a defined scope should answer questions below:
- What kind of test will be performed and what kind of tools will be used? (in the example: Selenium, Postman, API tests, unit tests, manual tests, automated test)
- What is the expected body count of the team?
- What roles will be taken by the team members? Will the team dedicate a Scrum Master and Product Owner? Will the team need a lead developer, solution architect or is the project suitable for regular developers or/and junior developers?
- Will the team require adjusting its composition during the project?
Expected software team composition while limited resources
Another approach can be used when the project has significant time and budget limitations. Instead of asking “what resources we need to accomplish the project”, we should rather answer ourselves to the question “what can be done with the resources we have”.
The major obstacle, is, of course, the budget. If we have a specific amount of money in our mind, this enforces us to seek solutions that will fit our budget. Such limitation encourages to eliminate some costs but also determine expected team composition. Ironically - a limit can be helpful in the decision-making process.
The budget confronted with the market conditions supports prioritization of the tasks in the lean approach driven projects. With a monthly cap, we can decide how many software engineers, UX designers, Quality Assurance specialists, and others can be involved in the project and for how long. In the software development process, it is considered to deliver the Minimum Valuable Product (MVP) in the duration of 2-4 months, which on average gives 40-80 working days. Multiplied by the number of team members, this gives us a ballpark figure of the costs.
Of course, some of the roles do not need to be covered full time, this mostly relates to project managers, QA’s and designers. In my IT outsourcing experience, the initial figure circles around the time to be spent by the software engineers. Additional roles are estimated by the historical data, whitepapers delivered by the stakeholders or outputs of pre-initial workshops performed with the team.
Below please find some samples:
Monthly involvement of a Full Stack TeamHours Time sum for 2x senior developers 240 Time sum for 2x regular developers 240 UX Designer 80 Project Manager 80 Time sum for 1x senior QA Specialist 100 Time sum for 1x regular QA Specialist 60 TOTAL WORKING HOURS (AVERAGE) 800 MAXIMUM WORKING HOURS (AVERAGE + 25%) 1000
The sample above is an estimation of a two-month project, involving 4 software engineers (2x senior + 2 regular), 2 QA specialists performing manual tests and User Experience consultant, involved on average 15 hours/week and Project Manager. The figures reflect the historical data coming from previous projects.
An experienced software development team should possess the ability to estimate it’s involvement and widely leverage data and experience gained during past projects. The team (provider, software development company) should also dedicate possibly suitable engineers and designers for the project. This requires having a deep insight into their professional experience, known technologies, etc. Next paragraphs will put some additional light on this field.
The value of appropriately skilled software engineer
Hi, I have a monolith database which has very low performance, and I’d like to move it to Microservices.
Our core product needs to add some additional features and API integrations - can you help?
Last month we have received a certain amount of investment for our lifestyle-driven app. We’re considering React Native and Django as backend. There might be some UI/UX consultancy needed. What is your timezone?
Many successful relationships begin with a simple line like those above. However, delivery will take a few months and before that many things can happen. A software development team must display great acumen and generally keep their eyes peeled (actually, they need to do that all the time, but it’s a topic for a different article).
After recognizing the needs of a stakeholder, it’s a must to dedicate engineers that will have relevant skills and features like:
- knowledge of technologies, frameworks, and libraries (e.g. expertise in Angular 1 vs Angular 2.x) ;
- experience gained during projects for a specific industry, like Fintech, EdTech, Hoteling & Accommodation;
- experience gained within projects of a specific size and team setup (i.e: conducted by a solution architect, developed by 2, 6 or more engineers);
- responsibility for the API tests, regressions, automated tests;
- awareness and general experience with the agile methodologies like scrum and/or scrumban;
- management and backlog related responsibilities;
- generally good commitment, motivation, and dedication;
- communication skills and practices.
More than code - the role of a software developer
Verification of the skillset and technological acumen can be performed by test, tech calls, by checking the engineer’s GitHub profile and the vendor’s works. References provided by the previous clients are also a great asset.
Accompanied by other specialists (project managers, User Experience designers), a skilled engineer is able to prepare an estimation for the requested project and support the product discovery processes. The developer pays a great contribution even at the pen & paper stage, with many unknowns. His presence can eliminate some technical blockers, underline eventual risks, suggest solutions.
A software engineer involved from the discovery stages will have a great comment regarding the project itself. Such an asset can’t be substituted by any documentation. It also secures good performance from the very first sprint.
Assuming that the backlog of the project has been established and the main goals have been defined, the next step is to compose possibly suitable scrum team for the project. A balanced composition of the team results in a high performance and effective delivery. Experienced teams possess knowledge about such aspects as the potential involvement of:
- UX designer (which can limit and improve frontend devs performance)
- Quality Assurance (which can limit regression and bug fixing of the whole engineering team)
- Scrum Master (to allow the team to focus on the tasks)
- other roles (depending on the specific project’s nature)
RoleTime Backend Developer 29 Frontend Developer 78,5 UX Designer 35 QA Specialist 37 QA Specialist 37,25 Backend Developer 80 Project Manager 52,75 Frontend Developer 80
The table above displays the real involvement of each team member during the 2-week sprint in a 12-months long commercial SAAS project. The team has been working on the core product of a foreign stakeholder, playing the role of product owner and designer, following scrum principles. Significant involvement of a User Experience designer helped in prioritization and implementation of the designs, which saved many working hours of frontend engineers.
How to validate the effects of the software house’s work?
Depending on the introduced Agile methodology: scrum, scrumban or other, there are several ways to measure the progress of the projects and the performance of the team. One of them is to compare the accomplished and declared tasks on the scrumban board - not meeting the expectations might be considered as underperformance of the team or too optimistic forecast.
Another aspect is to define a precise definition of done during the project; it’s easy to push a task or epic to the done part of the table, but what if the QA team recognizes issues during tests? Low regression levels must be taken into account while measuring the effectiveness.
Another way is to compare the initial budget with the ongoing spendings and the final budget at the end of the project. Experienced Project Manager must curate the backlog carefully and put into account change control - requirements, which have been adjusted as the project was in progress. Agile methodologies secure flexibility and allow stakeholders and project participants to reconsider and change the requirements when needed. Some sort of change control margin (for example - 15-25%) is considered as a good practice in software development. Changing the requirements might also result in adjusted team composition. A reliable vendor should have the ability to anticipate the needs of covered projects.
Workshops & Sprint 1RoleTime Backend Developer 100,2 QA Specialist 35,75 Dev-review 0,25 UX Designer 18,8 Backend Developer 49,75 Project Manager 45,5 Frontend Developer 35,5 Frontend Developer 81,3TOTAL 367,05
Table #1. Samples below present the fluctuation of the team’s capacity in a distance of 10 months. Initially, the involvement of the UX designer was highly related to the product discovery process. The table displaying the first sprint strongly underlines very low involvement of the QA specialists in the initial stage.
SPRINT 8RoleTime Backend Developer 62,5 Frontend Developer 85,5 QA Specialist 74,25 QA Specialist 38,5 Backend Developer 77,25 Project Manager 42,75 Frontend Developer 61,8 Frontend Developer 88,4TOTAL 530,95
Table #2. The project reached its highpoint as the 1st phase of the product was about to be released. To anticipate the strict deadlines, the team’s composition has been adjusted and the involvement of the QA specialists highly increased. As the business assumptions have been confirmed, the UX designer’s presence eased for a while.
SPRINT 21RoleTime Backend Developer - Frontend Developer 0,5 QA Specialist 30,5 QA Specialist 64 Backend Developer 97 Project Manager 24,5 Frontend Developer 80 TOTAL 296,5
Table #3. Mature team after 21 sprints (44 weeks!) has minimized the efforts to maintain delivered product and focus on minor features.
Samples above present the fluctuation of the team’s capacity in a distance of 10 months.
As we can see, the changing nature of the project might require deeply going flexibility from the team and the ability to anticipate the project’s requirements. It can also fluctuate the team’s composition, involvement and put on hold specific specialists to perform successful delivery.
Right people in the right place
During a team composition process, very important aspects are the awareness regarding business conditions, well-performed and transparent communication, professional experience, maturity, and relevancy. To be fully anticipated, these factors require from the software development team relevant capacity, skillset, mature processes and carefully curated backlog. All in all, behind every success there are the right, talented people.