How to give precise development time estimations for your feature Imagine the following scenario: Greg is a Front-end developer at a startup. He’s been given a new feature to work on. His manager, Anne, is asking him for a time estimation. Greg looks over the design and ballparks “5 days”. Anne thanks him and goes on to report it to her manager. Greg, much like most of us, did what he always does — tried to estimate the overall time it would take him, and give a very general estimation. The result? Greg started working on the feature but kept postponing the due date because of issues he “couldn’t predict”. He had to work weekends to make time and his manager, Anne, was frustrated with the delay. How could this have been avoided? simple — Greg should have done a proper technical design process before giving his ETA, communicating it better to Anne. ETA stands for Estimated Time of Arrival. In the development world, it often refers to an estimated due date of a project. When asked to give an ETA you are asked to estimate the effort of a task and the subsequent time it will take you to accomplish it. How does an ETA differ from a Deadline?In tech-speak, a Deadline is a non-negotiable date up until which the project needs to be done. There is little room for negotiating deadlines — most of the time they are set by external factors like public release dates, Campaigns, Competition, Board, and various other factors. An ETA is much more flexible and depends on your internal estimation of the feature. As the name suggests, it is an estimation — it can vary and can end up being a bit shorter or longer. That does not mean that giving an accurate estimation is not important; ETAs are relied on for sprint planning and other departments' road maps. Why should I give precise estimations?When you give estimations and follow through with them consistently you are perceived as more accountable, reliable, professional & technically apt. Your managers rely on your estimations — and standing by them means standing by your word. It builds better productsThe process through which you reach an estimation will lead to a better-built product since you take the time to plan it based on code architecture and not make rash decisions due to time restraints or after-thought patchwork. Getting to a good time estimationThe key to giving a good estimation is making the core decisions before development starts, making sure to answer any open questions. 1. SpecEvery feature should start with a proper spec. A spec is a written document, usually created by a Product Manager, that describes the feature in detail. It will usually explain the motivation for the feature and metrics it is predicted to effect. It serves as one source of truth for feature requirements and would describe the user flow and expected behavior of the UI. Starting the technical design process without a Spec is a recipe for trouble since you will be working off of your understanding of the design or off-hand statements- which may not match the Product Manager’s vision. 2. Kick-offA kick-off is a meeting in which the feature is presented to all those who will participate in the development process. It sometimes precedes the Spec which may be created following the kick-off. The goal of the meeting is to present the feature and explain the motivation for it; which pains is it going to solve? which users is it targeting? During the meeting, an initial design or wireframe is usually presented, and the general flow is described. All stakeholders should be present in this meeting — the product manager, designer, developers (Front end & Back end), QA person, BI person, and whoever else is involved. It is a chance for all of those to understand the feature, ask questions, and raise potential issues. 3. Technical DesignThis is where the magic happens. Technical Design is a process made by the developer working on the feature. It will eventually produce a document which details the development changes that need to be made. In the Technical Design document, I recommend writing down the following things which should help you come up with a development plan: Feature description Target users 3rd party tools Current code structure API contract Development changes (Yes, this is the hard part) Mobile / BI / Testing Task breakdown 4. Design ReviewThe Design Review is where your teammates review the technical design that you made. It can be a meeting where you present the design review document to a few other developers, to allow them to give feedback. If making a presentation sounds like overkill, sharing the document for comments will also do. It is sometimes the last chance to make sure you didn’t miss anything and get another pair of eyes on it! Estimating effortAfter you got your Technical Design reviewed and you have the final version, you can start evaluating the overall effort. You should start with the task breakdown- break each task into smaller sub-tasks and evaluate the time it will take you to finish them. Small sub-tasks are much easier to estimate than larger tasks. When you have the list of tasks & subtasks with effort estimation you can sum them up- This is your initial estimation. Consider the average time it takes to get your PRs reviewed. Make sure you add that time to the estimate, along with time for QA rounds, review with the Designer and Product manager, or other processes in your team’s workflow. I would also recommend adding more time if you are delving into an unfamiliar codebase or using a new tool for the first time. Giving a final estimationNow it’s time to take your estimation (let’s say it’s 14 days) and spread it out on the calendar. Count only the business days (no weekends), and take into account short days, holidays, or meeting-packed days where you won’t get much done. There you have it — your final ETA! Communicating the ETAWhen communicating the ETA to your manager or colleagues — use dates and not days. When speaking with dates it is much more clear when everything will be done. I also recommend explaining the release process and if your final ETA is the public release date or an initial release. The push-backMore often than not, you will receive push-backs and raised eyebrows for your comprehensive estimation. This is the case when you give a thought out estimation based on technical design and include testing, PR time, and reviews — it gets longer and more realistic. I believe it is better to give a real, planned-out estimation that may be a few days longer, than a general — mostly mistaken— short estimation, that would eventually bloat and grow. When facing push backs, refer people to the technical design. Explain the process that you have made and what is included in the feature. Ideally, involve your manager in the Design Review so they can see exactly what comprises the effort. Good luck and enjoy the process! Note: This is a summary of a Talk that I gave for the Israeli Women-in-Tech group “Baot”. |