Here’s a resolution for enterprise executives and IT leaders: This year – as you build your software products and solutions – resolve to give software estimating the focus it deserves. Any improvements your team makes will surely pay off by keeping your software on target.
If you’re not familiar with software estimating, it means specifying the time needed to create a software-based business product or service, which in turn informs and impacts go-to-market schedules and revenue goals. Project planning platforms, budget and financial systems, sales bids and pricing ingest data from these software estimates. Every software initiative needs an estimate to move forward, but the task is widely recognized as extremely difficult, if not impossible.
Still, we estimate
Steve McConnell, the CEO of Construx Software and author of Software Estimation: Demystifying the Black Art, believes people get sloppy about the meaning behind the term estimate. He explains in his blog how that leads to a key error: “One common mistake software professionals make is trying to create estimates when the business is really asking for a commitment, or asking for a plan to meet a target, but using the word ‘estimate’ to ask for that.” Thus, the estimate becomes a commitment to deliver a piece of software by some random deadline. That’s a setup for trouble, and trouble happens. Time and again, software projects fail because of estimation failures in some form or other. Some put that failure rate as high as 40 percent of industry software projects, according to an Open-works blog.
The fact that a software estimate is so important, yet acknowledged as “never accurate” makes estimating a puzzling thing. It depends on a clear understanding of what the software should do, user objectives and the skills of the programmers writing and testing the code — all nearly impossible to predict with any accuracy. Some call it a request to use unrealistic data to come up with a realistic amount of effort needed, calculated in man-hours or money.
Because there are so many moving parts that make up a software estimate, some professionals feel defeated before they even start developing the software. They know what’s ahead and understand the futility. A common practice is to pad the estimate, but by doing that, the estimate becomes inherently inaccurate anyway, so it doesn’t add much value.
It’s not surprising that novice software estimators overlook or miscalculate key areas. When you’re focused on software estimating, be sure to account for important areas such as these:
- Engineer experience, availability and productivity.
- Unforeseen defects, problems and last-minute requests.
- Learning, briefings and ramp-up period.
- Unanticipated testing.
- Scaling, performance and maintenance issues.
- Architectural flaws.
- Time for R&D, design, architecture and prototyping.
- Administrative and other related non-engineering work.
- Time needed for wireframes, visual design and UX testing.
- Enhancements and improvements requested by actual users of the software.
Software estimating and your outsourced team
If you outsource your software development, it’s tempting to just throw the estimating problem “over the wall” (or ocean) and let your offshore service provider figure it out. But how do you judge their estimating skills? That’s a serious level of responsibility to abdicate. Even if the supplier writes your software for a fixed-price bid, can you tolerate any delay if their estimate turns out to be badly off? There’s too much at stake to miss the mark. The bigger the software initiative, the better the estimate must be, but it’s also harder to scope at that scale. To circumvent this, make sure you work with a fully vetted or certified outsource provider for your software development, to help ensure the software estimates are more accurate.
A key advantage of outsourcing to experienced software developers is that their knowledge base is very deep. From their involvement in hundreds of projects or more, outsourced software teams have a broad foundation of data to draw on for much better estimating across a variety of software initiatives. There’s a consistency of trust, process and learning across teams that’s independent of the initiatives themselves. Good software development providers accumulate a trusted knowledge base that feeds into estimates and improves them over time. In-house teams don’t have that same exposure to many different situations, which can make their software estimating more challenging and unpredictable.
An estimate you can trust
However, while outsourcing supports better software estimating, a company should never make an outsourcing choice based on price alone; that leads to a less-qualified team, and the software initiative will likely overrun anyway (thus, the software estimate doesn’t really matter).
In the end, it looks like the best resolution for the new year could be to turn software estimating into the tool it was meant to be: one that keeps your software development on schedule. One way to do this is by outsourcing software development to a world-class team that’s highly experienced in software estimating. Another method is to focus on the often neglected areas listed above as you’re creating your own software estimate.