Skip to main content

Estimating Agile Projects: Part II

In part I of my blog posting on estimating agile projects, I discussed how a prior employer attempted to use waterfall techniques to ensure that customer's projects were delivered on time and on budget. In the end the waterfall project management techniques added a lot of overheard with negligible benefits. Of course this was just one company's experience. Having said that, I worked for several more companies that also used waterfall techniques and those techniques rarely resulted in software projects that were on time and on budget. On the contrary they added a lot of overheard and did little if anything to improve the quality of the software.

Within the last few years agile practices, including Scrum, have become common place in software development. I first used Scrum about seven years ago, and immediately saw the benefits. The focus was on producing usable software, while detailed specs and projects plans were no longer needed. At the time I worked for a company that was producing software that was to be used internally to the organization. We were creating large, complex systems that took months to develop. Most importantly, we were building the project in small increments that allowed the business to immediately use what we developed. While at the onset of the project it was difficult to know how much time was needed to complete all of our systems, the business leaders were happy because we were constantly producing value.

Fast forward a few years and the majority of the companies developing software are using Scrum or some agile variant. The benefits are clear, although there are some tradeoffs as well. In traditional waterfall the entire project is mapped out, from start to finish. While in my experience waterfall projects are rarely on time, there is an attempt to know exactly when the project will finished. Alternatively in Scrum you don't claim to know when a set of features may be finished, beyond the current Sprint. Even then it's accepted that there are enough unknowns that a lot can change in even a two week Sprint. Essentially no guarantees are made.

How does this work for companies that develop software for external customers? Customers want to know how much something will cost them and how long it will take. Of course this is not an unreasonable expectation. At the same time, it's accepted in agile that you simply can't know how long a project will take. There's no attempt to account for everything that will be needed, priorities and scope are accepted as things that can change. Simply put agile practices don't fit with fixed priced, fixed scope projects. (To be fair many companies come up with their own waterfall/agile hybrids that attempt to do this, but there's very few success stories out there.)

So the question remains, as a company wanting to obtain business what do you do? At the time of writing this blog posting there is no commonly excepted answer to this question. The reality is that it's a hotly debated topic and it's a problem that I will attempt to address in this posting. I'm sure that not everyone will agree, but if someone has a better answer I'm all for hearing it.

One of the main ideas behind Scrum is that you constantly create potentially shippable software. Another way to state it, your goal is to constantly deliver software that makes your customer(s) happy. As long as you produce something that they can see, use, and like, chances are they will want you to continue to do what you're doing. If that sounds a little too idealistic, it's because usually it is.

Ultimately building software is a partnership between the technical and those that have the vision for the product. Often a customer might have a rough idea of what they want, but they still need someone to walk them through the process. Essentially this could involve, for a lack of a better word, a lot of hand holding. Even if the customer has very detailed plans, chance are they are not familiar with software development. Someone familiar with product development needs to work with the customer to help bring their vision to life. This can involve white boarding, exercises to capture requirements as user stories, and relating feedback for features that have been delivered. Informally I'd refer to this individual as the Customer Manager.

It's also the Customer Manager's job to help ensure that the project moves forward. Often customers may focus on small details, and forget the bigger picture. While it's ultimately the customer's decision on what to focus on, it's the Customer Manager's job to remind the customer of the key features still remaining and the potential budget spent on reworking a feature. Essentially the Customer Manager is the glue between the technical and the vision. The job is challenging, may result in occasional friction, and is essential to the success of the project.

Of course the customer plays a significant role in the success of the project too. And while a customer has their choice of who they do business with, a company would be wise to also pick and choose the right customers for them. As was stated before, it's a partnership and a unsuccessful partnership will most likely result in an unsuccessful project. While it might be nice to "seal a deal" on a sale without having to consider these factors, the ultimate measure of success is the quality of the product. At best a poor product will result in a dissatisfied customer; at it's worst it can result in a withholding of payment, possible legal action, and a potential hit to your reputation.

Now there's still the topic of convincing a customer that this is the best way to move forward on a project. Essentially you're asking them to trust you, and believe that you have their best interest in mind. Realistically that's a tall order and the topic is simply too large to get into for now, but makes a great topic for a future bog post. All that I'll say for now is that many businesses rely on their reputation and their past successes to instill faith in their customers.

So to reiterate, it's all about managing the customer, their expectations, and most importantly your company's relationship with them. It's a far cry from trying to document every possible detail imaginable ... it's actually closer to being the opposite of that mentality. To put it another way, customer collaboration over contract negotiation.

What are your thoughts? Is this perhaps a bit too idealistic? Regardless of what you think, I'd love to hear your feedback. Until next time.


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