"Is programming for me?" is something many of people have asked themselves. In a world where technology has become synonymous with the computer chip, Software Development has become a serious contender for more traditional professions, like those in medicine and law. It's a respectable profession with plenty of benefits: a comfortable desk job, low barrier to entry, and an hefty paycheck at all levels.
So should you jump in? Well, it depends if those benefits were enough to sell you on the idea, then by all means let them drive you. However, be warned that if you are motivated by one of these variables, career satisfaction is not necessarily in the cards for you. In this blog post, I aim to answer the more personal question of "Is programming for me?" My hope is that you can get closer to answering the question through my experience and journey.
I believe I am in the top five percent of developers in the world. I also believe that I got here by having discovered a passion for the practice. Passion is everything; it is the drive that creates needle-like focus and provides you with endless stamina to keep going. Passion, I believe, develops overtime. It starts out as curiosity and becomes an obsession that leads to hours of practice. Eventually, the hobby becomes an art and you develop an opinion about the aesthetics. Before you know it, it has become your craft, your profession.
Let's go back. Before my family immigrated to United States from Ukraine, I had never seen a computer. It wasn't until a year after arriving that my mom found a computer someone had thrown away. She brought it home so she could start learning Cobol; my mom knew that programming made money, which became her dominant motivation. Hesitant from the beginning, she soon relinquished control of the machine to me after realizing programming wasn't for her.
I dove in. It was running Windows 3.1 and it was 1997. It kind of makes sense why someone threw the machine out. Without fear, I clicked everything, opened every folder, every menu item. Exploring every nook and cranny of the system, I found a few Word documents the last owner never removed. The files contained ASCII art. I decided to try and reproduce the same thing by creating simple things like trees and houses. I was already starting to spend a lot of time on the machine. What was driving me? It was the simple curiosity of a kid having discovered something new and not knowing fear or personal doubt. This is why, I believe, most passions are developed early on: a passion always starts with genuine curiosity, void of fear of failure.
About a year later, we got internet and an HP computer. AOL was one of the best things that could have happened to America. With the thirty-day free trial, my family would cancel and renew for several months until the promotion ended. I was already hooked and told my parents I needed access for homework and school--which wasn’t untrue. The internet was a way for me to connect with other people and discover new things.
What drove me next, however, was an interest in Japanese cartoons. Specifically, it was Dragon Ball Z. It’s silly--I mean, it could have been anything: knitting, baseball cards, or travel. For me at that age it was cartoons. I loved the show, but I also loved going to different websites made by fans. Because I tended to click everything, at some point I discovered you can right click and “View Source.” This was GitHub before GitHub, StackOverflow before Stackoverflow. I realized that you can copy and paste one text file and get very similar results; I began making websites around my favorite show using this approach. I was hooked! The DBZ community wasn’t just about sharing content; it was also about making the best website--the prettiest website, with the coolest internet feature. I wanted to compete.
I think this was pivotal. I could have stopped here. I could have given up or lost interest. Up to this point, I had showed curiosity in programming, and I certainly dedicated a lot of time to it, but it hadn’t been all that hard. Pearl forced me to take things seriously and really study. That is the moment I had discovered my passion.
Fast forward. I was now in my second year of middle school. I was giddy, because I could finally take a computer class. We had moved to the suburbs, and, had we not, this class wouldn’t even be an option until high school. I took full advantage. I was enthusiastic, but quickly disappointed; the class was teaching us “if” statements in QBasic. I didn’t know exactly what QBasic was, but by the end of the first or second week I had handed in a program that Mr. Whitesell had deemed to be good enough as the final project for the year. I was given free reign to do whatever I wanted as long as I handed something in. This became, not only my favorite class, but also one of the best school years of my life. I began by breaking out of the simple command line interface and introducing some graphics. My first big project in the class had a mouse pointer, imported fonts, drop-down menus, and a fully functional Gregarian calendar.
For my second and final project for the class, I wanted to go bigger. Naruto, another Japanese animation about colorful ninjas, had just been released. I wanted to create a fighting game. I took it in strides. First, I needed to figure out how to get images to render inside a DOS shell. I learned about buffers, about XOR operations (when learning how to do alpha transparency), about simple jump physics, and even AI. Sadly, the game was never really complete, but it was more than good enough for our teacher.
At this point, I started making websites for money. It wasn’t much--a few hundred dollars here and there--but it felt amazing to be getting paid for my work. Still, I don’t think I was yet financially motivated. This was probably a good thing, because it allowed me to keep learning. When I finally had the opportunity to take AP Computer Science, my entire perspective on code changed drastically. Objects at the time were a completely different way to think about code. Before I knew it, I started to care about aesthetics. I started to care about code quality. I didn’t talk much about my interests and not a lot of people knew what I did at home. After all, it wasn’t until the last decade or so that geeks and nerds become socially acceptable. Despite this, my friends knew that I was pretty good with computers and I got an opportunity to intern at a telecom company over the summer. This was another amazing experience for which I’ll forever be grateful. The company was running early JSP and I was positioned as a front-end web developer. I was exposed to AJAX programming before it was really coined as AJAX. I immediately felt successful, and I couldn’t believe I was being paid to do this--this thing that started off for me as a hobby.
And then it happened; when the experience ended, I started to really think about my future. I imagined what the next 40 years of my life would look like. Could I be happy doing this? Would I be able to continue to remain interested, challenged, and enthusiastic? This was around the point I realized I wanted to make games for a living. It was an area of programming that included complex challenges like 3D graphics, physics simulation, artificial intelligence, and the best hardware … oh and not to mention something I deeply enjoyed. This was the point when I decided it was time to follow my passion.
After some deliberation and research, I found FullSail. It was one of the two schools for video games that provided real-world education and had a massive dropout rate. Not knowing anything about student loans, I was off to the races, eager for the challenge.
At FullSail, I was completely engaged. Every class was structured around application to video games. Classes were conducted 40 hours a week with two subjects alternating five days a week. These were taught for one month and then cycled out for two different classes. This meant you had one month to learn linear algebra and calculus, and one month to learn OpenGL and computer networks. It was fast-paced, but despite this, I managed to retain almost everything. I don't think I was particularly smart or special. For me it was fun, and that made it easy.
Oddly enough, at the peak of my learning, I discovered another interest: team building. I worked on three different team projects during my time at school and each one proved to me that leadership was in my DNA, despite my somewhat introverted persona. I enjoyed leadership because I really cared about people. I also liked stacking the odds of our team projects by getting a second developer interested in being technology lead (we typically had to pick role preferences before getting matched into a group).
After school, the country hit a recession and I was hit with a life-crippling amount of student loans. This is when my work suddenly became all about money, which is often how the real world works. We find that we have responsibilities and material or experience-based desires. I can't say that we're wrong for feeling this way. I don't think everyone is destined to be Jiro in his pursuit of sushi. I do believe that passion is a driver for happiness in anything you do. My student debt tainted my post graduation experience and, while I fulfilled my dream of working on video games, I also learned that what you do is not always synonymous with why you do it.
Because I was forced to job hop to be able to pay off my debt, I was fortunate, work remained challenging and interesting. I accumulated a wealth of knowledge across a multitude of industries. I worked at three different sized game companies, ranging from the small startup of about ten employees to the massive corporation that is Electronic Arts. I worked at two tech start-ups; in simulation and research, consulting, healthcare IT; and as a technical lead for Amtrak’s mobile inspections department. I jumped from .Net WPF, Java Struts, and C++ to Mobile Frameworks, Sharepoint, Oracle, Vendor Evaluations, Architecture, DevOps, and of course leadership. Up to now, I’ve read close to 100 computer books, and several times that in nonfiction. I couldn't have done all of that had I not been passionate and proud of what I do.
So is programming for you? Do you think you would be good at it? If you enjoy constant learning and if you believe you have a passion for it, the answer is yes. Each industry in which I worked provided a very different mindset for the art of software development. Some emphasized speed of development, others performance, and others best practices. Most, of course, answered to a client and to the business. That is what work is all about. It is about being paid for your services. I often like to think of programming as being a unique art that allows you to create something from nothing. That's pretty amazing if you think about it. When you're working though, you're creating something for someone. I've learned there are different ways to stay motivated and to be productive. You can even force yourself to learn something you don't like. Yet, I believe the only way to “get good” is to keep your passion for the craft.
Today, I continue to learn as I am life long student, but much more so outside of programming. I can't yet say if I lost my passion, and there is no doubt that all of us change. I’d like to believe that it’s possible for us to evolve multiple interests along the way. Perhaps programming is where you will start, too.
Thank you for reading!