Throughout the semester, time-tracking has became a part of my routine for classwork, the in-class WODs, homework, and now the final project. Since I already developed a habit of tracking my time for classwork from the beginning, having to track my progress and task during the final project was just a part of my routine.
Usually I would want to over estimate my actual time for the issue, so that whenever I plan on working on the project, I would carve out a bigger chunk of time to avoid any other conflict it may have with my schedule or plans. Thankfully, I have been able to work on the issues at the end of the day or when I do not have anything planned to worry after. To me, estimation is a way for future me to plan ahead the time to work and focus on the project.
Overtime, my estimation got better, since I understand the issue, its requirements, and what I need to do for it. Since with the help with AI in the project, one mistake that I usually make is overestimate the time AI takes to help me, especially with GitHub Copilot. Before the project, I used ChatGPT to assist me during the WODs, so it took longer to think about prompting and giving it the context of my code (such as how different files are connected to each other in which ways), but with GitHub Copilot, the agent could iterate through my whole repo and give me direct answer without me needing to prompt much.
It is difficult to distinguish non-coding time and coding time since with the help of Copilot during the project, so I decided to treat the time I spent revising, editing Copilot suggestions, and debugging with AI as coding time, while asking for its idea and researching how to implement a functionality with AI or Youtube non-coding time. Something that may cause an inaccuracy in my time tracking is that sometimes, Copilot takes a long time to think and testing the validity to push and merge of my changes with npm run build may takes longer.
Since I switch between coding and non-coding quite often, I usually use the timer on my phone to time each duration and write how many minutes whenever I switch to another task. I would write the start time at the top, 2 columns: coding and non-coding, then end time at the bottom of the sheet.
Start time
coding | non-coding
x min | y min
z min | u min
|
|
|
total coding non-coding
End time
I found this method pretty usefull, since i could see my break points easily. If I would take a break, the tracking would also help. I know that there are tools my classmates would use like Waka time where they track your activity directly through your repo, I think they are helpful and convinient, but they do not work for me, since I like to percisely document my break points bit by bit since I see more accuracy.
I am aware that my estimates are always off, but I treat my estimation as a tool for future planning to make sure that I would not feel restricted by the “deadline” time, and as a time buffer for my overall schedule. I believe that estimating and tracking work time is extremely useful, since it forces me to think about the overall problem, such as which steps or process I need to do in order to finish my issue before starting. I also like how this got me thinking about the connection between the required steps and my ability, helping me realize and know more about self-evaluation/ability. In the future, when I get more busy and cannot only work on projects at the end of the day, I would need to consider my estimation, since I cannot create a big buffer time and need to work under a stricter/tighter schedule. Then, my timing would be more off, but I hope working under pressure with an unfamiliar task would improve me as a person and a contributor more.