I’ve always liked building things.
I grew up in the US, where a lot of nerds play a lot of video games and spend a lot of time with computers. One of my best friends growing up had a family full of computer people, and my other best friend was also really into playing video games.
Like many programmers, I started out playing a bunch of video games growing up, and in an attempt to beat other gamers, I would try out different hacks (wall-hacks, auto-aim, etc.). Sometimes the patches would work, sometimes they would not work. I spent a lot of time tinkering with the computer to get these things to try and work.
When I was around 10 years old, I built my first crappy third person shooter. I used some kind of game development software and created an extremely buggy, but playable third person shooter with bots that move right and left across the screen. Although I don’t recall anyone but myself playing the game, I do remember spending quite a lot of time on it.
I also remember playing Runescape (an MMORPG) in the early days, and using macros to automate actions to increase my character’s level. Unfortunately Runescape put in detection for these kind of macros, and that account soon got banned.
After I moved to Japan when I was 13, surprisingly many of the people I went to school with didn’t play much PC video games, and they also didn’t know much about using a computer. I naturally faded away from computers and gradually shifted towards playing basketball.
High school for me was odd - though I knew I was an introverted nerd by nature, I found myself playing basketball extremely intensely. We were winning prefectural championships, I was selected as a prefectural representative (mostly for the reason that I am considered to be super tall in Japan), and we played in national tournaments.
On the other hand, despite my involvement in athletic activities, I still found myself wanting to tinker with computers. So I started a blog about basketball. It turned out that the training methods in the US were different from the ones practiced in Japan, so I targeted motivated high school students playing basketball and wrote about US training methods.
As a high school kid, I wanted to make some money, but my time limitations being a student-athlete didn’t allow me to take on any part-time jobs - so I searched for ways to make money doing what I liked; using computers. I first started by signing up to one of those websites where you make extremely small amounts of money by clicking on ads.
I quickly realized this was inefficient, boring, and a waste of time, so I started looking for something that would be more interesting and worthwhile. I soon found out that some people make money writing blogs through ads.
As naive as I was, that was how I got started writing my basketball blog. I googled around for SEO, learned some basic HTML and CSS, and read a bunch of articles about content marketing.
I learned how important it is to determine a specific target audience and write the article as if I were speaking to them. I also learned that to reach a larger audience, I needed to write a bunch of articles with high quality (quantity and quality). I also learned how to research for keywords, where to place Google ads (I’m not sure if these things still apply), how to measure metrics using Google Analytics, etc. I probably only learned the surface of these things, but it was enough to make me around 100 USD per month from Google ad revenues.
This was my first experience of making money without actually working for a company. But what I realized was that I could simply work part-time for a company and make the same amount by working for a week or so - it wasn’t really worth the time and effort. Plus, I didn’t feel that excited to write about basketball, so I left my blog (although it continued making some revenue for some months).
Fast forward to the present and I’m still tinkering with computers. I write a lot of code because it’s a lot of fun for me, it’s an intense hobby I have and I never get tired of it.
Once I learned how to code, my life has changed dramatically.
I’ve always had a bunch of hobbies that I would spend a lot of time with, like playing music, playing basketball, playing video games, etc. but they were never viable career options. When I was a naive middle school kid, I once tried persuading my parents that I wanted to go to Berklee School of Music and become a professional jazz drummer. My parents unsuprisingly discouraged me from that career option, saying that there’s no money in it; which I completely agree with now that I reflect back on it.
Hobbies may inheritenly be a difficult career option for most cases, in the sense that hobbies are by definition, activities that are done in one’s leisure time for one’s pleasure, and not necessary for the fulfillment of others. Since money is just a currency that is exchanged for the value you create for society, unless you are solving someone else’s problems or meeting some kind of need in some kind of way, it’s really unlikely that you’ll be making a career off of it. Unless you are in the top rank of musicians or gamers, it’s really hard to create value for others, since there is a relatively limited market for these careers as of now.
On the other hand, programming has the same addictive nature that things like music or video games have, in that there is never an end to learning, and you can always get better. It’s also easy to measure how competent you are compared to other people (just like how you can compare how much better you are at CounterStrike compared to your rival friend).
One of the things that is different is that there is a high demand for programmers compared to musicians or gamers. This makes sense since a lot of things are now automated or is starting to become automated with software, which means that programmers are needed to create that software.
A high demand for programmers also means that programmers have the ability to solve problems - and when you can solve problems, you tend to get some kind of value in return.
There are many viable career options, but programming is somewhat of a rare one, since the only essential things you need to code and be productive is a laptop and good wifi. I’ve worked remotely for a lot of projects while making a fair amount of money. A lot of companies are allowing developers to work remotely, and it seems that this trend might continue as there are more and more tools being developed to collaborate online with a team.
I’ve always spent a lot of time making things because I like to do so. Coding has allowed me to pursue building things again.
You don’t have to work for a company if you have something that you want to pursue. Right now I’m working on a start up in Nepal that teaches people web development through a combination of an online curriculum and 1 on 1 personal mentor sessions.
Creating the platform is one of the things I enjoy most - not only do I get to code, I get to code the features that I want to build. I don’t need to pay anyone to create the software (that would cost a lot of money), I just build it myself.
I learn something new everyday, not in the sense of emotional growth, but in a sense of practical concrete knowledge that can be applied immediately. There are just limitless amounts of things to know as a programmer which motivates me and forces me in a way to continue learning. I am sure that when I look back at the code I am writing today in 2 or 3 years, or maybe even a couple of months, I will surely be disappointed in myself for that lack of consideration and immaturity of design.
Bugs are encountered numerous times every day and software never works perfectly on the first try. Thus I make a lot of errors everyday. This is normal and I like the idea that I don’t have to be perfect on the first try. I seems cliche, but I never liked the idea of how tests in most schools grade you on the performance of one test. It’s efficient for sure, but it doesn’t really capture and reflect the nature of most types of work. If one of the main purposes of education is to nurture more productive human beings, then why create tests that are opposite of what is practiced in most types of real work?