There are a lot of factors that can slow down the software development process. The most influential one is developer productivity, which is affected by many elements, including development team size, number of tasks, time given to do all the tasks, and management style.\n\n\nIn this article, ProCoders’s project managers Dmitriy Kunev and Tymur Chornyy will tell you how to estimate software development time so that the deadlines aren’t violated, and a project goes like clockwork!\n\n\n\n\n\nWhy Is Software Development Time Estimation Very Great?\n\n\nSoftware development is complex. The process involves many stages and requires several people to work together, which can create issues in communication and coordination. Because of that, software development life cycle time estimation can predict, solve and even help avoid different troubles that may appear during this complex process.\n\n\nAnother reason why time estimation techniques in software development are worthwhile is that it gives time for developers to learn about new technologies or languages used on your project. This means that even if developers have previously worked on similar projects, they may still need time to get up-to-speed with the new technology before beginning your project. Additionally, it may take time for your team members to become familiar with each other to work effectively on your project (including working remotely or communicating via video chat).\n\n\nAdditionally, it gives some time for developers to learn about your company’s culture and processes before they start working on your project.\n\n\n\nAt ProCoders, we have a Discovery Phase service during which we estimate the time for the whole project. We know that our clients usually want to plan everything before development even started, so we are trying to provide the most reasonable practices to do just that. Nevertheless, as it was already been said, software development is full of unpredictable situations, so these assessments have their own accuracy limitations.\n\n\nHow to Estimate Time for Software Development?\n\n\nMany different software development time estimation formula, methods and techniques can be used to estimate the time needed for software development (and sometimes even to estimate the cost of software development). However, ProCoders uses and recommends Scrum, which refers to Agile software development methodologies and uses an iterative approach to development. Each iteration has a fixed period of required time during which the team adds certain functionality to the existing one.\n\n\nThe iterative approach is expressed in sprints with a clearly stated start and end date. The prepared functionality is deployed to the production server at the end of each sprint. This iterative approach also allows you to calculate software development time of a particular functionality using two metrics – story points and velocity (the speed of the development team or, in other words, how many story points per sprint the team completes on average) of the team as a whole.\n\n\nIn estimating software development time, story points are a value not tied to the task time (which most often confuses beginners), although there are cases when they are tied exactly to the time. In the case of ProCoders, this value is tied to task complexity. Usually, a project uses a series of numbers from 0 to 8.\n\n\n\n0 story points – the task is extremely simple and is performed quickly (less than an hour).\n\n\n2 story points – a standard task (average day of a software developer’s work).\n\n\n4 story points – a difficult task. Its requirement is additional time for research and implementation.\n\n\n8 story points – a very difficult task, the implementation of which requires thorough research and consultation to select an approach and possibly additional libraries.\n\n\n\nA team’s velocity is the sum of the story points of all tickets the development team completes during the sprint (the sprint is fixed in time).\n\n\n\n\n\nVelocity can be misleading because if, say, a team’s velocity is 34 story points on average, then an ordinary person might think that a team can be given 4 tasks for 8 story points and one task for 2 story points to cope, but this is not true. Sometimes it is tough to estimate the work duration, which can be from one day to two weeks, with all the emerging difficulties and pitfalls. Hence, it is customary to evaluate the complexity of the task and not the time to complete it. Also, do not forget that experienced software developers will cope with the same task of 8 story points faster than a junior developer. Any team tries to decompose such tasks into smaller ones of 2–4 story points each.\n\n\nHow to Double-Check Development Time Estimation and Avoid Overtime and Bootstrapping\n\n\nTo double-check time estimation for software development and avoid overtime and bootstrapping, you should:\n\n\n\nfind a team leader who would be responsible for development time estimation;\n\n\nhold daily and weekly meetings;\n\n\nhold retrospectives.\n\n\n\nFor example, at ProCoders, an experienced developer–team leader is in charge of estimating time for software development. After a general assessment of the entire scope of work planned to be submitted for the next sprint, developers can assign tasks to make changes to the estimate. All edits and clarifications (grooming) are accepted before the general Sprint Planning meeting, where the work required for the next sprint and all necessary adjustments and clarifications are discussed. After the sprint start, changes to the scope of work for the current sprint are prohibited.\n\n\nAlso, at a retrospective, all problems are discussed (for example, if someone broke deadlines for some reason). If daily meetings are held, the problem is raised earlier, and a team tries to eliminate it.\n\n\nHowever, suppose it cannot be eliminated. In that case, ways to avoid such problems are discussed at the retrospective, where developers evaluate the work during the past sprint and discuss ways to avoid similar issues in the future (according to the Kaizen philosophy).\n\n\n\nSoftware Development Time Estimation Example from ProCoders\n\n\nAt ProCoders, we do not use time trackers. Most often, a customer imposes their own software development time estimation methods.\n\n\nInstead, we use the metrics described above – velocity, story points, as well as an employee reporting at the beginning and end of the working day (e.g., customers get the work plan for the day in the morning and the volume of completed tasks at the end of the working day with the status of the WIP type (work in progress), done\\finished, or a description of a run-time problem). Based on these data, the software developer’s work can be evaluated following:\n\n\n\nwhether they worked 8 hours or less (time markers on messages);\n\n\nwhether they coped with the scope of work for the current sprint or did not have time to complete their tasks;\n\n\ntheir speed during the sprint is above or below the rest of the team’s members.\n\n\n\nThese metrics are reliable enough to avoid installing tracking programs that take screenshots while a programmer is working.\n\n\n\nConclusion\n\n\nThe right software time estimation is extremely important for every business. It has the next benefits:\n\n\n\nit can predict, solve and even help avoid troubles that may appear during the software development process;\n\n\nit gives time for developers to learn about new technologies or languages used on your project;\n\n\nit gives some time for developers to learn about your company’s culture and processes before they start working on your project.\n\n\n\nProCoders recommends using Scrum, which refers to Agile software development methodologies and uses an iterative approach to development to estimate time for software development.\n\n\nHowever, at ProCoders, we don’t use specific time trackers. Instead, we use the next metrics: velocity, story points, as well as employee reporting at the beginning and end of the working day. At the same time, our customers can recommend their own time trackers to be used on their projects.\n\n\nFinally, remember to double-check the development time estimation. Here’re some tips for doing this:\n\n\n\ndevelopers can assign tasks to make changes to the estimate after a general assessment of the entire scope of work planned to be submitted for the next sprint;\n\n\ndaily meetings are held;\n\n\nall the troubles and problems the team faced in the previous sprint can be discussed during the retrospective.