Even small projects can benefit from having project management, but setting up and using a project management tool can feel like a daunting task. Luckily GitHub (and you really should be using source control) makes it very easy to set up a simple way to track your tasks.
I knew that GitHub offered project management tools like a Kanban board, but even I was reluctant to jump in that deep. Here, I'll take a look at the basics of project management, how they are useful, and then how to configure GitHub to make it very easy to track these tasks.
Especially new developers tend to want to avoid more formal project management, but taken in a simplified way, using a tool like a Kanban board can help you stay organized, focused, and save you time in the long run. As one of my early mentors told me:
The to-do list is made with markdown, and it's pretty simple:
- [x] Add stalactites and stalagmites to the caves
Godot even helpfully highlights the markdown appropriately. Still, after making this list, I immediately missed a lot of the benefits of something like a dedicated Kanban board.
Kanban is essentially, at its core, the concept of using a board arranged in columns to help manage work. Essentially, you create a task, and move it through columns that represent the stages of work. In this article, I'm considering a very simplified workflow, without testing, QA, bug reports, and so-on. I'll leave that as an exercise to the reader. So before we continue, let's discuss the four stages I recommend for simple development and why.
The backlog represents tasks you have thought of. These don't need to be completed thoughts or fully planned. Simply, you think of something, it goes here. This is essentially a "dumping ground" for anything that comes to mind. It is useful so that you don't need to consider right away whether it is something you formally need to add to your tasks, but you won't forget it if you deem it unnecessary right now, and will still have it to reconsider later.
Fix the random seed input on the settings page
or
Make sure you can turn off sound effects
Once you have decided that a task in your backlog is actually relevant and that you intend to work on it, you should take time to detail what exactly the task is, and document any questions or caveats. This is where you define your acceptance criteria. In other words, discuss exactly what you need to do before you consider this task done. This helps with risk management, and also to keep yourself honest, so you don't cut any corners you know you shouldn't.
For example, maybe you need to fix or improve a feature you added earlier.
The random seed input on the settings page can be cleared but you can only add characters. You should be able to use delete and backspace keys or click and highlight text as you would in a normal text input box.
Or maybe there are specific quirks to the task that you don't want to forget.
In a game, there is background music, but there are also sound effects when interactions happen with items. I should provide separate toggles so that you can turn off each independently.
If a task is more complex, it can be a good idea to add bullets or a task list to your criteria for organization purposes. Once you think you have defined your task enough to work on it, you can move the task out of the backlog and into "ready".
These are the easy ones. When you are ready to make your first change to address a task, it moves to "In Progress". Try to stay focused, and limit the amount of tasks you are working on. GitHub even lets you define limits of the maximum tasks in a column if you need to remind yourself not to be in the middle of too many different tasks at the same time.
When you think you are done, check your implementation against the acceptance criteria you wrote earlier. If everything looks good, you get to consider the task done. There's something that's always satisfying about dragging a task into the "Done" column.
There are three major features of GitHub that come together to make project management a breeze on GitHub.
First, is that there is the very simple "Issues" tab. This is a way to file a bug report, but also a simple way to create a task. When you create an issue with a project configured for your repository, GitHub will automatically create a linked task in your backlog.
GitHub also has a fairly in-depth "Project" system. It is highly configurable, and designed to fit a lot of workflows. When you create a project, though, you'll find Kanban right at the top of the templates, and that will get you about 99% of the way to a simple and efficient setup.
You can click on a task to open details within the project dashboard.
Here, I've added a more complete description with a task list that is automatically interactible within the project management setting, and a comment with a screenshot of the current status.
This will provide me a convenient way to track my progress on the task.
After getting set up, the Kanban board will look something like the example below. This project is also Open Source, so you can visit the GitHub project to see the current status of the Kanban board.