Effort Estimating

15 Dec 2023

Estimating Efforts

When estimating my efforts, I consider my prior experience with similar tasks. For example, I invested a significant amount of time in managing and setting up a database during the HACC. As a result, I initially anticipated a similar time commitment for the final project. However, upon closer examination, I’ve realized that the core concept and even the database system are highly similar. The only differences lie in the structure and technology required to read and write to the database. Consequently, I’ve adjusted my estimate, expecting to spend relatively less time on the specific task at hand.

Benefits for Estimating Efforts

I consider effort estimation as the time invested without external help, excluding the duration spent seeking assistance. Therefore, effort estimation establishes a reliable timeframe for when I should conclude individual work and seek external assistance.Often, I find myself heading in the wrong direction without realizing it. Once my actual efforts exceed the estimated time, I stop solely focusing on the task and instead begin researching and considering how others would approach it.

Tracking Actual Efforts

I usually track time using the clock on my computer or phone. For instance, if I start working on a task at 1:00 pm and stop at 2:00 pm, I might note down 2 hours for the task initially and adjust it later. However, this method can be inaccurate due to human errors or missed records. Fortunately, thanks to IntelliJ, there’s a plugin that can accurately track the time spent on coding. Nonetheless, this isn’t sufficient because actual efforts encompass more than coding; they involve research and other external assistance. Therefore, I will add around 25 to 30% of my coding time in addition to the time I spend on researching.

Benefits for Tracking Actual Efforts

I believe tracking actual efforts can be immensely beneficial, particularly when I segment time between researching, coding, and debugging. This breakdown provides a clear understanding of how much time I allocate to each segment. Analyzing these portions allows me to identify areas for improvement and pinpoint my weaknesses. For instance, if 50% of my actual effort time is spent on debugging, it suggests a need for improvement in my coding ability for that language or task. Conversely, if I dedicate excessive time to research, it indicates a need for further learning on that topic.