I’m a new junior programmer hire at Umbra. You might not guess it based on my educational background though: I recently graduated with a degree in theoretical physics. Most of the skills I use in the day-to-day work at Umbra I’ve learned on my own. How on earth did I end up getting hired at Umbra?
I certainly never planned on ending up as a graphics programmer when I started my studies. In the second year of my physics studies, some scientific computing courses were offered. Only very rudimentary programming was taught, and most exercises were to be carried out in the FORTRAN or C programming languages. We were left mostly to our own devices in figuring out how larger projects might be implemented (version control? What was that again?). And so I picked C++ as my learning language — a bit odd in hindsight, but I knew nothing about the language at the time — and armed myself with a good C++ textbook and the SDL multimedia library. I figured I would teach myself better programming habits by tinkering with small graphics applications.
What I discovered was that graphics programming is very fun just on its own. I also noticed that, at least in my case, in order to get good at programming (and especially 3d graphics programming) requires much more than just reading a few textbooks and doing all the exercises in the back. It demands constant practise on your own, because you’re never going to be able to memorize the countless techniques from a textbook unless you’ve worked through them yourself. If you’re interested in the domain, then you’re in luck. Seeing my programs come to life on the monitor was all the motivation I needed in order to slave away at fixing that one remaining pesky bug, or figuring out and searching for better structuring schemes for the programs themselves. And so, my advanced quantum mechanics exercises began to suffer, and all because of a little flickering triangle that I was finally able render via the GPU pipeline one night.
When I finally came face to face with the fact that working in the computer graphics domain would probably be more fun than a physics research track, I decided to play a little game. In order to keep myself in front of the keyboard every evening, I decided to build up a large github streak — an unbroken chain of daily commits. This served two purposes. It forced me to work continuously on my side projects which I was using to learn, and it built up my public portfolio at the same time. If you’re switching domains like I did, having a portfolio is very important for making a good first impression, because you need to be able to demonstrate interest and some skill in order to be considered in most places.
It would seem that in the programming world, you can get very far just by tinkering on your own.
In this way, I think that I’m probably no different than anyone else here at Umbra. Everyone here has a passion for 3d graphics, and they’ve no doubt all worked tirelessly on their own projects in order to get good at it.