Build a Progress Bar for Your Work

When I begin a coding session, I start by taking the task I need to do and breaking it down in fine detail. For example I am working on personal productivity system, which has a “Project” concept. In my first pass, Projects just had a name field. I was just working on getting the relations right. Now, I want to flesh it out a bit. I have a Jira issue with the title: Add “color”, “startDate”, and “endDate” fields to Projects.

Here’s how I break that down:

  1. Add fields to DB entity
  2. Add fields to DB createProject, updateProject
  3. Test DB
  4. Add fields to server GQL createProject, updateProject
  5. Add fields to client GQL createProject, updateProject
  6. Add fields to client GQL project query
  7. Add fields to client model and redux initialize
  8. Add fields to redux createProject, updateProject
  9. Add fields to API/Optimistic updateProject, createProject
  10. Test API/optimistic update/redux
  11. Add a color picker for setting color
  12. Add UI to create project dialog
  13. Add UI to update project dialog
  14. Test UI

I could get more granular, but this is about the level I like. I put them in my task manager to keep me on track and to make sure I’ve thought the problem through. This will roughly be the order I do it and the commits I make.

It guides the session and keeps me on track. If I don’t finish, I just move the incomplete tasks to the next day, which lets me preserve some of the momentum from the previous one. Also see: Green, Refactor, Red, where I end the session with a failing test for the next task I want to do.