How I Became A Programmer
I was a high school student who loved technology. At the time I was interested in audio, and a friend asked me to make a track for a game he was programming. Eventually, he realized that the game was more work than he could handle, and he asked me to help with the programming. Intrigued by the idea of learning how to program, and backed by my love of technology, I set out to learn how to program. My language of choice was the Java Programming Language. The first program everybody writes is the famous “Hello, World!” program, which prints that message to the screen. I wrote down the code, ran it, and “Hello, World!” popped up on the screen. A surge of excitement filled me — the fact that I made the computer do something was incredible. From that point on I was hooked.
As I dabbled in it more, and I wanted to learn everything there was to programming. However, I was lacking direction on where to start, and I was down on motivation because I recently failed to get into school for audio production because of my poor math skills. I felt like a failure — how could I learn how to program without being really good at math? Don’t you have to be a genius to become a programmer? I hated school, and how traditional subjects were taught. I knew that if I wanted to have any chance at getting through college, it would have to be something I wouldn’t mind working countless hours a day on. I loved audio, but there were certain parts of it I really couldn’t stand, plus it required advanced math.
Despite my feelings, I decided to go to college for computer science. My passion for programming overshadowed my fear of failing at math and hating school. I enrolled, a couple months went by and things didn’t go as expected. It was the same one was before. I was excelling in my programming classes, but I was failing everything else no matter how hard I tried. I was getting 100% on all of my programming projects, bonus points on exams, and was even asked to be a mentor, but I couldn’t solve college level math problems. I ended up dropping out less than a year into my college career.
I quickly realized that I didn’t need college to get good at programming. I was downloading hoards of courses online, and I was having a lot of fun building projects of my own. It was hard, but I was managing and building my skills. I realized that online courses were the best way to learn programming. I was at the point where I could confidently teach other people Java. Occasionally I was teaching friends programming concepts and parts of Java.
My plan was to rapidly learn other programming languages and technologies, and be good enough to get a programming career going. Within a span of a year I had dabbled in several things including web development, and mobile app development.
Even though I was excelled at programming, I lacked foundation. I didn’t know why certain things worked, and that really put a damper on my progress as a programmer. If I wanted to be exceptional at programming, I had to know and understand how things worked at a deeper more intimate level. Because I used online courses, I was merely watching people write and explain code, but not why they were writing it. I knew how to solve basic problems, and code useful apps, but I became overwhelmed with more complex problems. This was a pretty big issue since programming is about solving a variety of problems elegantly.
My confidence spiraled out of control again. I was frustrated. I had dropped out of college and wasted a long time learning this stuff, only to have approached it the wrong way. But then I realized something. There’s a famous test that employers give to root out candidates in job interviews in the software engineering industry. It’s called FizzBuzz, which is a set of basic programming problems any serious programmer should know how to solve. It’s the math level equivalent of “1+1”. With my lack of foundation, I was still able to solve these without much effort, and have full comprehension as to how the solutions worked; so all hope wasn’t lost. College students have a solid foundation, but sometimes in the wrong areas. They can lack the skills needed to actually program something useful (even trivial problems presented in the FizzBuzz problem set). Courses will show you how to write the code, but often leave out relevant foundational materials. I thought to myself how I could devise a way to solve this problem, and provide a balanced way to learn both the foundations and how to code. I spent a while studying computer architecture, and a variety of languages. Then it came to me. During this time that I was filling in the gaps in my skill set, I noticed a pattern. Whenever I would branch off to a new language, or a new concept, I would almost always refer back to Java. It didn’t matter what it was. Java was a constant that made everything else much easier to learn. It has the perfect amount of “done for you” features. It does things for you — but it also doesn’t do too much for you. If you take the time to intimately learn Java, you can relate it to almost anything in programming, and use it as a diving board. It took a while, but I had build a solid foundation completely out of self-education.
It started to dawn on me how powerful this skillset was, and how powerful a balanced programming track was (eg. an equal amount of foundation and knowing how to code something useful). Because I had approached it this way, I was able to easily pick up new concepts, technologies, and languages quickly and shuffle through the fluff. I learned how to research and how to understand problems at a deep level.
I was making a living from mentoring aspiring developers, and I had a skill that I could use to automate various things in my life. Not only that, but it completely changed my way of thinking. I was able to logically walk through problems that were complex before, and my math skills have improved a lot. Programming has changed my life in many ways, and it has opened my mind to the vast amount of possibilities attached to it. I no longer felt like a failure, and my confidence was stronger than ever. I have since earned two certifications — one of which is from Google, and I have lucky enough to be able to guide students daily through a large MOOC as a mentor and reviewer. I have graded over 8,000 projects, and guided over 700 students around the world. Programming has provided me the closest thing there is to a super power.