No two projects are the same; each is unique in what it sets out to achieve and unique in the myriad of parameters that form its existence. Often, what appears to be a simple problem on the surface is much harder or technically challenging to implement in reality. We come preloaded with our own set of knowledge, experiences, values, expectations, attitude to risk, and ability to adapt. Writing good quality software is bread and butter for senior engineers; creating awesome software products can be a much harder endeavor, for all involved.
The timing, return on investment and benefit delivered can make, shake or break your business. Can we predict our costs? What will it cost to create the product we want? When can we launch? Will we get a quality product for our investment? Will it grow with our business? Will it deliver business value?
Agile Testing Metrics to Measure the Performance of Software Testing Process
So, how do you go about estimating the size, duration, and cost of a project? Traditionally, using non-Agile practices, software projects have sought to fix functionality or scope and to let time and cost be a variable. This causes problems:.
How do you know that the functionality you fix at the outset of a project really is the functionality that serves your business or customers best? Increased cost is often a product of unidentified risks or changing requirements, which means we have to add team members to do more work in the same time frame or keep team members longer.
Neither is desirable. When time is a variable, we lose control over the position in our market. Perhaps we miss an important industry date or our competitors get their product out before us, thus losing any competitive advantage our project may have had. There are many other outcomes of variable time and cost, which are often negative and undesirable. Cost is a product of time and people team members. Add more time, and you add cost for employing people for longer.
Add more team members, and you increase the cost to deliver the same business value. The things we really want to avoid. This is why Agile principles believe in fixing time and team members and allowing the scope to be the variable component. Each release is a work package that is priced accordingly.
As a work package is completed, future work packages are re-estimated based on what we have learned from the previous one. Early termination - This allows the customer to seek to terminate the project early if enough of the product has been delivered and there is no further ROI to be achieved by retaining a project team that will only continue to deliver marginal gains. This clause is typically allowed at any time and is valid as long as the project team and customer have maintained a strong, trusting and close working collaborative relationship.
Search Our Blog Articles
The benefit for the customer is that the project will finish early, having delivered all the valuable features necessary to make the product viable. In return, the supplier is paid 20 percent of the remaining contract value and offsets the risk of retaining staff. Flexible changes - Change is a theme that runs strong through the veins of Agile software delivery.
We expect to not know everything we need to make a product successful from the outset. So, we promote change, based on relevant data and feedback, to ensure that the right product is delivered.
At the end of an iteration, changes can be swapped out for old features no longer deemed necessary or a priority. As long as the change is of equal value, there is no further cost. If the change is of lower value, additional work can be identified or pulled forward from the remaining backlog. This clause is valid as long as the project team and customer have maintained a strong, trusting and close working collaborative relationship throughout the project. Additional work - Through the life of a project, more features may be identified that would not be achievable under the existing fixed price contract.
For this scenario, either additional newly priced work packages can be added to the end of the project or revert to time and materials. Ranged estimates - There are two ways that estimates can be ranged in an Agile project contract: a range of duration or a range of features. A range of duration allows for an estimate to say that the project or work package will take 12 to 16 weeks for a given set of scope.
At Toptal, we prefer to range features across a range of story points, keeping the scope as the variable but promising to deliver a minimum level of value to the customer within the fixed time frame of the work package or overall project. At Toptal we work closely with our customers and engineers to employ techniques that promote stakeholder confidence in project duration and costs.
We work at continually elaborating and adapting planning from an initial high level down to more granular detail when it is appropriate and necessary to avoid waste and to enable managed change. At the outset of a project, we know least about its eventual outcome. Vision and Objective setting What do we need to build?
SEER By Galorath | Cost Estimation Software | Galorath Inc.
What do you need to achieve and what are your business objectives? Understanding these questions allows us to set the scale of the project. Do you need a prototype to test an initial idea, concept or technology?
Have you identified a clear proposition that has been tested with your market and are you ready to build your first Minimal Viable Product MVP? Or, are you scaling your existing business or product to take it to the next level? MoSCoW analysis MoSCoW analysis is a technique that, put simply, helps to identify what is really necessary to make the product viable and what is a nice to have.
However, identifying these now can help to set in mind the potential scale and size of the product for the future. These are the minimums you need to ask yourself: What will it take to create the product we want? Does this align with our business strategy and finances? Our engineers are handpicked for the specific project requirements and work together with a project manager to derive at least one technical solution, an estimated duration that delivers the known scope and an estimated cost to complete the project.
As we mentioned before, at the outset of a project we know least about what will be delivered. We deliberately keep the features and scope vague, since to do otherwise suggests we know exactly what is required. The proposal is the first tool in elaborating the duration and cost of a project.
Once a proposal is accepted, we can move forward to provide a fixed priced quote. The next level of estimate elaboration is to create a release plan that will deliver a range of features in a given timeframe. MacDonell and Shepperd also investigated growing portfolio in comparison with leave-one-out cross-validation based on least squares linear regression and a WC dataset. Their results suggest that these evaluation approaches lead to different results, even though their analysis is not based on statistical tests.
Overall, these studies show that it is important to consider chronology in order to better reflect the SEE procedure used in practice. Even though the studies presented in Sect. As this approach creates windows based on the number of previous projects to be included, it can be referred to as fixed-size window approach. In Kitchenham et al. This means that each window had a fixed size of 30 projects. This approach was proposed due to the observation that the best fitting regression model changed substantially over time in their case study.
Their work revealed that SEE models trained on fixed-size windows can provide significantly better predictive performance than the growing portfolio approach Lokan and Mendes a. However, whether or not fixed-size windows were beneficial depended on the window size. Larger windows from 85 to projects had a positive effect on predictive performance in terms of magnitude of the relative error, but led to similar predictive performance in terms of absolute error.
However, they used linear regression based on input attributes selected with Lasso Tibshirani instead of stepwise regression.