Jay Kim

My Software Developer Origin Story

2005

My first experience of "programming" was when I was around 14. I picked up HTML and CSS since I wanted to learn how to spruce up my GeoCities site and customize my Xanga profile. I learned through online tutorials, the "view source" button, and trial and error. I started with Notepad and eventually discovered tools like Macromedia Dreamweaver and Microsoft FrontPage. I also got into digital art with Photoshop and was inspired by many of the image heavy websites that were popular at the time. I learned through tutorials how to use Photoshop to create layouts and how to slice and export them into HTML tables. It felt like a super power at the time. My parents had no idea what I was doing and just assumed the flashing lights were video games and my IT teacher thought I was plagiarizing my homework assignments when one of the assignments was to build a web page. I didn't know JavaScript or a server-side language at the time since I wasn't able to find an on-ramp into that world.

2008

I was getting ready for my university applications. In Hong Kong, where I lived at the time, programming wasn't a thing people considered for a career - it was all finance, business, law, etc. None of the schools offered computer science classes. I knew I was interested in doing something computer related but I wasn't sure if CS was right for me. Reading the Wikipedia page, CS seemed to be a bit too brainy, theoretical, and even boring. I simply wanted to learn how to build dynamic websites like Facebook and Gmail but CS seemed like the only path to get there. I applied for the University of Toronto's Computing Insight's program which invites high school students to attend workshops and lectures in their campus to get a taste of computer science. I had a lot of fun, made some friends, and it was a revelation to me. I even got to attend a lecture by the famed ML researcher Geoffrey Hinton! He presented his work on neural nets and OCR but at the time I had no idea what he was talking about nor the ground breaking nature of his work.

2009

I started seriously programming when I was 18 where I took my first computer science class at the University of Waterloo, CS 135 - Designing Functional Programs. We learned Scheme, a variant of Lisp, and we did a lot of problem solving using recursion. I grew to appreciate the minimalism of the language. Relative to my peers, I had a late introduction to "conventional" languages like Python and C. I only picked up Java in 2018!

Thanks to all the 1st year university math courses, this was also the year I began to realize I knew nothing about math and that all my previous education about math was a lie promulgated through useless algebra exercises, rote memorization and pattern matching of exam papers. I finally began to understand math as more of a creative endeavour. I began to understand the thrill of trying to solve an impenetrable problem using only your imagination. I recommend reading Paul Lockhart's A Mathematician's Lament to understand the betrayal I felt of my high school math education. It's a tragic problem in lots of pre-university math education today.

2010

My first real job was an internship at a major Canadian bank where I worked as a user acceptance tester for the online banking website. My supervisor would literally send me step by step instructions that I would need to follow on physical test machines and then report back if I encounter anything weird. I was basically a human Selenium test runner. It was boring, manual work (I would often take naps in the washroom stalls to try to stay awake during the day). I actually did find some amusingly bad bugs like your checking account showing the wrong number. I didn't do any programming at this job but it was my first foothold into the technology industry and it helped me build enough credibility to get my next job interview. All I knew was that I didn't want to work at a bank again since business clothes were too uncomfortable!

2011

During my time in university, even though it wasn't taught, Ruby was the first programming language that I started to identify with. It was the language I chose for my passion projects. It was the mindset of the community around designing for happiness and the freedom you felt when using the language that got me hooked. DHH also just had a way of speaking and was a big influence. Python felt too sterile, professional, and the opposite of Ruby; JavaScript was something people tolerated at the time. I mostly learned through online Rails tutorials. Nowadays though I have more appreciation for Python's explicitness since I've gotten more experience working in larger orgs.

I landed my first real software developer internship at a small Rails shop in 2011 where I met like-minded Ruby enthusiasts. At that time, I still had no idea what I was doing having never really worked on a production website before besides static HTML and CSS pages. But it was thanks to that small team, I was able to jump start my development as a software developer.

2012

I landed another software developer internship at a small startup and had my first taste of a small SaaS company. This is the first time I got to experience the full processes around building, testing, and shipping software, working in larger codebases, and working in bigger teams. I was exposed to PHP and JavaScript. I got to touch production tables in the MySQL database by running my first database migration. I finally felt like I was an important and respected member of the team. I still remember that proud moment when someone made an offhand comment that they forgot I wasn't an intern.

2013

I landed an internship at my first Bay Area tech startup. It was a big moment for me. The Bay Area always seemed out of my league and the Waterloo students coming back from their Bay Area internships always seemed way smarter than me. Landing a Bay Area job for a Waterloo student is like getting a golden ticket to a private club where the champagne is flowing. Once you've stepped in, there was no turning back because everything else seemed to pale in comparison. There was a noticeable chasm between Toronto tech companies (where all my previous internships were) and Bay Area tech in talent, perks, pay, and technology. The company I was at felt way ahead of everything I worked on in the past. I reached my goal of being able to learn how websites like Facebook and Gmail were built.

The Bay Area wasn't all perfect however. The city kind of sucked, rent was expensive, and the tech community felt like a bubble socially and perhaps morally given the poverty so rampant in the city.

2014

I graduated! The graduation ceremony was meh - Canadian universities don't roll like US private colleges do. We were like high school kids packed in a fluorescently lit gymnasium and the guest singer totally botched the notes of the Canadian national anthem to something that sounded avant-garde. The thing I most remember about that year though was the sense of relief I felt opening the gymnasium doors and feeling the cold evening air brush my face after walking out of my last finals examination. It was a big weight off of my shoulders and I finally felt free.

I packed up, moved to SF, and started full-time at the last company I interned at!