At this point in the project you might expect that things are organized, documented, and that we have a clear roadmap to completion. Unfortunately that is not the case, but it’s never too late to make a change for the better!
Since this is a single-developer project I’ve only ever done what I thought was the most important thing to do next. This worked and would likely continue working for a long time but lately has left me feeling like I’m forgetting something. A few months ago I started tracking all of the random “I need to remember to do this” thoughts that would pop up during the development of some feature. I use GitLab which has issue tracking built in and is very easy to use. So I’d spin up a new issue for things like “add authorization to the game controller” or “ui hangs when a popup closes”. As you can imagine, these things accumulated, and recently I found myself staring at an unprioritized list of things I cared about. This is when I decided to take some time to give project planning it’s due attention.
I’m also a working-class developer, so I’m familiar with tools like Visual Studio TFS and Atlassian Jira but I always though there was too much overhead on a small project like this to organize things that much. My list of to-do’s has grown too large, though, so I needed to at least prioritize these things. That’s where I started.
I looked at the list of things that past-Will had asked me to do to and organized them based on both importance and ease; cheap stuff gives me a morale boost and the hard stuff delivers a rewarding feature. Then came the thought, “should I bundle this work into ‘sprints’ or ‘releases’?” I ultimately answered “no” but didn’t just churn off the top of the backlog. GitLab uses boards, where a board is a collection of lists that organize items by tag. I created a board called “development” which has the following 5 lists in this order:
- Backlog: open items that have any tags not in other lists.
- To Do: items with the “To Do” tag. I plan on completing all of these before I reprioritize the backlog and move a bundle of things to the “To Do” list. I suppose you could call this a release.
- In Progress: items with the “In Progress” tag. I have modified at least one line of code in support of this item.
- Stuck: items with the “Stuck” tag. I might have introduced some code for this or I might have a branch that I’m not working on right now with this work, but this item isn’t done yet and either needs another item to be completed or I just don’t know how to finish it yet.
- Completed: The stuff I’ve done.
With this board I’m now able to see, at a glance, what I’m doing and where I’m headed. I’ve established a process for completing work and figuring out what’s next. It’s interesting to me that I ended up here rather organically, which justifies the more formal processes I’ve followed at work for so long.
In short, I tried to apply YAGNI to project planning and recently that principle became invalid so I’m now organizing my work like a professional.