“Catching Up” is Irrelevant
Getting started, however, is hard.
The summer before my freshman year of high school, I realized that I loved to swim. And so, much to the confusion of my family, I decided to pursue swimming seriously.
Around the beginning of the school year, I came to the realization that I sucked. I was really, really slow. But I really liked to swim, so I kept on practicing anyways.
Around January, to my complete surprise, I somehow managed to drop a significant amount of time in all of my races. I kept on practicing.
Over the next year, I gradually improved into a decent swimmer. I practiced more and more. By the summer before my junior year, I was swimming up to four hours a day. My goal was to move up to the National group, almost entirely consisting of kids who had been competitively swimming since age eight. I wanted it so badly that I didn’t skip a day of practice for months.
I woke up at 5:30AM, six days a week, during the summer.
I eventually moved up to that group. I eventually placed at Central Coast Sectionals—our large regional meet. I eventually swam in college and left my mark on the record board.
And then I quit. Why? I found something else that I was terrible at, but that I loved even more.
The summer after my freshman year of college, I interned at Square. From the first day, I was struck with one overwhelming notion: I knew very little about software development. Sure, I could solve algorithmic puzzles and whip up python scripts, but I had no idea what an HTTP request was and had no clue how GitHub worked.
I felt really stupid.
Midway through the summer, I found an incredible mentor (Tim Morgan) who stayed late in the evening to teach me about web development with Ruby on Rails. I still felt totally lost—Tim would talk about a concept, and most of it would go way over my head. I would ask him to repeat the same sentences over and over, then ask him to explain something basic, like what a GET request was. In my spare time, I learned rudimentary HTML and CSS on Codecademy.
That summer, I went to my first hackathon—Greylock Hackfest. My team spent the first 6 hours wrangling with Rails before failing and deciding to learn how to create an iOS app. I begged my friend to help me with rudimentary app development—while I had learned cocos2D at MakeGamesWithUs, I had never created a vanilla iOS app before.
Over the course of the night, I learned about views and view controllers, storyboards, Parse, and the Twilio API. Our app was rudimentary, but we were incredibly proud.
Somewhere over the course of that all-nighter, I realized that sitting there for hours, coding and figuring out how things worked was fun. I signed up for PennApps and MHacks for the fall.
I have never felt more helpless than I felt at PennApps that fall. Our team couldn’t figure out simple OAuth, and simply gave up. At MHacks, I managed to finish a “hack” that was essentially a visual interface for an API call. I remember my friend, who had started developing apps in childhood, telling me, “I’m probably 100 times the developer you are. And, quite honestly, in a couple of years, that gap will narrow, but I’ll always be ahead. You’ll never catch up.”
For some strange reason, though, I still liked to hack—to create things that other people could use. I kept playing around with Rails—it was still pretty fun. In January, I went to MHacks and learned about iBeacon. We failed to implement a lot of functionality in the app we made, but I got to sample iOS development once again.
HackTECH was my fifth hackathon; I went with some friends I knew I would work well with. Yet this time, when we started our hack, I realized that I concretely knew what was going on. Somewhere in between hackathons one and five, I had developed a deeper understanding of the web. And, to my complete surprise, we finished our hack with all intended functionality and won $3k.
It was the first time that winning was even a possibility in my eyes—definitely a turning point. I kept on going to hackathons, and sometimes we won a prize.
The past summer, a team of friends and I went to Battle of the Hacks. We won the first prize of $50k (to use towards organizing HackMIT). We went on to win 2nd place at YCHacks.
Why did I start with a story about swimming? My point is that I completely and utterly sucked when I started, much like I sucked when I first started hacking. And much like swimming, when I went to practice day after day, I kept coding in my spare time, gradually learning more and more.
Many in the CS and hacking world are concerned about “being behind” or “starting late.” Yet, a start date doesn’t define your enjoyment of coding. Yes, someone who has been coding for a decade may think your janky iOS app is lame, but you shouldn’t. And, eventually, with practice, everyone gets far better.
I still often feel like I know very little about coding. When I looked at Node.js for the first time in the summer, I felt like I was right back at PennApps, fiddling unsuccessfully with OAuth. I can play around with code and read documentation for hours without making significant headway.
Yet, there’s something about the little successes—when you finally figure out how to fix that routing problem or when your project first takes a coherent shape—that makes it worth the hours of frustration. That feeling of accomplishment, when something finally works, is what draws me to development.
There’s no need to start perfect. Be proud of what you’ve done and let it motivate you to do more.