The Great Reset
If you started reading this because you assumed it was about the economic plan by the World Economic Forum (WEF), I apologise. This is about something more personal. It is about the great reset of my mind. This might sound a bit dramatic but I hope by the end of this post you will understand what I mean by it.
In my teens, somewhere around the year 1999, I was big into computer games. As soon as I came home from school I would boot up the computer and start playing. Nothing really out of the ordinary for a kid my age. However, something that separated me from my friends at the time was the natural curiosity to figure out how the games worked that I was playing. I would always look into the installation directory of any game and try to open files to see if I could read or modify something. I didn't really understand anything at the time and was not aware of how software is made. It was all a bit of magic to me.
A friend of the family gifted me a whole bunch of burned Compact Disks (CD) one day. They contained various games and tools that he thought might be of interest to me. One of the things on them was an unofficial translation of RPG Maker 2000, which was my first contact with a tool that would allow me to make my own Role-Playing Game (RPG). It was also the first time I learned the concept of scripting as the RPG Maker allowed for scripted events which could be assembled by clicking commands in a list. I spent a few months trying to make little games and I remember it being a lot of fun.
A year later I saw a lot of ads in a magazine about something called the Game Programming Starter Kit from Macmillan Software. It was a software package that would allow you to create your own games and I was super excited about it. However, the price at the time was astronomical and I couldn't afford it with my allowance. Not even combined with the money I made from distributing newspapers. I must have talked a lot about it though because my grandad bought me the kit as a gift one day. It included the book Game Design : Secrets of the Sages by Mark Saltzman which I read more than once. It also included a compact disk with the Genesis3D engine and some C++ material as far as I can remember. But when I tried to go through the C++ course I was bored out of my mind. I didn't understand what this cryptic text had to do with games and I just wanted to get something on the screen fast. It just didn't click for me and I continued to make small games with the RPG Maker 2000 instead.
But my quest to understand how games or software was made didn't end there. My memory is a bit fuzzy on how exactly it happened but one day I obtained a book about Visual Basic that also contained the necessary tools to write software in. And that was a game changer for me as I could get immediate results thanks to the UI designer. The book only went through the basics and after finishing it I experimented a lot on my own. I wrote various tools and applications for myself and nothing seemed too hard to do. Whenever I got an idea for something I tried to do it. Not always successful but I would learn a lot by just trying. I also started to wonder how I could create 3D games, like the ones I played after school.
Around the same time I also tried to persuade my mum to get "the internet" for us. I came up with a whole lot of reasons why we should have "the internet", most of which were about how it would help me with my school work. The real reason to get internet access however, was to play multiplayer games with my friends that were already doing that on a daily basis. I think my mum was very much aware of my real intentions but she probably thought that it might have somewhat of a positive effect regardless.
With the internet came countless of hours of multiplayer fun but also a curious little website called Google. You could just type whatever you wanted into a little text box and a whole bunch of websites would show up in a list that more or less contained exactly what you were looking for. I somewhat naively started to search for "how to make a game in visual basic". This was the time I learned about Direct3D and OpenGL and how to use them in Visual Basic. I even got to the point where I had a very small textured cube that spun around. It was exciting and I dreamt of all the possibilities. I always approached everything with a certain optimism that I would be able to get it done somehow. I extended my internet search to get answers to other questions around game programming and this was the point in my life where things started to change.
The further I googled on how to use Visual Basic for game development the more I encountered people having a lot of things to say about programming, game development, and Visual Basic. The most notable things can be summarised in these two lines:
Making complex 3D games in Visual Basic is impossible!
Visual Basic is for noobs. Real professional programmers use C++.
Reading these things in my teenage years made me question everything I did so far. Even though I had a spinning 3D cube, making a whole game with Visual Basic was considered impossible. How embarrassing! I didn't want anyone to think I am a fool so I searched for everything C++ related and learned to write programs with it. And I really didn't like using it. But it was the language professionals used and I wanted to be a professional after all. I wanted to do the right thing and not be a stupid kid that used the wrong programming language.
Eventually, after months of trying to stick with C++, I got to the same stage that I had with Visual Basic: A textured cube that could move and spin. Now it was time to get a player character on the screen that I could move around. And once again, I used Google to search for answers which resulted in a lot of opinions that made me question what I was doing:
Making a 3D game alone is impossible and needs a whole team of programmers and designers.
Another noob trying to make a 3D game...
You should make small 2D games first to learn the ropes.
How embarrassing! I almost made a fool out of myself... again. I should really be looking up how to make a 2D game instead. So I tried to find everything I could about 2D game development. I did manage to start a 2D top down shooting game, but it only went as far as implementing the first stage of enemies and a very basic level editor. It never went any further than that because at the same time I also read a lot about game engines and how they were considered the backbone of computer games. I was under the impression that writing a game without an engine was a foolish endeavour. Every game needed an engine to be taken seriously. Without an engine a game couldn't be considered professional. Even though the basics of my game were already done I shifted my attention to write a generalised engine, which would allow me to reuse code for all my future games as well. Professional.
Right about the same time I started my first job in the software industry for a company that was developing plug-ins for Computer-Aided Design (CAD) Software. They were using C# with .NET Framework 2.0, which everyone told me was so much better and safer than C++. Not only did I learn a new programming language, but also learned the process of writing professional software for a company. This meant flowcharts, interfaces, generic libraries, software patterns, clean code, unit testing, and of course pairing with other engineers. Because two people sharing one keyboard was considered to be peak productivity. All of these practices spilled over into my personal projects as well because this was how professional software was made. And I am a professional after all. As a result my personal projects got smaller and smaller and somehow took longer and longer. At some point I completely stopped trying to work on anything outside of work and focused solely on my "career" as a professional software engineer. I also started to echo a lot of my peers when I encountered novices asking questions about certain things:
Start small and work your way up.
Use language "XYZ" for this project because everything else is useless.
You need to use framework "A" instead of framework "B".
Lol, another noob trying to write a 3D game without any knowledge in anything.
This was roughly 15 years ago. All this time I have been following trends and recommendations by my peers. I have been trying to keep up with the latest frameworks, tools, and practices. I have been a professional. But for the past few years I got less and less engaged and interested in what I am doing. People close to me told me that I am suffering from burnout and all I needed was a holiday or a change in companies to start fresh. They also recommended to have a hobby outside of software that I should be passionate about. And I've tried to follow their advice because it sounded like good advice at the time. However, a long holiday did not help. Neither did a change of companies. And while I picked up other hobbies, my real passion is software. It always was and always will be.
A few years ago I heard about this thing called minimalism. It proposed a rather radical idea of getting rid of the things that don't matter and only keep the things that do. Not just physical stuff but also relationships and values. The idea behind it is to question what is important and meaningful to your life. And that is what I have been doing around every aspect of my life since. One of the things I questioned was everything I learned about software engineering by people on the internet, schools, universities, companies, and mentors. You can probably see that I was an easily influenced kid that was riddled with self doubt and afraid of rejection by peers that I considered to be knowledgable in the topic. I have rejected my own thinking and doing things the way I wanted to just because others told me it is wrong, or hard, or even impossible. I do not fault these people for doing so because they didn't know any better or truly believed the things they said. I blame myself for rejecting my reality and giving up my values so easily just to fit in. To become a professional software engineer. And this is the main source of my discontent. I can only work against my values and nature for so long until it manifests in discontent, unhappiness, and depression. To change my course and go back to my values I have to reset my mind.
I am calling it the great reset because in order to course correct I have to let go. I have to let go of ideas, practices and values that have been set by others as the norm and the right thing to do. I have to let go of any preconceptions of what is right or wrong, easy or hard, possible or impossible. I have to consider the circumstances that principles were born out of and come to my own conclusions whether they make sense for mine. And if I end up with the same conclusions as everyone else, so be it. At least I have thought about it and tried a different approach. There is no way of knowing what the right or wrong way of doing things is without trying. Software engineering is a young field and there is still a lot of room for experimentation and different approaches. It is not like other professions that had centuries to evolve and came to a very strong foundation of principles. It is also far less complex than the makeup of the universe, or the human brain. The perceived complexity of it all comes from human failure and people like me that just have adopted principles without questioning them. Getting rid of all preconceptions that have been ingrained into my brain for the longest part of my whole life is not an easy task and might even be impossible to do. But it is on me to at least give it a try and steer my mind into a direction that does not go against my values. It is time for the great reset of my mind.