This is mostly a repeat of what I wrote on gamedev.
Someone was asking a question about job hunting and changing jobs, about losing interest in what he said was his favorite things to do, and losing confidence in what he used to enjoy.
The first part of his discussion was about loss of confidence. As someone with bipolar disorder I know more than I like about dealing with that type of thing. I’ve gone through enough serious major depressions to know how it can seriously damage your life and your career. To that end:
Losing confidence is hard. It can happen for any setback. Any mistake you make can cause you to lose confidence in yourself. Life events such as losing your job can trigger a confidence loss. Not finding a job after a while can cause a confidence drop. I’ve spent over a year unemployed more than once, it is hard.
If you lose confidence bad enough to think frequently of death, you need to get help.
If you lose confidence enough that you cannot hold a job, you need to get help.
The things described in the post — a series of failures, having your job threatened, facing the possibility of losing some of your career dreams — can seriously harm your mental state to have some of the things happen that you described.
Those are very real issues. The mental concerns can be just as severe as breaking bones.
You wouldn’t say to someone, “You just broke your bones, they are sticking out of your legs. Just walk it off for a while, you’ll feel better”, instead you’d get them immediate medical care. What you described can cause serious mental injury that needs the help of mental health professionals.
Keep up with your mental health. If you are interpreting the entire world in negative terms, get help. If you are thinking a lot about death, get help. If you are feeling emotional pain and despair bad enough that life doesn’t feel worth living, or bad enough that it is painful to face the world, get help.
That is far more important than having a dream job.
Once the mental health part is taken care of, making games is actually hard work. It is also a difficult creative endeavor. You get to face not just difficult problems, but you also get Writer’s Block. You get Artist’s Block (the same as writer’s block, but for creative inspiration). You get Design Block where you can only come up with stale old ideas you’ve already rehashed. And you get new novel algorithms that have never been implemented quite that way before.
Most people have no idea what goes in to making games. I’ve worked for years both inside and outside the game industry. Business apps are usually much easier.
What is acceptable in the business world has always been amazing to me. It is pathetic how a machine can be handling a small volume of processing requests every second but because of abysmal developer skills the server performance plummets. One such example, a business client had servers that queried a roughly 60TB database for around 40KB of data, sliced and diced the data into JSON format, and returned a roughly 60KB response. The transaction times to the database were quick, about 20ms. But the time for these Java programmers to accept the response, convert the byte arrays into a bunch of strings, split those out into substrings to provide a uniform interface, put those into a map so they could be looked up ‘conveniently’, look up the few items they need in the map and copy the strings, compose those strings into a response, and finally return the response. Naturally they couldn’t touch the database directly, business logic needed to go through a data tier to a different data tier library. These seasoned, tenured business software developers were able to handle around 30 requests per second on a server. Each of these roughly 80KB requests ended up performing around ten thousand Java string allocations and around three megabytes of memory, requiring about 200ms to process.
Their solution to slow performance, which all the teams in the organization thought was completely reasonable, was to buy more machines. The organization saw no issues whatsoever in having a large load-balanced server array of 10 machines to handle the requests. Some investigation showed these machines were doing nothing more than repeating what Oracle gave them, all they did was translate JDBC calls into JSON data. Few of those business developers understood the line of questioning, asking why their Oracle server was able to easily handle the load, wondering why they didn’t just provide a thin wrapper to the others in the organization to just call the database without introducing a 200ms low-performance layer. Ultimately we managed to get them down to around 70ms … which they treated as a major success, but I saw as still too slow for essentially a string reformat. I learned they didn’t even bother to add performance metrics to their software until they were ready to launch, and suddenly realized they were taking more than a half second per request; they had a nightmare scenario that took six months to drop it to 200ms.
They were happy they could regurgitate data, processing around 5MB of actual data and around 150MB/sec of unnecessary overhead. They were not bandwidth limited, nor were they compute limited. A profiler showed they were filling up their 16GB of memory with garbage collection running two or three times per minute. While they knew quite a lot about writing queries, they had no clue about how memory works on hardware and how to extract high performance from machines.
Contrast with games, where major titles I’ve worked on have been well designed and we don’t start to see concern until we hit around 2GB/s of data. Sure most of that is repetitive, hitting some arrays of minimal game objects, arrays of particle systems, arrays of animation data, and doing it 60, 75, or more times per second, but it is much different from the business world where parsing a string requires megabytes of space and hundreds of allocations. Games profile early, profile often, measuring everything we do. We have continuous builds that automatically run and test the programs, logging memory patterns and sending alerts to key people when frequently-used structures pass critical size limits or when performance drops more than a certain percent.
Games are very different from business software. You need a deeper understanding of the machines to do it well.
Finally about transitioning careers, I’ve written about that several times in the past as well.
I’ve known people who thought that they wanted to go into games, but once they entered the career they realized they had no aptitude for it and hated the work.
One of them graduated with a CS degree, said in private that they hated the program but loved their college job working in a garden center nursery. They got a game programming job as their first job out of college, and after a year of misery decided to go back to tending plants.
Another one had been a successful game programmer for about three years. He also had a guitar in his cubicle and occasionally we’d be treated to some excellent music and singing, he liked to play in one of the side rooms but it was not sound proof. After several years of working together, he said his goodbyes — he was returning to school to get a second degree, this time in music education. While he was able to make games he had discovered that was not his passion.
You might fall into either of those camps, or something similar.
The first one thought that since games were fun to play he thought they should also be fun to write. He had seen that some people have fun and exciting careers in game development, so he believed that if he just pushed through yet another obstacle, one day he would love the job. Except that was not a field he actually enjoyed, they were not tasks he actually enjoyed, it was not a work environment he actually enjoyed. While some people love creating algorithms and working with data logic, most people hate it. He really accomplished a lot, completing a lot of tasks he hated trying to reach his childhood dream. It took him years to realize the childhood dream was actually terrible for him. You might be similar.
The second one did enjoy some of his tasks, he was fairly good at it, and he could have continued for the rest of his career in the field. But it was not his passion. If you talked about game topics he could discuss it, but if you talked about music he would get caught up in the discussion, would be excited and engaged, and could share experiences and ideas and hopes and goals. He was able to make games, but that was not his passion. He made the right decision to follow his passions into a different career. You might be similar.
The person in the discussion mentioned driving a taxi. I can certainly understand some of the draw for that as a career. After a short time you know where everything is, so driving becomes easy. The work aspect is minimal, you sit in a relatively safe box for many hours each day. You get to meet a lot of interesting people, some will want to talk. There will be the occasional jerk, but most people will be sociable and engaging, or at least not a burden. The pay isn’t bad. If you want you can find a quiet corner and take a break, not earning money but enjoying life.
It might be that this can be turned into a good thing. Consider carefully what you really do enjoy.
For me, I love making games. When I have nothing else to do and want something fun, I find that I still build games. When I engage in conversation I am most passionate about the topics. I engage with friends and acquaintances. An old friend-of-a-friend was asking online about help on building a robot for a youth group, and they didn’t know how to figure out where the robot was. We talked for hours, figuring out what sensors they had, and I helped them build all the math to effectively build a world space, using a few triangles and various trig functions like the rule of sines and such so their robot could build an internal world. Basically we built a virtual world and spatial system just like a video game’s world, fed by moving the robot a small amount and finding known markers. As something I love and am passionate about, it was a great time.
But if I didn’t love it, if I was like many people I know who hate doing math and hate thinking about geometry, that project would have been a nightmare.
If you need help in deciding how to change your career, one excellent book is “What Color Is Your Parachute?” The book is update every year and is a global best seller, so you can find copies of it in every library and used book store. Get a copy of the book, search for a section called the Flower Diagram. Work through it. It can help you discover what your real passions in life are. I’ve seen that exercise transform people’s lives, as they make the discovery about what they really want to do by thinking critically about what they enjoy when they are on their own.
If in doubt, do the flower diagram from that book. It can help.