
While coding is often taught to people on an individual level with very little collaboration and teamwork, in actual practice coding is largely team based. Team efficiency can be influenced by many factors, but team communication and coordination is one of the strongest factors in an efficient team. By categorizing tasks based upon estimated time to complete, as well as difficulty, teams can split into smaller groups or assign tasks based upon these estimates, which leads to a highly efficient workforce. Even though estimating coding can be difficult at first, it may prove to become vital within your career as a software developer.
When I first started coding, effort estimation almost never came up in my mind. I simply sat down at my desk and coded until I was done with my homework. This has led to many nights up at 3 am struggling to focus as my deadlines encroached. However, as I began to make personal efforts to utilize my time more effectively, I found myself making time blocks for coding specifically. This was the first step to estimating effort. Later on, I started to estimate coding rather than just designating time to do so. I have found that I often work best late at night, so I use my effort estimation to plan how much of my best time I will assign to coding. Even though these times are usually off, coding at night gives me the wiggle room to deal with the errors. Even though there are better applications out there for tracking coding time, I would simply use a google stopwatch to time myself coding. In the beginning I only had one to track my coding, but later on my setup evolved to have a separate stopwatch to track non-coding time (ex. research). At the end of a coding assignment, I would log each time separately before using a time calculator to sum the total coding time.
At first, I had no real basis of effort estimation, I would just assign a believable number in my head before going at it and timing myself. My Software Engineering class that I took in college required me to log the amount of time taken to complete coding assignments, as well as hosting timed in-class coding assignments. By utilizing the logs from this class, I began using previous actual coding times to estimate my times for the future. This can apply for everyone who codes. Like John Adams, I believe that practice makes perfect, so another important thing to note is that as you code, you will improve and your time will cut down on tasks you’ve completed before. I found this happening myself in my Software Engineering class. The final project acted as a culmination of everything we had learned, so something that had previously taken me multiple hours only took one or two. If I could change how I estimated coding in the past, I would have tracked my coding and non-coding time separately instead of together.
As someone who now attempts to utilize my time effectively, estimating coding time has been extremely helpful in planning and meeting deadlines. As I stated earlier, I often code at night. In order to not stay up to 3 as I used to, my coding estimates have kept me sleeping at around 12 to 1 am, a vast improvement. Furthermore, I had to work in a team for the final project mentioned earlier. By estimating coding time, we were able to work more effectively, with those assigned longer issues completing less and those assigned shorter issues completing more.
I have not used AI to assist with effort estimation. I believe that you know yourself best, so why ask AI about something you know more about? Even if you paste all your previous effort estimation logs into an AI, it doesn’t know exactly how you think or your habits nearly as well as you do. So when estimating your effort, unless you’re a consistent machine that does all things at the same pace, rely on your own estimations.