There are two popular adages in software development that people use when talking about software estimates.
Hofstadter’s law states that it always takes longer than you expect, even when you take into account Hofstadter’s Law
Parkinson’s law states that work expands so as to fill the time available for its completion.
Hofstadter’s law suggests that you will always underestimate even if you add a buffer. On the other hand, Parkinson’s law suggests that if you give more time to a task it will take more time to do it. In short, we are doomed either way. So, let’s not do any estimates. #noestimates FTW! The reality is that all customers will ask you for estimates and timelines before they award you with a project.
Estimates are required for:
- Making a business case for the new project;
- Knowing when the project will be delivered;
- Allocating money or teams of people for some amount of time;
- Working backwards from the end date.
One of the least favorite parts of my current role is to provide estimates for new software development project bids. In this post, I will not be talking about sprint estimates or release/milestone estimates. Instead, I will talk about product development projects. These usually involve uncertainty, ambiguity, and customers not sharing/knowing complete details. Examples of such projects include a new mobile banking application, omni channel customer onboarding insurance app, a back office customer 360 degree platform, oracle to postgresql migration (involves stored procedures as well), reengineering a mainframe based pricing engine to modern real-time pricing engine, and many others. As a side note, I also actively participate in their architecture and solutioning.
Continue reading “Doing Software Estimation within constraints of Hofstadter’s law and Parkinson’s law”