Skip to main content

Estimating Agile Projects


Over the course of fifteen years as a software developer, I've worked for nine different companies. They ranged in size from under fifty employees, to over a few thousand. They spanned many different industries including financial, medical, retail/e-commerce, and custom software development.  While they each differed in many ways, one thing was constant; as software developers we were required to provide estimates for how long it would take to develop our software.

In particular, three of the companies that I worked for were software consulting shops. By that I mean we wrote custom software for our customers. In these cases getting software estimates wrong didn't just make the team look bad; they could be the difference between the company making or losing money on a project. If too many projects were underestimated, it could potentially result in financial hardship for the company and ultimately even layoffs.

The first software consultancy that I worked for was back in 1999. At that time agile wasn't something that was talked about. As far as I know Scrum didn't officially exist yet. A lot of small software shops were popping up, trying to take advantage of the dot com craze. In terms of the specific company that I worked for, they had issues with some of their earlier projects. Often customers asked for changes, but nobody was managing the scope. In most cases a developer took a direct request from the customer, and would simply make a change. There was no detailed, formalized requirements, so there were often disagreements in scope. The customers usually had expectations that were not in alignment to what was sold to them. In short, projects would often go over budget and customers were often unhappy.

Fortunately in those days, enough money was flowing in that our company was able to recover from several bad projects and managed to learn from those early mistakes. What came next was the implementation of processes that today we refer to as waterfall. All new projects had to have detailed requirement documents, that left nothing left to the imagination. This results in requirement documents that were over 100 pages in length, along with images showing exactly what the UI would look like. A change, no matter how small, had to go through a formal change request process. Project managers created gnat charts, that mapped out the details of the timeline. In short, the new process would fix all of the problems that we had before. Except for that they didn't.

Even with the details requirement documents, things would eventually come up that weren't covered. When it came to estimation, even though we tried to think of every possible detail, for projects that lasted several months this was simply not possible. Worse yet, a good chunk of the project budget would be eaten up during the requirement gathering phase, so by the time it got to development we were already late before we started. In the end, I'm not sure if things were any better than before. By 2001 the bubble hard burst, and this time people lost their jobs. When it was all done, the company lost approximately 50% of their workforce, although they did manage to survive.

I should mention that the company was run by intelligent people, with the best intentions. They were following what were generally considered best practices at the time. The post dot com crash was something that was out of their control. The project management practices weren't the sole factor in their fortunes. However, I do distinctly recall upper management making comments  such as "We need to stop losing money on these projects". Even if these were exaggerations, clearly better practices could have resulted in more profitability and better overall financial health for the company.

Of course today we have the concept of agile software development, including Scrum. Lots of lessons were learned the hard way, and I'm sure there were many companies that went through these kind of pains. There's still some nonbelievers out there, but today they are a minority. However, despite all of these gains we still are expected to estimate our projects. Customers want to know, rightfully so, how much it's going to cost them for a custom piece of software. Despite this, proving an upfront number that represents the total cost of the project is not the answer.

In part 2 of this blog posting, we will review why estimating the entirety of an agile software project is not a good idea. Instead it will discuss how best to manage these projects in a way that will provide the most value to the customer, while being mindful of their budget.  Ultimately the goal is to keep your customers happy,  as a happy customer will most often result in more business.

Until next time, stay frosty.


Comments

Popular posts from this blog

Value and Quality over Schedules

According to a study by CEB Research, 70% of software projects are delivered on time, but only on 38% meet stakeholder's expectations. In most cases the people that use your software will not even be aware of internal project deadlines. Case in point, think of all of the software the you use everyday. You are rarely aware of what the due date was. However, what you do notice is how well the software does it's job. It's it's of low quality, you'll very likely notice right away. Even if it appears to be of high quality, if it doesn't provide any major value to you, chances are you still stop using it. With that in mind, then why do many software projects today have a set scope and a hard due date? When building software for a customer, it's only natural for them to what to know what exactly they are going to get and what is will cost them. That is a very reasonable thing to want to know. Even when developing software internally, there are often similar expe

The Retrospective From Hell

Over the last 17 years of my career I'd like to think that I've learned a lot. I've learned from positive role models, from experience of what works well, by studying my craft, and from my own trials and tribulations. However, I believe the lessons that I have learned that had the biggest impact is learning from failures. One such failure occurred at a previous employer. By telling the story of a past failure, we can reflect and see what can be learned from it. No names will be mentioned, no embellishment or poetic license will be will used. As a matter of fact, I will make every attempt to be objective and accurate as possible. The truth of the matter the story doesn't need it; it speaks for itself. Some time ago I worked for a company that, among other things, had a software product. There was a small team of software developers, and someone that acted as the manager of the team. I was brought on board, as a software engineer, to help with the software product as

Let's Get Moving With Software Development!

Recently I was reading a discussion on Twitter about software projects, and it reminded me of something. Many years ago I had a conversation with my dad about moving. After just having moved, he wasn't too pleased with the moving experience. He mentioned that there was essentially two models that movers operated under. The first was you paid a fixed price for the move. I don't remember the exact details, but the movers quoted a price most likely along the lines the square footage of the house, or some similar metric. The other model, was simply to pay the movers for their time. If it took them 20 hours to complete the move, you paid for those 20 hours. Now the catch was, as he described it, if you paid for a fixed price the movers didn't really put a lot of care into the move. They simply wanted to get the job done as quickly as possible. I seem to recall that if they broke something, they would reimburse you. However, that wasn't a pain free process. More importantl