I’m going to tell you about a problem I have. You can let me know if you’ve experienced this same problem for yourself.
I sit down to work on my game and look at my to-do list.
I pick a task from my list, say, “allow enemies to attack the player” and open up the project. I go to add the code and realize that I still need to add the enemy’s AI code. I create a new script to start working out the enemies AI and realize that I still haven’t added the health system into the game yet, so I jump over to the code for adding health and I realize that I’m going to need some sort of visual to show how much health the player has. What was I working on again?
This is a problem of cascading problems. Let’s use a small analogy to approach this issue.
I like to visualize this problem using a deck that contains all the problems I need to solve for this task.
The problems in your focus are in your hand. You can only hold so many cards in your hand until you become overwhelmed.
The problems you’ve solved go in a discard pile:
Now that we’ve set up our analogy. We have 3 choices:
We can draw a card, bringing it to our focus
We can return a card to the top of the deck, removing it from our focus
We can discard a card by solving the problem
As we draw cards, our focus stretches. This can be helpful to see the big picture. It isn’t always bad to have a lot of cards in your hand. You may need to draw cards in order to get a good idea of what is involved in finishing your current task.
Sometimes thinking of a problem reminds you of another problem. This is like having a card that asks you to draw another card.
Before you know it, your hand is full of cards. It’s like my story from the start. These situations can be overwhelming.
We need to break out of the card drawing loop and remember to return cards to the deck temporarily.
When the time comes to solve a problem, we should return all other cards to the deck, leaving only the single problem in our focus.
I like this mental model for working on tasks. It proposes these questions: How many cards do I have in my hand? Should I be drawing more cards to get a better idea of the big picture? Or should I be returning cards back to the deck so I can focus on solving a single problem?
These important questions can help prevent feeling overwhelmed and allow us to break down the task into manageable chunks.
Thanks for reading!
Ben
I tend to think of it slightly differently, but I think usefully for your readers, so I wanted to include it here. Part of the reason is: I have trouble not trying to take into account the entire hand of cards - my brain doesn't allow me to just discard cards until I'm down to one. ADHD, most likely, but not sure! So what I do is this:
First, I treat my task list like a Stack, in computer programming terms. Whenever I think of a new idea, as with your approach - drawing a new card from the deck - I immediately push it onto the stack and write down two values: what the end goal of the thought is practically (same as your end goal), and most importantly I write down the reasoning that led me to that end goal. This second step, akin to what programming languages call "memoization," does two important things. First, it allows me to kind of "forget" the goal part altogether if I need to, since I can always go back and read my reasoning to see why it exists; secondly, when I'm done pushing tasks onto my stack and eventually completing them, I can use the current state of the actual code as I follow the stack of reasons back to see if a given reason is still valid with the code architecture. This often creates small substacks, no pun intended, as I change requirements over time as the size and shape of my code changes. In each case though, being able to forget something is tremendously useful only if I can come back to it later, and having that stack of reasons and goals is literally the only way I can get my brain to work, and focus on the present.
I guess how I'd ultimately put it is: forgetting should not be a punishment, but encouraged. Forgetting has utility relative to focus.
I hope this helps someone!
I see a tiny little problem in this anology. The rules set out is you place a card on top of the deck.
This creates an infinite loop of drawing and placing the same card with the current rule set. To extend this we can add a return then shuffle the deck. This way, you always have a fresh view.
Further more. The chain of events you list means that one problem gains priority over the other, forming a tree/branching cascade of events where the top of the tree has priority as it needs to be done first.
Now, a comnent on the enemy shooting. You can make it temporarily shoot based on simple code but it wont have full AI. But this is still one small segment that is partially solved and does give a glimps of the bigger picture.