This is a question that I get asked pretty often, so I thought I’d write it down to make it easier to share. I’ve also asked some of my peers for their story as well, since they all have unique backgrounds and this is definitely an interesting role with many paths to get to it.
I wanted to share my story so that others who want to get into this field, or those who do not have technical backgrounds, can understand that a path exists.
Education
For starters, I don’t have an engineering or computer science background. I went to a small state school in New York (SUNY Oneonta) and studied communications. After I graduated in 2009, I went back to NYIT, where I began my college career, and completed the first year of my MBA in Management of Information Systems. It wasn’t until the tail-end of college that I even discovered you could study computers.
I tried doing one year of computer science when I started my MBA, but as a graduate student I had to take math courses designed for freshmen, and I couldn’t pass any of those. (I had a solid 65 average in Math in high school). There goes that dream. At the same time, the economy collapsed, and nobody was hiring. I realized it wasn’t the best time to be in school, and my student loan debt was growing to nearly $40k. Most of that came from graduate school, which I never finished.
The takeaway:
If you go to school, be sure that this is what you want to study. That student loan debt will stick with you for the rest of your life. That’s a big investment for something you are thinking: "Maybe I want to do this?"
Keep on Keepin’ On
Joe Dirt said it best: "Life’s a garden — dig it." And I did. I went back into construction and did that in NYC for about 5 years. I hated that job. The hours were abysmal, the commute from Long Island to Manhattan was insane, and the work just didn’t interest me. It took me 2 hours each way — that’s 4 hour each day, on top of working at least 8 hours. I was often just sweeping floors or demolishing walls, so it wasn’t until later that I actually learned any sort of carpentry or project management skills on the job.
I had always loved video games as a child, but never knew how to get into the industry. One day during lunch I saw an ad for GDC, the annual Game Developer Conference in San Francisco, and realized that it was a good place to start. With that said, I booked a flight and hotel during that lunch, and bought an expo pass for $350. I was poor, living at my mom’s house, and barely making enough to pay off my student loans, but I saw this as an opportunity to get into something that interested me. I didn’t quite realize how much that trip would change the course of my life until years later.
The takeaway:
Invest in yourself. It cost me ~$2k for my trip, and I was already poor and drowning in student loan debt, but this was a chance I was willing to take to invest in my future. Still, this was way cheaper than college.
GDC 2010
Not knowing anyone made the event somewhat lonely for me. I ate all of my meals alone and sat silently for the few free talks that were given on the expo floor. Still, I learned so much, and when sitting in for a demo of Crytek’s CryEngine, I realized that I didn’t understand a word of what they were saying, but took vigorous notes and promised myself that when I came back the next year that I would know what all of those terms meant. Textures, materials, phong shaders? You might as well be speaking Klingon as far as I was concerned, because I had no idea of what was going on.
On my way out, I grabbed two massive books from the book store at GDC – Mastering Unreal Technology I and II. After that, I was hooked. I downloaded Epic’s newly released Unreal Development Kit (UDK), which was the free version of their game engine, as soon as I got home and cranked through those books. I read every single page (more than 1,000 in total) and did every tutorial, some more than once. One of the authors, Zak Parrish, would later go on to work at Epic, but he also put together several videos on how to do 3D modeling and build scenes in the engine, and I am forever grateful for how thorough they were. Without those, I would have given up long ago.
The takeaway:
Learn to be uncomfortable. I was lonely, on the other side of the country and learning something new every minute.
Blogging
Along the way, I started to keep a log of my work on WordPress, and used their free web servers to write about the projects I was building. I would blog about useful tutorials I stumbled across, but also post my own tutorials on things I was learning, as well as images of works in progress. The first thing I did on my own was try to create Bubble Man’s stage from Mega Man 2 inside of UDK. You can read about that here.
Shortly into this, I came to understand that I would actually need to know how to program to get more functionality out of the characters. I had nearly all of the environment modeled and painted, but I needed to know how to program to have my character shoot and really start to interact with other characters. I taught myself 3DS Max from tutorials on 3DBuzz.com and Photoshop from various sites across the web. I started by reading some other tutorials, and again, writing my own, using Epic’s scripting language, Unreal Script. I had no clue of how to read code, but I could piece together some bits here and there, based on what I saw others do. The comments in the code helped, too. This is a large reason why I comment my code so thoroughly — to help others.
All of that blogging paid off, because someone at Packt Publishing discovered it, and asked if I wanted to write a book about Unreal Engine gameplay programming. Not one to turn down a challenge, I said yes, and worried about learning to code later. I figured I could pick it up along the way.
The takeaway:
Blogging works. Seriously. It got my three jobs in the short span of my career, and started countless friendships.
Writing a book
For the next three months, in the fall of 2012, I voraciously read as much as I could get my hands on to learn to program. During my commute into Manhattan every day I would read blogs about programming and Unreal Script. Then when I got home from work, I would write the tutorials for the book. For the last 6 weeks or so, I locked myself in the public library and cranked out code. After 3 months of work, I had a finished book. This helped build my confidence around the idea that I could learn new things quickly
The takeaway:
Don’t be afraid to challenge yourself. Give yourself a difficult goal, and stick to it.
Writing about games
The week that I got back from GDC, I posted a message in the Joystiq (a video game blog, now owned by Engadget) fan Facebook group that I’d like to start a blog about video games, and asked if others would like to join. Within hours, there were a flurry of responses, and I decided to work with the first 4 people who responded. This would later become Armless Octopus, a blog covering Xbox Live Indie Games (XBLIG) more than anything else, but would later move onto indie games as a whole.
The XBLIG angle was courtesy of Mike Wall, now one of my closest friends, who was the EIC of the blog. I had never heard of XBLIG before this, as it was still relatively new and hidden in an obscure corner of the Xbox 360 marketplace. But Mike was a fan of many of the games, and was able to uncover many of the gems. The team started a podcast and made a point to cover the new releases each week. Many of those games would go on to other, larger platforms, but we also discovered that this niche was actually something that the larger outlets (IGN, GameSpot, Joystiq) wanted coverage of as well. We were helping to satisfy this niche by covering the games and the developers behind them, and the larger outlets would pick up on it, thereby driving traffic to our site. Win-win for everyone involved!
I learned a lot from this experience, including how to podcast, interact with other writers and see things from their angle, as well as how the industry as a whole worked. Most importantly though, I learned to accept criticism. We would all proofread one-another’s work before it went live and offer constructive criticism. Mike is a fantastic writer and always improved on whatever it was I was attempting to get across. A large part of my limited writing ability is courtesy of him, and this pays dividends for me today.
The takeaway:
Learn to accept criticism. Working with others allowed me to see things from their perspective, but also enabled their critique of my work, which improved my ability to reach a wider audience.
Actually learning to program
XBLIG was already alive and well before I got there, with MVPs (Most Important Professionals — Microsoft’s way of acknowledging individuals who go above-and-beyond to help others), and a vibrant sea of talented developers. Still, much of their work was hidden within the storefront and behind many of the quirky and absurd titles. XNA, the C# framework Microsoft crafted to allow developers to post their games on the Xbox 360, is what drove this community, and I used it as an example to really learn to code. I had just written that Unreal book, but the language behind it was only used by that tool. With C#, I could hit a multitude of platforms.
I gave myself 3 months to learn C# and publish my first game, and I did exactly that. I started in March 2012, and created a Pong clone, called Piz-ong, based on Ian Stocker’s (Magical Time Bean, of Escape Goat fame) recommendation to start with Pong, as it was so simple and taught me the basics. Many of the community members along the way helped coach me and answer forum questions whenever I got stuck. It was Jim Perry in particular, a former XNA MVP and now one of our first ID@Xbox MVPs, who coached me through it all and was extremely patient with me, even stepping through my builds each evening, which we would send back-and-forth via email as a .zip.
We had a great community and I had my first game released on a console, but it was time to kick things up a notch, and I wanted to give back to the community that gave so much to me.
The takeaway:
Find a mentor, then pay it forward. For me, it was Jim Perry, who I have yet to meet in person, but who sacrificed so much personal time to help a peon like myself learn to program.
More hands-on with Web Development
This article is part of the web development series from Microsoft tech evangelists and engineers on practical JavaScript learning, open source projects, and interoperability best practices including Microsoft Edge browser and the new EdgeHTML rendering engine.
We encourage you to test across browsers and devices including Microsoft Edge – the default browser for Windows 10 – with free tools on dev.microsoftedge.com:
More in-depth learning from our engineers and evangelists:
Our community open source projects:
More free tools and back-end web dev stuff: