Have you ever spent hours trying to draft an acceptable program that will, at the very least, pass all required tests, but it’s late into the night and nothing is working? No bells and whistles, no extra flare. Just a bare bones passable program. And you can’t even accomplish that. Your eyes are tired but your body still feels like it’s connected to a live wire. You start to make concessions on what you will accept as a final product and finally realize that sleep is more important for the moment. You wake up in the morning to reluctantly review the code and you realize that the problem was easily fixable. It’s magic…as if it’s not even the same code you were working on the night before. This is infuriating but relieving. You conclude that either you were possessed by a debugging demon in the night or that you, in fact, are occasionally a dunce.
We all go through times where we feel like the hill we climb becomes a downward escalator, and no matter how many steps we take upward, we stay relatively in the same place. Last week I spent a good day or so contemplating my choice to do computer science after seeing the capabilities of my fellow teammate and his complex coding on the fly. While a task would take me the better half of a day to figure out, it would take the student next to me a couple of minutes. I try to remind myself that we all come from different backgrounds and some students have coded most of their adult lives, but consciously knowing this doesn’t help the anxiety that builds as I edge closer to graduation.
This same fear wiggled its way into my brain this last week while trying to create the project’s asset locations and environment. Our group is creating a virtual bartender simulation for a VR headset, such as the Oculus Quest. The game will have a bar area with glasses, liquor, and other ingredients to make popular drinks, allowing the player to learn how to make drinks and track their success rate. I had spent tutorials learning to start a project, but I still had no real idea of how to create an entire setting with nothing but basic geometric default objects within the Unity canvas. Though this took relatively little time to overcome, the learning curve for making objects “not fly off the edge of the plane” or “not fall through the floor” or “not get swallowed up by another object” proved much more difficult. By the week’s end, I had spent most of my time breaking my code instead of accomplishing anything.
With a deadline looming in the back of my head and teammates counting on me to get the environment set up, the increased pressure had a numbing effect on my learning capabilities. “It’s 2:00 AM and you’re wanting to learn what now?” said my brain. If the time it took me to learn how to simply not set the project ablaze with errors was equivalent to the amount of time it would take me to actually build the game scene, I was going to throw my RV hands in the air and take off to a real bar. It’s 5:00 somewhere, right?
In a fit of frustration, I gave up, grabbed comfort food, watched the next episode of Halo, and cuddled with my dogs. For the first time in a week, I just took a night off to myself and cleared all thoughts of the project. The next day, after procrastinating with every morning routine I could think of-breakfast, yoga, coffee, light house cleaning- I finally opened my Unity application on my computer. I scrapped the broken code from the nights prior, and started fresh. However, I realized that…my bar wasn’t falling through the floor. My glassware was staying put and not flying sideways when running the program. My objects were behaving the way I needed them to… It was as if I was in an alternate bartender dimension…Or maybe I am a variant on the run from Time Variance Authority attempting to fix my other talentless variants’ coding errors. Sorry guys, I really want Disney+ to release Loki season two already.
Long story short, I spent the next 7 hours in non-stop world building, comparing ideas from online terrane, to real life pictures of bar scenes and setups. At the end of the day (or technically the next morning), I had a full rough draft world for our bartending game to live in. What looked like an impossible task just the night before, became clear as day with just a bit of sleep and finding out that Master Chief…just kidding. No spoilers here.
I wish I could say that I understood this concept a long time ago. But it was drowning in the tidal wave-size learning curve on how to use the Unity Engine that made me realize my ability to overcome is directly related to my point of view. When I feel discouraged or overwhelmed about learning to code in general, that I am seeing my world through the same lens as a coder who’s looked at their code for too long and just needs some good sleep. When I let my failures settle in, check in to their guest rooms, take a dip in the hot tub, and eat the free continental breakfast, they slowly lose their psychological grip on my endeverance.
This is a simple but very important lesson. Everyone starts somewhere. Everyone has a “day 1” on learning to code, and you will never be on the same timeline as anyone else. But you can achieve anything if you put your mind to it. Sometimes it just takes stepping away from the problem to give both the problem and you some room to breathe. So if your vision is blurring, your fears of failing are blocking your ability to debug, and the lines of code are crossing together, stand up from your desk and walk away. The best thing you can do for yourself is allow time and space to clear a path for you. To provide you an unobstructed view.