Software Estimation: Expectation vs. Reality

The Challenge: Can We Predict Delivery Timelines?
Can you give an estimation for delivering new API, new version of mobile apps, new Web page? These are the most frequently asked questions in our profession.
Having more years of experience should be a factor to make it easier to estimate it? Working on a project for a couple of years can help you out to do better estimations and to do it faster? If you had a chance to work on a long-term project and a very complex one, would you have the courage to say with certainty that you can do a good estimation and keep up with it?
Two years ago, we were given a task to deliver a new API and new mobile apps which should rely on that same new API. For this purpose, a special “task force” has been assigned.
The start of execution is pretty much the same as usual: a group of Devs have gathered on the initiative of people who are in charge of different processes in the company, and we have discussed possible solutions and how to deliver them. Then, we split work among people in that “special task force”.
That task force was formed of:
- 1 backend Dev was assigned to work on the new API who has been with a company just for a month, but was involved in the process of finding a solution for the new projects
- 2 Devs were assigned to work on building the look of new mobile apps: 1 Dev was working with the tech stack that has chosen for new mobile apps, but has just joined the company and 1 Dev who was working on older mobile apps, but did not have an experience in the new tech stack
- 1 Dev was in charge of configuring new mobile apps for automatic delivery and afterwards was switched to the API team, because this Dev is primarily backend Dev
- 1 Dev was assigned to maintain the old mobile apps and do the role of Scrum master – this role seems small, but it is not.
- 1 Product owner – who has joined the company just couple months before this project has started
- 1 hell of an architect – a man with a great vision, experience and great ear for anyone who needed his support. Note that this Dev has not only been performing a role of lead architect for all 5 teams at that point, but also he was doing a work on backend
7 people working on 2 projects that need to deliver functionalities that have been implemented in a span larger than 10 years. One would say that sounds reassuring since the business logic should be the same, right? Does allocating 7 resources seem extreme to you?
Now, it is time to share some more details about this journey.
Two Devs were doing their tasks and learning a new tech stack, a new framework. Two Devs were doing their tasks and were learning business logic. A lot of learning curves, you can say. Everyone was taking a part into collecting and contributing as much as it is possible to deliver features that would make a final product more desirable for clients to use. A couple months after the project has started, the task force has lost their Product owner. After that, there have been more changes in the team dynamics such as switching of the teams for one of the Devs, moving from mobile project to API, arrival of a new member to work on mobile apps, arrival of one more member in the API team. And last, but not least, both teams have managed to get their own Product owners. So many changes, so much agility in both teams.
Now, to ask it again: what is your opinion on how long it takes to deliver the new API and new mobile apps or rather, how long has it taken for this team to deliver the described product? Do you even think that the product has been delivered at all?
Believe it or not, with all these changes, it took less than a year to deliver a new API that has been used for building a new mobile app and by external clients, and around a year and a half to deliver the new mobile apps (both for iOS & Android platforms). AND YES! This happened.
My colleagues and I are very proud of this achievement and we are happy to be a part of this client’s success, this story and others to come.
This success has been achieved because of the way of working of both teams. The API team has delivered their product with corresponding documentation and in this period, increased test coverage on backend by 20%. This has ensured the new API to be available for external clients, too. The mobile team has delivered new apps for both platforms, Android and iOS and we have managed to discontinue the old mobile apps in an organised manner. Both teams ensured to establish the best practice in their work and to automatise the delivery. This success has set the great foundation to bring even more features to the product.