A retrospective on my journey in tech
2021 February
I’ve wanted to write a long-form retrospective like this for a long time, and never got around to doing it.
High School
I discovered CS by accident while taking the required Intro to Computer Science at Stuyvesant High School in my sophomore year. The course spent a semester teaching Scheme (truth be told, I didn’t fully grasp recursion until years later), and by the end of the course I was intrigued in “computer science”. It wasn’t that I was especially good at it; I scored around the mean on every exam I took, and compared to some of my classmates who had known about coding for years I was far behind.
When I learned that Stuy offered 3 full years of CS electives, I signed up for one after the other, and my courseload eventually looked like:
- Sophomore Year
- Intro to CS 1 (Scheme)
- Intro to CS 2 (Python)
- Junior Year
- AP Computer Science
- Senior Year
- Graphics
- Systems Programming
- Software Development (mostly web development)
By the end of senior year, I had sunk hundreds of hours into programming. I spent a summer working on a mobile 2D shooter with friends one summer (we used a terrible Java library), two school years competing in MiT’s Zero Robotics competition, attending programming competitions like PClassic, and emulating the smartest coders in my class (furiously learning git, emacs, and linux).
After being one of <15 students chosen from my high school to spend the summer before college interning at Morgan Stanley, I was certain that this was what I wanted to spend my time at Cornell pursuing.
Internship 1 : Morgan Stanley
I interned in the Technology & Risk Division at Morgan Stanley, well technically as a “summer analyst”. I got paid $25 (!) an hour (more than I had ever gotten paid), and seeing the biweekly ~$1300 direct deposit checks made me feel more wealthy than I’ve ever felt to this day.
I remember whispering to other interns about hearing that college interns got paid $30 (!) an hour, and having to wear business casual each day felt more like a perk than a drawback.
I learned how to use vim (which nearly everyone on my team used, since we had to SSH from our Windows Enterprise systems into linux boxes), which started a vim obsession that has continued until today. Other than that though, I basically did nothing. I was assigned a few projects that I don’t remember completing, and mostly sat around drinking free coffee, doing crosswords, and playing chess at my desk – only to switch to a different tab when I saw my manager approaching.
In short, I thought I was in heaven that summer – and my conviction to major in CS grew even stronger.
College: Freshman Year
Honestly, when I started at Cornell, I thought I was superior to the majority of prospective CS majors I met. Most of them had never coded, never mind interned anywhere – while I was coming fresh off a summer at Morgan Stanley, planning on skipping the intro CS course, and jumping into Honors Data Structures.
Project teams at Cornell (in short, engineering clubs funded by Cornell) were the golden ticket to success in the engineering disciplines, and CS was no exception. In my freshman fall, everyone was applying to them. I remember feeling haughty after getting interviews from all the ones I applied to, but I had never gone through a technical interview before. In my arrogance I didn’t prep, and couldn’t solve the most basic interview questions – one project team asked me to write an algorithm for fibonacci, which I awkwardly fumbled for 20 minutes at a whiteboard. In short, I was rejected from all of the ones I applied for.
This only compounded when I applied for internships – by the time career fair came around in October, I was nurturing my hurt feelings and vowed to prep hard for any interviews that came my way – but I never passed the resume screen for any company I had heard of. (In retrospect, this was more karma).
My fall from grace only continued – I received the lowest score on the final in Honors Data Structures – I infamously drew a Christmas Tree after having no idea how to answer the question: “Draw a DFS tree for this graph, starting with node A”. I struggled through most of my freshman year classes, constantly questioning whether my success in high school had been a fluke, but became fixated on proving myself by finding a coveted freshman year internship.
I applied to hundreds of companies through AngelList and nearly every company on this list. In my free time, I attended hackathons, winning Cornell’s Fintech Hackathon in NYC, continued exploring side projects, and worked through endless interview questions.
After being demoralized by countless interviews and rejections, my luck paid off in March when I received an offer from a small short-form video startup in NYC, Quickframe.
Internship 2: Quickframe
The CTO at the time told me that they were working out of a small office hallway in NYC. Yes, you read that right: a hallway. Thankfully, right before the summer started they were accepted into R/GA Ventures, and the CTO let me know that they would be sharing R/GA’s beautiful office based in NYC.
The pay was $15 an hour and they offered to cover my transit + food expenses, and although it was less than what I was paid the prior summer, I was happy to be working anywhere.
The company was under 10 people, and in terms of engineering we had the CTO, two engineers, and three interns. It was a scrappy culture – each week we had all-hands meetings where I sipped on sparkling water (on tap) and listened to our CEO inspiringly preach how our product was going to change the world.
The tech stack was pretty horrible in retrospect – it was Django + AWS (no React!), and the front-end code was complete spaghetti. In fact, the tech was so bad that our account managers used e-mail and excel spreadsheets for everything they needed. Unfortunately, on top of functioning terribly the code was saddled with technical debt, due to poor architectural decisions made by the CTO from the onset.
With that said, that’s not how I felt at all during that summer. I remember being awed by the ability to merge into the master branch and seeing my changes in production, and I came into work each day excited to contribute to the vision the CEO had laid out so vividly. I remember becoming disenchanted with the prior summer at Morgan Stanley, realizing that all the “work” I had been doing was silly intern projects.
I listened to my coworkers talk about how they loved the startup life. When I asked “what do you think of Big Tech?”, they described how only soulless people worked there, and when I asked if they had ever applied, they admitted that they had been rejected – but this didn’t change how they felt about those companies. Even at the time, I found this ironic, but I was enamored with “startup life” too.
College: Sophomore Year
I started out sophomore year humbled by my experience the year prior yet reinvigorated by my experience at the internship. Since I wasn’t part of any clubs in freshman year, I had crammed in as many courses as possible. With the wealth of APs I had taken in high school, I found that as a sophomore I was already eligible for CS courses meant for upperclassmen, and to my surprise I found that I enjoyed these much more than the introductory courses I had taken. Still, I didn’t perform very well and I was a poor student – skipping lectures and sleeping in, but I found the subject matter interesting and I liked the mental hoops the programming assignments took to complete.
I reapplied for just two project teams, skipping the two I felt most emotionally scarred by. I coasted past the interviews for one project team but when they asked me “why do you want to join?”, I was rejected after admitting truthfully “I’m not too sure”. The other project team I applied to was Cornell AppDev on my friend’s recommendation. I was grilled for 45 minutes with no idea how it went, but I was surprised to see an acceptance e-mail a few days later.
I didn’t know it at the time, but this would be one of the watershed moments of my life.
When I joined I was awed by everyone else on the team. It seemed that every senior was going to a company that I could only dream of working at – Google, Facebook, AirBnb, Palantir, the list went on. It was shocking to be working with people whose profiles I had only read through enviously on LinkedIn. The project team leveraged their industry experience to deliver beautifully polished apps, and the backend team in particular was focused on creating scalable efficient services for our apps to leverage. Truthfully, I was completely lost – members on the team dismissed problems I had no idea how to solve as “trivial” and “easy”.
AppDev created mobile applications for the Cornell community – during my time on the team, at one point we had over 12,000 monthly users in the Cornell/Ithaca community. The backend team was also extremely senior-heavy, with only three non-seniors on the team when I joined. Furthermore, AppDev had started an accredited student-led course on Cornell’s campus, Intro to iOS Development, and the team wanted to follow up its success with one for backend development.
This created a perfect storm – although I had no idea what I was doing, I decided I was going to take advantage and learn through trial by fire. I volunteered to help out with the course in my spring semester, ran to become the next Backend Lead late in Spring, and tried to soak up as much knowledge as possible.
In the meantime, I went to career fair again in Sophomore fall, and ended up hearing from two companies early: Yext and Facebook.
I received Yext’s intern offer after a resume screen + two phone screens, and when I first heard it I thought the recruiter was pranking me:
- $10,000 sign-on (yes, you read that correctly)
- $8,000 monthly salary
- $2,000 monthly housing stipend
With the Yext offer in hand, I made it to Facebook’s onsite round feeling like I was playing with house money. Although graphs were my weakest interview area, I luckily got a question that I remembered seeing somewhere, and was confident leaving the MPK campus that I had done as well as I could have.
My roommate (who had the same onsite interview date as me) received his Facebook offer first, and I was seriously anxious I wouldn’t have the same fate. I remember checking my email each hour waiting for the fateful email, and yelling and running into the hallway of the dorm after it arrived in my inbox. Honestly, I think that was the happiest I’ve ever been after any acceptance letter.
The decision between Yext and Facebook came down to a simple question: What if I don’t like the company? It was clear that in that case, Facebook would be better simply for the brand recognition. Besides, Facebook was based out of MPK, while Yext was NYC-based, and I wanted to know what it was like to live in the infamous Bay Area.
Internship 3: Facebook MPK (Menlo Park)
What can I say? I was thrilled to be interning at Facebook. I was going to be living with my roommate from Cornell (who also ended up joining AppDev as an iOS developer), in sunny San Mateo.
The Facebook campus is so mind-boggling it’s hard to put into words, to the point it feels too utopian. You walk into a restaurant, order your food, grab a drink, and head to the counter – except it’s free. Head to the dessert bar and get some gelato – free. Grab some cold brew and some chips before heading home – free. Pick up your laundry from dry-cleaning and head to the state-of-the-art gym – still free. My best attempt at summarizing it would be a college campus + Disneyland + amazing food, except everything’s free.
I interned on the Free Facebook team under Internet.org, working on Android development. The advice I got from upperclassmen in AppDev was to explore throughout my internships, and to work in areas I hadn’t experienced before. This of course was a calculated gamble, since I needed the internship to go well to get a return offer.
Facebook’s tech stack was amazing to experience. Everything worked in tandem to create a seamless development experience – the internal tools, the languages, the editors – all developed in house and deeply integrated with one another. It baffled me that the rest of the world was working with tools that were thoroughly eclipsed by what Facebook had developed in house.
Everyone that I met was smart and motivated to work on challenging problems. Around this time I realized that much of the work I had done to this point had already been done; I was working on problems that had been solved before. It wasn’t a question of whether something could be done when you got an interview question or a programming assignment, it was a question of how. However at Facebook, the problems I was working on were unique – you could only run into these when billions of users were on a platform. It was an added dimension of problem solving – not only solving problems, but the art of figuring out which ones were even solvable and then prioritizing the right ones to spend time on.
Everything about the internship was new to me: the company, the team, the tech, the product, and the project I was expected to complete. Despite that, my manager and team were incredibly supportive, working with me through simple issues (not so simple at the time) and constantly giving me constructive feedback on my code.
I heard that the intern -> intern conversion was much easier than intern -> full-time, and my manager reassured me each week that I was performing well for an intern. Still, I was relieved to finish the summer with a return offer.
College: Junior Year
When I arrived back at campus in Junior year, it was a bit of a shock. I felt like I had spent all of sophomore year + summer in the deep end of a swimming pool, learning more in that stretch than all my other experience combined.
However, I came back to Cornell as the newly minted Backend Lead of AppDev, and the lead course instructor for the student-led Intro to Backend Development. I was an upperclassman expected to mentor others, and I wasn’t sure how I felt about that. I wanted to prioritize my own growth as an engineer and continue to soak up as much knowledge as possible before leaving college.
With that in mind, I realized while choosing courses that it was feasible to finish up my requirements and graduate this year. This gave me three options:
- Graduate in four years, leaving an entire year to explore electives.
- Graduate in three years, go to industry a year early.
- Graduate in four years with a B.S. (in three) and a M. Eng (in one)
I won’t go into the details here, but after much thought and discussion, I went with the last option.
I learned invaluable lessons through mentoring others that semester, and was encouraged by others to run for Team Lead (President) of AppDev. Although I would never consider myself remotely comfortable with leadership, I realized that this could be a way to stay in the deep end of the pool.
Becoming Team Lead in my second semester brought its own learnings and challenges, and it was insane to me that I had somehow ended up responsible for the organization I had idolized just a year prior.
I decided that after interning in the Bay Area, I wanted to experience living in Seattle (which I viewed as the last tech hub I hadn’t lived in). I also wanted to work on something unrelated to what I had done last summer & the work I had done on AppDev, so when Facebook let me know that I could work on PL&R (programming languages & runtimes) in Seattle, it was the perfect excuse not to spend bandwidth recruiting for other companies.
Internship 4: Facebook SEA
Compared to the Disneyland college campus that was the MPK office, the SEA office was a modest two buildings – Dexter and Westlake (I think they’ve expanded further since I interned).
I interned on the Hack team (a language built on top of PHP, which Facebook was originally written in). Compared to the product code I had written my entire life, the low-level infrastructure work was a breath of fresh air. The problems here were more nuanced and complex than before, and having a mental model of all the systems was a prerequisite.
Although I had taken Functional Programming (in OCaml) as a sophomore, it was fascinating to spend the entire summer working in OCaml + Rust, languages that were so far removed from the way I had thought about programming previously.
As a bonus, my team visited the London office during my first week, and exploring a new city was the perfect way to destress from the school year.
Throughout the summer, I was focused on answering one question: where do I want to work after graduation? I felt more prepared for technical interviews than I ever had, and I was confident my resume + network could get my foot in the door at any company I was interested in.
I recruited for just a few companies:
- Robinhood (onsite)
- Palantir (onsite)
- Two Sigma (onsite)
- dydx (onsite)
- Jane Street (rejected after phone screen)
However, I ended up not going to any of the onsites I had made it to, and chose to return to Facebook instead. My thinking was fairly straightforward: I loved the culture and the work I was doing, and the only X factors I had left were compensation and location. I was sure I wanted to work in NYC after graduation – I had given living in Seattle/Bay Area a shot, but growing up in NYC I had plenty of friends/family here.
After receiving my return offer (for the SEA office, where I had interned) I negotiated both location and compensation, and as I promised my recruiter I signed my return offer on the spot.
College: Senior Year
I was relieved to start the year without having to worry about recruiting. I had plenty on my plate: I was enrolled in 21 credits and starting the M. Eng, swamped with extracurriculars, and an urge to build before being tied down to my NDA at Facebook.
I consulted for a friend’s startup (recently went through YC!), worked on a social polling app, and began to feel the stress piling up – ironically writing Burnout on a plane ride at 3:00AM from a YC hackathon.
By the end of the fall semester, I decided enough was enough: it was time to relax. I cut as many commitments as possible, resolved to code as little as much as possible in the spring semester, and took on the lightest course load in my time at Cornell.
I had always planned on traveling the summer after college, and my start date at Facebook NY was scheduled for August. But when lockdowns started in March, I realized that traveling was going to be impossible. I decided I might as well start work early instead of lounging around at home over the summer, and moved my start date up to the first week of June.
Since then, I’ve been working on Resource Delivery (static resource delivery, i.e. html/css/js for web clients).
Thanks for Reading
If you’ve made it this far, thanks for reading. I hope this helps (in any way), and you can always reach me at yk465@cornell.edu.