As a software engineer, one of the most interesting and challenging tasks is performing estimates for presales. This is crucial for identifying and setting the right budget and resources for a project. Most companies prefer to embark on something new with, at the very least, a high-level understanding of the forecast, making presale estimates invaluable.
The first step in this process is forming an estimating team, comprising developers, QA engineers, business consulting team members, project management team members, and experienced architects. When faced with such requests, the initial action is to identify resources/engineers with similar or related domains/projects within the organization, seeking expert advice for this new challenge.
In the initial stages, stakeholders often have a vision or dream about what needs to be done. However, during presale estimating, it's crucial to identify realistic requirements, akin to separating water from milk. This technical challenge demands engineers to provide the correct estimate, the most challenging and vital aspect of the process. When a customer requests an elephant, delivering a bull is not an option. The complexity arises from different stakeholders having varying perspectives on what needs to be done. In scenarios where detailed requirements are not provided by the client, the estimating team must create a process to identify requirements, involving several brainstorming sessions to clarify them.
Understanding the project's nature is crucial, with different project types requiring distinct approaches:
- Totally new ground-up development: Understanding the customer's domain and requirements through meetings and Q&A sessions with the client's management team is essential.
- Feature enhancement: Understanding customer domain and requirements through meetings and Q&A sessions with the client's management team, along with the technical engineering team's input, aids in gaining a high-level idea.
- Integration: Identifying customer domain and requirements is crucial, followed by an investigation of the integration platform to understand its support and limitations.
- Support and maintenance: Gaining a proper understanding of the existing system and acquiring knowledge transfer from technical teams is essential. Estimating on a time and material basis, along with a clear understanding of SLAs, is beneficial.
Once the presale estimate is initiated, especially if based on new technology or a totally new domain, performing a few proof-of-concepts (POCs) is recommended to identify the high-level effort required.
During the estimation process, there are two possible scenarios:
- Another engineering team within the organization might already be developing features for the client.
- The project could be entirely new.
Leveraging in-house knowledge is beneficial when other teams are involved, involving multiple rounds of knowledge transfer (KTs), Q&A sessions, and review sessions. For new projects, engaging with the client is crucial, ensuring not to waste their time. After the initial discussions, preparing questionnaires, risks, and assumptions and clarifying them with resource persons is important. Once all required information is gathered, preparing a high-level estimate and reviewing it with domain experts, senior developers/architects, and the business consulting team is essential. Modify the estimate based on review comments before presenting it to the client.
Once all requirements are set, filling in estimating values is possible. Using estimating techniques like the three-point estimate (3P) is recommended for optimal values. Importantly, listing down all assumptions, risks, and design notes alongside the estimate is necessary, acknowledging that it's not feasible to perform POCs for all scenarios. Performing several rounds of reviews with the team, domain experts, other experts, and finally with the customer ensures a well-refined presale estimate. This comprehensive approach aims to facilitate the successful execution of presale estimates.


