TL;DR
What I wanted to achieve, why it didn’t work out?
First idea? Let’s look for a new tool!
How I organized the project in the end?
Takeaways
What I wanted to achieve, why it didn’t work out?
Breaking down a project into tasks is one thing. Another is arranging these tasks in a sequence so that you always know what stage you're at.
I have a cool method for that. Or so I thought.
I start with the finished product. Once that ideal (perfect Snake, hehe) is on paper, I ask the question: what does the prototype/MVP of my game need to have? How do I know what that should be? I categorize all the possible features of the final game using the MoSCoW method, and for the prototype/MVP, I only select items from the "Must Have" column, leaving the rest for later (to be honest? It's Snake, there is no "rest").
Just as a pearl begins with a grain of sand coated in layers of pearly substance, I too pick a grain of sand (the timer) and look for the next step and the next step. Each task becomes the predecessor to its next task. When I finish a task, I move to its parent, making sure there are no unfinished sub-tasks (tasks that need to be completed before working on the parent) and if there are none, I continue working on that.
Simple, organized, and broken down into elemental factors. I know what's done and I know what needs to be done now. If a task seems too complicated, I break it down into smaller tasks.
And everything would be fine, if not for the fact that Todoist doesn't allow nesting tasks beyond 5.
Darn.
First idea? Let’s look for a new tool!
Once, I asked a more experienced programmer what to do when a team is reluctant to adopt good practices. "Change the team or change the team," he replied.
I can't deny that the first thing that came to my mind was switching from a to-do list to something else, maybe even a project management program. As long as it had the capability for excellent task prioritization.
Suggestions were coming from all directions: Gitlab, Nacho libre Project Libre...
There's just one problem. All of this would make sense if it was my full-time job, but we're talking about an after-hours project. Long breaks can occur in these, and many tools aren't necessary (I won't have Sprints or a Gantt chart).
There's a risk of form outweighing content.
I have no choice but to give Todoist another try. Especially since they themselves boast that it's possible.
How I organized the project in the end?
In Todoist, we have:
projects
sub-projects
sections
tasks
sub-tasks
tags,
and priorities.
As I think about it, it might also be worth utilizing one of Todoist's enjoyable features: the unfinishable task.
I start by creating a project. If you're using the free version of Todoist, it's very possible that you've already used the limit for free projects. Oops.
Sub-tasks were necessary for me to make it easier to orient myself within the project: where I was, what I was doing, and what I should do next. With my second approach, I tried something different. Trying to establish a precise task order could lead to a point where I'm not sure what comes next, overall...
Not too long ago, the creators of Diablo impressed me when they mentioned that at every stage, they wanted to have a playable game.
So, I divided the Snake into milestones and created a Todoist section for each (I also created an extra one for organizational matters, nothing pushes ahead like bureaucratic work does 😉).
I added an unfinishable task to each section to describe the outcome of the milestone. And then I break everything down into tasks. Like that:
Project Management
Create a Github Project
Create a Godot Project in it
Milestone 1: Timer
Create a timer that will create the rhythm of the game
Parametrize the rhythm
Create a signal that is emitted on every timer timeout
Milestone 2: A controllable character
Configure player controls - the game remembers the last arrow pressed and saves it under a variable for direction.
Using the Godot icon create the snake’s head. It moves in the currently set direction.
Define a step (as in coordinates) which makes the Snake move
Milestone 3: The Board
Set the size of the board, and parametrize them.
When the snake reaches the end it appears at the opposite end.
Spike: can we use a tilemap for the board?
Milestone 4: Points
At the beginning of the game, the player has one point (for the head). View the score always.
A dot appears in a random place on the board.
If the snake eats the dot it gains one point.
Once eaten, a new dot appears on the board.
The dot cannot appear in front of the snake, or inside it.
Milestone 5: A proper Snake
If the snake eats a dot it becomes one point longer
If the snake takes a turn the body turns accordingly.
If the snake reaches the end of the board, it will incrementally appear at the other end of the board.
If the snake bites itself - Game Over.
So… What did I miss? 😉
Takeaways
It doesn't make sense to look for a new project management tool after hours. With a bit of luck, you've chosen one that allows you to manage your to-do list effectively. If your system enables you to efficiently complete tasks, it's better to utilize it for after-hours projects rather than splitting your focus and planning across two applications.