Banana - A lesson on simplicity
A banana.
I remember it so clearly. It was in 2020, and I was already in highschool. By that time, I had already been working on this Animal Farm game for over a year, with it I had created a little website to host it. However, Animal Farm was nowhere near being done. Every stretch of inspiration would only last a few weeks, leaving the project to sit on the backburner for long periods of time afterwards.
I remember the feeling of frustration, it was this feeling that I had spent so long coding, yet had so little to show for it. It compiled with the fact that I wanted something complete, something that I can show others and say that it was a finished project. I wanted to get out of the never ending cycle of matching the expectations of my ever increasingly ambitious project, Animal Farm. That is how I got the idea to make the banana game.
I had goals in my mind. I knew the issue that an ambiguous project could have first hand. When there is no end point, the end keeps on flying out of reach. Additionally, motivation can find more excuses to falter in the face of seeming never ending work. This new project had to be short, it had to be simple, and it had to have an end. That is when I started planning it out in my head.
Now the greatest fallacy of an imaginative coder like myself is overambition. It is so easy to fall into, especially in the realm of game design. When faced with endless possibilities, I often find myself dreaming a bit too much. However, I had a goal with this project to get it done, and so I made sure that all that jazz was immediately rejected from my mind. It was not easy. The question arises as to what features constitute overambition and what features are necessary ambition. There is no easy answer.
If I remember correctly, I planned for a couple days and coded it in the next couple days. In the end, it could not have taken more than a week to finish. Mind you I was doing other things at the same time.
Then I was done. That was the first project I had completed, and it felt weird. I still had ideas percolating in my head, on features to add and improvements for a second version of the game. To me, the game was still severely incomplete and barebones, it was just a banana that can be clicked after all. However, I had done all I had hoped to achieve and nothing more was required to be added. Sure it did not look the best, nor did it work the best, but it was done.
I quickly moved on. I changed the code afterwards, but it was never a change too drastic. I worked on Animal Farm, I did other things in my life, and my banana project continued to live on in its primitive state.
A Retrospective Look
Looking back, my banana game was one of the coolest things I have done. Too often I find that my mind likes to think of grand and massive ideas. That is the reason I want to learn how to code so much, to make my grand ideas a reality I can share with others. Unfortunately I need to teach myself that sometimes I have to let go. The big projects will come with time and maybe ten years in the future I will have an ultimate version of my banana game, but at the current point of time I am still learning and I am very incapable. No one can see my ability nor my skill if I continue to chase ambition and leave only unfinished projects in my wake. Simplicity, that is the title of the blog and the answer I found from this experience. Simplicity does not mean something is easy to make or unimpressive. Simplicity can sometimes be even more of a challenging task. It requires planning and thought, though not thought whereby you think of new features to add. It is thought into how to cleverly display all the features necessary, and cut out the ones that aren’t.
Earlier I posed the question of how to determine what necessary ambition and overambition. From my experience, I would say that at first everything constitutes overambition. Even creating a project itself is overambitious. From that point, I would take the next most necessary features and set them as my goal. I would focus only on a couple things and everything that is necessary to create those couple things. Sometimes a couple of things are enough, and simplicity wins. The project is done. Other times, I want more things, in which case focus on only those things and add them. Importantly, I don’t need to add more to make it a complete project. It is like a little recursive project, growing through iteration, but at each step being a perfectly good ball in itself.
Someone might argue that this idea is stupidly trivial. Of course you have to start somewhere and add features after. However, I found that through experience it is not so easy. I hyperfixate on a complex project that has many parts, and naively try to create every part in tandem. When I take a break or my motivation stops, I do not have a completed project to show, but a mess of unfinished parts, practically a half project. There are no steps that give the reward of fulfillment, but a seemingly endless struggle for an impractical goal. This is the idea of simplicity, that many simple things done many times become something complex.