I wanted to be a programmer since middle school. I saw a magazine article about a teenager named Blake Ross who was working on a new web browser called Firefox and I thought I could do that too. I liked math, and programming seemed like the sort of thing you do when you like math.
The first thing I ever built was a fan club website for a teacher named David von Minden, sort of as a joke. It was a Geocities website with a black background and lime green Courier new font, so it looked like how I thought code looked. I took an intro to programming class (which used Scheme) my freshman year, then AP Computer Science (Java) the next. I tried to learn C++ from the Internet but couldn’t figure it out. I had a computer in my room where I made simple attempts to build a program that could play Rock Paper Scissors and a video game for an English class project on Frankenstein. I did some robotics team competitions at my school, even missing my high school’s prom to go to a competition.
I got into the University of Oklahoma and I don’t remember applying to the school of computer science or anything. I wanted to do this 5 year accelerated master’s program. I wasn’t the best student. In my first Java class, there was a project where I spent hours looking for a single missing semicolon. I didn’t know how to read the error messages. I remember taking a Data Structures class - we had 6 projects. I got A’s on 3 of them and F’s on the other 3. I really enjoyed an Algorithms class later that year as well - I still have the book. I thought graph theory and Floyd-Warshall and Dijkstra were really cool. I took a Human Computer Interaction class, but I didn’t even buy the text book; we had a group project where my group created some sort of PHP based web app. I was lost and it took me a long time to just run PHP on my laptop. I don’t think I was even able to help out, someone else who ended up moving to Seattle later did most of the work. Turns out that was actually the most pertinent class to my eventual career, but I blew it off.
I didn’t really know what I wanted to do. I thought I’d end up in cybersecurity or something. I didn’t have any internships until the summer after my junior year, where I got a job with my friend Aaron and a few others working on a web app for a company called the K20 Center, which aimed to show low income students that college was feasible. We built software for the administrators and teachers. I didn’t have any experience at the time - I’m not sure any of us did - so I was just throwing stuff around trying to get it to work. We used ExtJS (now Sencha), and we didn’t have jQuery, and we did all of our PHP requests using XML. I still remember the day we found out about JSON. And when we later found out about Firebug! We also didn’t know anything about innerHTML - whenever we wanted to touch the DOM, we would have to manually create all of these DOM objects, like document.createElement, and append them wherever we needed them. We didn’t have any concept of modules or anything, so we just had all of our variables in the global namespace, on the window. I remember Aaron going back through my code and reducing like 5 lines of code into a single statement, but I was absolutely having a blast (Aaron and I became really good friends and saw each other at work, school, and church, and he ended up being one of my groomsmen).
I was reading stuff from CSS Tricks and David Walsh and Codrops back then, all of which are still around. I was just trying to get things to animate around the page and have rounded corners and handwritten fonts, all from my Notepad++ editor. I wouldn’t know how to quit Vim until several years later, about the same time it became really easy to have rounded corners.
I tried to make things. Ruby on Rails was huge back then, so I got some books from the library and spent days trying to get the environment right on my Windows laptop. Ruby versions threw me off pretty hard. The scaffolding stuff wasn’t that much fun and eventually I wrote a small app on Sinatra and put it on Heroku. I also remember the night I learned about Node and got one of those simple Hello World servers running.
The first modern web project I did was an RSS feed aggregator called What What Now - I even bought whatwhatnow.com (I just had it for a year)! I remember we had some snow days in school, and so I was sitting in my college apartment for a few days working on the site. I had three columns, and you could customize the layout by dragging these feeds around and choosing the color scheme. I had a bunch of predefined RSS feeds and you could add your own, and it used the nascent localStorage API so that you didn’t have to authenticate or anything.
There was a Christmas break where I decided to make a Wordpress theme based completely off of Facebook’s layout. I found out later that whenever I posted links, Facebook was actually throwing up warnings because the layout was similar enough that I could have reasonably been trying to phish users. I bought my second domain around that time, dchang.me, and hosted that Wordpress blog there (you may notice that this is where my email account now originates).
I was close to finishing the accelerated master’s program at OU in 4 years, but was a few courses short and was expecting to have to take a ninth semester to finish it up. I had crammed in some classes in my 8th semester and my grades came through as insufficient - I got like 3 C’s. I thought I was in the master’s program already and would have just been put on academic probation, but someone else didn’t see it that way. Instead, I was rejected from the master’s program. I exchanged some emails with a faculty member, but nothing resolved and I eventually stopped getting responses. My mom wasn’t very happy, but she was still supportive. I didn’t have a job or anything, since I expected I’d be in school for one more semester.
I did a bunch of interviews, but I couldn’t get very far. I did some startup speed interviewing thing called Hirelite, where you got to talk to like 30 different startups, each one for a minute. I talked to all sorts of companies in New York and in San Francisco, and I really wanted to move to New York City. I still have all of those old emails. I eventually got connected, through Aaron, to a group of Stanford students who were going to take a break from grad school to pursue a social shopping startup. I remember taking a phone call in my kitchen and showing them What What Now and I ended up getting the job. They offered me 33k a year (starting with a 2 month trial), living in San Francisco; it was so low that my mom was suspicious - but it was something, and I was pretty intent on taking it. My friends in Norman, OK, took me out bowling as a farewell, and I still remember my friend Daniel gave me Four Loves by CS Lewis as a farewell gift (it was the book I read a few months later that encouraged me to pursue marriage). I moved to San Francisco a few weeks later and didn’t even know where I was going to stay the day I flew there. Somehow, the people I was gonna work with were able to find me an apartment, and then we were able to secure a mattress from Craigslist, all of which happened the day I arrived. My room had private rooftop access, where I would go out and play my guitar at nights. I was living in North Panhandle and would run through Golden Gate Park in the mornings; on a good day, I’d get to the Pacific Ocean or the Golden Gate Bridge. My stay was a mile away from where we all worked, in the Lower Haight.
We were called StyleSays, and I was employee number 4. It was Python (Django) and jQuery. I had a blast, too - I felt like I was living the Silicon Valley dream - but at the same time, I didn’t really know what I was doing and the company was a bit too small for me. I didn’t understand that I was supposed to be part of the product design and marketing and user research. We’d work really hard for two weeks to hit an artificial deadline, then we’d look at our user numbers and pivot hard. This went on every two weeks. One of the guys there was working 100 hours a week. I lasted two months and then stopped working for them. I wasn’t sure I’d be able to find a job, so I gave myself a month and said I’d just move back to Oklahoma if I couldn’t find anything. I wasn’t making much, so I was basically only eating peanut butter sandwiches and Ramen. I was actually pretty financially conscious and rarely went out to eat. A few months afterwards, I found out that they moved to New York City, so if I had tried to stick it out, I expect I would’ve made that move with them.
I was blessed to get a job at Amazon in Seattle, so I got another one way flight to Seattle and lived with my aunt and uncle for the first few months. It was winter, my first day fell on the week of Christmas. My team was called Fulfillment Technologies - basically all of the warehouse stuff. We actually got to go to Phoenix for a week and work out of a warehouse. That was about the time they bought Kiva for 750 million and started thinking about how to incorporate robots in our warehouse processes. My team was super backend and had only two other people. Within a year, the others had left and I was the most senior. But it was also not really good work, and it was high turnover, and so within a year of me leaving the team, everyone else I knew on the team was gone (actually, almost all of us ended up at Facebook). In the 15 or so months I was there, I really only wrote integration tests and got a service deprecated. It wasn’t that great of an experience, though I know others who have had great experiences at Amazon.
I went to this small company that did mobile advertising technology called TUNE (HasOffers at the time). They hired me because I was pretty passionate about it. That was one of the best times of my career. We had a small team doing a bunch of Angular development, all of us learning together, feeding off of one another. We had a fair bit of autonomy and trust in the company, but we took our jobs seriously and upheld a high standard. With that group, I got to go to the first ng-conf in Salt Lake City, then FluentConf in San Francisco where I met Christopher Chedeau and Paul Irish and Yan Zhu (she now works on Brave with Brendan Eich) and someone from the Angular team. I also won an article contest and got to go to the first ReactConf in Menlo Park at Facebook headquarters, the conference where they announced React Native and let me into some secret beta, though I didn’t make good use of it. I even gave a lightning talk at an Angular meetup on how you could write validated forms in Angular with hardly any code in your controller! I still remember when we adopted Babel (then, 6to5) and React (though we had been investigating Polymer).
From working there, I had come up with something called ngReact, which was a pretty simple bridge to be able to use React components in Angular. It was kind of big for me though. Christopher Chedeau emailed me one day and asked me if he could feature me in a newsletter. Now, the project has a really solid maintainer in Europe and has amassed just short of 2500 stars on Github. An ad network even reached out to me once and asked if we wanted to put ads in our documentation to monetize. I haven’t been involved with the project since Angular 2 was rumored.
We had like a 48 hour mobile game hackathon once, one of my best team experiences ever. Game never made it to the app store, but we won the hackathon, the prize of which was literally an ounce of platinum.
TUNE was pretty amazing - in terms of culture, coworkers, and tech. I learned a ton, so much that I was able to get a job at Facebook after a little over 2 years at TUNE. Facebook had been my dream job, part of me is still surprised it happened at all. I flew down to Menlo Park and interviewed in building 20 and knew that I had done about the best I possibly could have done during the interviews. Christopher Chedeau was one of my interviewers again! And Tim Yung, who I knew from Twitter. Turns out I didn’t do all that well on the architecture interview! I had to redo the interview! But at least I could do it in the Seattle office, and I ended up passing that one. The guy who interviewed me ended up watching out for me throughout my time at Facebook Seattle, I still respect and admire him a lot.
Facebook was great, but it was also tough. I didn’t do very well there, and it wasn’t that great for me either. I worked on the Videos team, working on how people watch videos on facebook.com, then working on our TV apps. I got to be in meetings with people from Samsung and even flew down to the Bay one time to spend 2 or 3 hours with someone from Amazon before getting right back on the plane and flying back. The Menlo Park headquarters really are like Disneyland. But it’s a big company and I had a hard time doing well there. It felt like a competition and a lot of hoop jumping and I wasn’t that eager to do it all. It was still pretty crazy to see all of the infrastructure there and seeing TC39 and React core members and industry leaders/conference speakers walking around the halls. Whenever people visited, I would point out people like Jordan Walke or Paul O’Shannessy and say “those guys are famous.” I saw Christopher Chedeau once in the halls and he was still willing to stop and talk to me and ask me what I was working on. I saw Sebastian Markbage in the Seattle office and got to talk to him for like 20 minutes about React Fiber, though a lot of it went over my head.
It was pretty crazy that I could write some code and run an experiment to get some data, which casually meant tens or hundreds of millions of people were using my work. I felt like I had made it. But I was drinking like 2 Red Bulls a day and work was constantly on my mind.
I became miserable. I felt like the dumbest person in the company. Soon, though it’s hard to make sense of it, I felt like I was the dumbest person I knew. Some days, I’d feel like my code was garbage - as I wrote it, I felt like it was garbage!
So leaving Facebook was one of the best things that could’ve happened. Ending up at Airbnb was one of the best things that could’ve happened too. I flew down to their San Francisco headquarters to interview and was reasonably nervous, but they had a few interviews where they just talk to you and ask you about yourself and that helped me loosen up a lot. I got to talk about how I shared my house with people from my church and how I had wanted to move from the eastside to south Seattle to embrace socioeconomic diversity and how my friend Chris was influential in my life, so they eventually thought I matched their values, and, after the technical parts, which were important too, they eventually gave me a job offer.
This wasn’t meant to be that long of a post, but now, having written it, I realize it’s a good story. I kind of got lost in writing about the memories. It has meant a lot to me, how I got into web development and how different people have been in my life and have shaped and led me to where I am now. Maybe the point of the story is that, if you want to go somewhere, surround yourself with people you trust. They will make the difference in where you go.