Monday, October 21, 2013

NoSQL and #NoEstimates

Vasco Duarte asked #NoEstimatesQuestions on Twitter some time ago and collected them to his blog (part Ipart II). One of the questions I asked was: Is there some analogy between SQL/NoSQL and Estimates/#NoEstimates? Vasco gave a short reply and promised to get back to the subject in a later post.

I forgot the whole question but remembered it again last week when Antti Sulanto wrote a post where he tells why he doesn't like #NoEstimates. Which reminded me of Ron Jeffries' excellent post about NoEstimates movement. What's similar for both of the posts is that they seem to be a bit worried about the extreme tone of the word No.

I see it a bit differently. I see it somewhat in the same way as the No in NoSQL. All of you who have read about NoSQL are aware how for example Twitter cannot and doesn't have to rely on traditional transactional and relational storage solutions when taking account the huge amount of data they are storing. So NoSQL doesn't mean that you should never use relational databases and SQL. NoSQL just offers superior solutions for certain kind of situations.

In the same way I'm interested to understand better what is software development like when we don't estimate. I'm not looking for software development world where we don't ever estimate in any situation.

But! If I see a case that would be typically solved with estimates, I don't want to start with accepting that as an only or best option. I rather try to understand what could be a better way. Because I am one of those who have seen how estimates have wasted a lot of valuable time without adding much value and how estimates have been used to make decisions when something else was rather needed. Neither I want to say that #NoEstimates is a stupid hashtag because there will always be cases where estimates provide value.

My personal work history contains four projects where our development team didn't estimate the work beforehand but rather focused on the flow and possibly measured the actual throughput and/or lead time. Experiences from those projects encourage me to continue exploring the alternatives to estimates. Without worrying too much about the word No.

5 comments:

  1. When you perform the work, measure its throughput, and - this is critical - the arriving work is statistically uniform and the performance of the work is statistically uniform - then Little's Law is applicable. You them have all the information needed to answer - "how long will the project take with the work load you have in the queue?" Or even, "If this work load arrives and is similarly structured, how long will it take.?

    You've got all the tools needed to answer questions about the future performance of the project. If that's called No Estimates, it's really called, Kanban in the manufacturing sense of the shop floor process.

    The estimate at completion and the estimate to complete, many times needed by management is readily available.

    ReplyDelete
    Replies
    1. For me they key element in understanding what #noestimates is about was when I realized that the word "estimate" can be defined in many ways. In the traditional sense you generally give an estimate based on your knowledge and gut feeling and some idea on how long similar projects have taken in the past. The problem with this method is that multiple individuals can arrive to wildly differing conclusions, none of which is more "right" than the other.

      My understanding is that with #noestimates you don't rely on subjective estimates like that, but instead you rely on hard data about the team velocity and throughput. Given the Wiktionary definition for the word "estimate", "A rough calculation or guess", you then obviously don't estimate in that sense of the word. Instead, you rather make a prediction or prognosis. Given the same data, multiple individuals should arrive to pretty much the same conclusion with their predictions. So, that's no estimates.

      Delete
  2. The words that we use aren't irrelevant. They build the world around us and modifies our minds how we see the world. By calling it #NoEstimates, the term "estimate" becomes negatively value-laden (arvolatautunut? I don't know if that's the correct English term). I see future conversations:

    So you're using estimates... isn't that a bad thing? I heard of this #NoEstimates...

    Why not just continuously improve the process and adapt by the situation? Why invent these hype words that attack one particular thing?

    ReplyDelete
    Replies
    1. I totally agree with you that words are important. That's why I have been thinking lately what #NoEstimates actually means. Initially it was supposed to be a hashtag that ties together all the discussion related to the criticism towards estimates and estimating. Nowadays I see it being used (I've done it myself too) also as a process or state. I've started to like more of the original meaning: it's just a hashtag. In other words, "we don't estimate" instead of "we do #NoEstimates".

      But I'm not saying that the "No" has no meaning at all. In your blog post you say that "we need estimating". The thing is that our team doesn't need estimating. So it really is No Estimates for us and I'm happy with that. And the business is happy as well. When I share with you that kind of experiences, they naturally go under this hashtag.

      I also agree with you that continuously improving and adapting is actually the key. That's how we got rid of estimating. Not because someone was talking about #NoEstimates on Twitter. However, I see value in attacking this one particular thing because there's so much waste related to estimation. If you see much more waste somewhere else, you are always welcome to start discussion around that topic. On the other hand, I don't believe that just speaking on very general level (#DontDoStupidThings) would have gained so much attention and positive movement as what #NoEstimates has done. Not saying everything's been just positive but IMO there's been much more positive than negative things.

      Delete
    2. I guess it's easy to mistake #NoEstimates for a process given the capitalized words. It's like using #CocaCola versus just #cola, which can stand for any brand. Notice how I used the form #noestimates in my reply to Glen B. Alleman above.

      Delete