How I Would’ve Done College Differently

This is adapted from a talk that I gave at Columbia. It’s targeted towards students studying computer science, but hopefully it’s also generalizable.

Whenever I try to give advice, I’m often reminded of an idea I stumbled upon a while back about how advice is just limited experience widely over-extrapolated[0]. There’s also another great quote from Hunter Thompson[1]:

For to give advice to a man who asks what to do with his life implies something very close to egomania.

But somehow I’ve put myself in the position where I, a real-world adult of only two months, am trying to pretend like I’ve figured it all out and offering advice to college students. So thus, as a disclaimer, you probably shouldn’t take what I say on faith, and instead take these thoughts as suggestions. Perhaps they resonate enough with you so that you give them a second thought.

Since starting my full-time job, I’ve been thinking a lot about how I could’ve done college differently. There are so many different moves I could’ve made in the chess game of college, and it’s quite unfortunate that I only got one go-around. But the good news is that you still have time. In fact, you have so, so much time. So without further ado, let’s get right into it.

Classes

In college, I spent the largest percentage of my time on classes. One semester I kept a spreadsheet of all the hours I was spending on various tasks, from doing homework to sleeping to exercising. I had calculated that every week you have 24 * 7 = 168 hours, and if I spent 7 hours a day sleeping, I would have 119 hours left. Unfortunately, I think I wasted too much of those 119 hours on classes. One of the biggest traps that I fell into was trying to get as close to the credit limit as possible and also trying to take as many hard classes as possible when I had no business taking those classes (e.g. I took machine learning before I knew a single thing about linear algebra, which was quite the mistake). My rationale was that I was wasting money if I didn’t maximize the number of credits I took, and thus, I was getting the most bang for my buck. But now, I realize that in school, quality is way more important than quantity. It would’ve been way better for me to take fewer classes and to spend more time on each class.

That’s kind of bland advice, so let me try and spell out what I mean by spending more time on each class. Towards the end of my college career, I ended up going to office hours a lot more, not because I was struggling more with classes, but because I realized that I learned exponentially more through talking to my professors 1-on-1 rather than going to class. These professors are literally some of the smartest people on the planet, and they do this thing where they have these weekly sessions where you get their undivided attention for a couple of hours. I would pay good money for that opportunity again. It’s kind of mind-blowing that more people don’t take advantage of this. I felt like I was actively squandering my parents’ money when I didn’t go to office hours. Imagine about how much it would cost to have a private lesson each week with Albert Einstein on anything you wanted.

I also would’ve spent more time trying to remember what I learned in my classes. As a person who doesn’t have a fantastic memory, I always hated how if I tried to recall what I learned in a class I had taken the previous year, I would come up with almost nothing. It doesn’t have to be that way though. If I had actually cared about learning for the sake of learning, I would have revisited the material after I had finished taking a class and made sure that I didn’t forget the important parts.

Grades

I wish more people talked about grades. Not necessarily what grades they got, but to what extent grades really matter. When I got to college, I thought that grades didn’t matter at all. I thought I had finished the rat-race of getting just enough to get an A. Now all I needed to do was to pass my classes, and everything would be fantastic. But then I found out that I was wrong, and that getting good grades is actually kind of important.

People often say that grades don’t matter if you want to go into tech. You can just leave your GPA off of your resume. But what I learned is that actually hurts you for certain types of positions (e.g. academia and places like Google). It’s really disingenuous to say that you shouldn’t worry about them at all. They do open up a lot of doors.

At the same time, I think most people over-weight the importance of grades. I often compromised on the quality and depth of my learning to go from an A- to an A or a B+ to an A-. Instead of actually trying to learn the important material in the class, I would memorize every obscure fact that could possibly get me another point on the test. Towards the end of school, I found that some version of the 80/20 rule is a good rule to apply to spending time on classes[3]. One heuristic that I like to use to check if I’m actually learning the important material is to see if I can explain why the stuff I’m learning is both interesting and applicable to the real world or to the advancement of the subject.

Internships and jobs

For most people, one of the most important things in college is getting good internships and the best full-time job. However, I found that it was not exactly clear how to go about doing that. After having gone through a couple of years of job searching, I think the best general advice I can give is summed up by one of my favorite quotes from Charlie Munger (Warren Buffett’s business partner)[2]:

“What’s the best way to get a good spouse? The best single way is to deserve a good spouse because a good spouse is by definition not nuts.”

Like good spouses, good companies are also by definition not nuts, and thus will have designed their application and interview process to select for good, qualified candidates. Although the process is far from perfect, it is also not completely random, and thus, the best thing that you can do to get the job that you want is to become a person that deserves to get an offer.

How do you become deserving of an offer though? I think the high level answer is quite obvious: work harder and smarter than everyone else. However, it seems that people often fall into the trap of believing that it is simply impossible for them to catch up to other people because of some innate talent for computer science and software engineering or because their raw intelligence was off the charts. The thought goes something like: no matter how hard I am willing to work, I still have no chance. But from what I’ve seen, that’s an extremely faulty assumption. I think it is indeed true that the playing field is not level, as are most things in life, but that doesn’t mean that there is some meaningful asymptotic upper bound on how “good” you can be[4].

I think becoming a good programmer takes time and effort. The best programmers that I know are good, not because they are really smart, but because they spend an incredible amount of time on programming. They’re the ones that are spending their free time working on side projects or reading about neural networks. Of course, being “smart”, however you want to define that, is an advantage, but I’ve seen many “smart” people who are mediocre programmers. Again, I’m reminded by a quote from Charlie Munger:

“The very nature of things is that if you get a whole lot of volume through your operation, you get better at processing that volume. That’s an enormous advantage.”

Perhaps the most practical advice I can offer is to dedicate time to becoming a better programmer. If you spend an hour a day on becoming a better engineer for the last two years of college, that’s 365 * 2 = 730 hours of time that others are not putting in. My freshman year, I told myself I would spend 2 hours a day working on side projects, and that was one of the best choice I made during school.

It also doesn’t really matter how you spend those hours. I think a lot of people stress too much over what they should be learning. Should I learn about web apps? Or mobile apps? Or data science and machine learning? I spent a ton of time at the beginning of college learning Ruby on Rails to build websites. I never used Rails again after freshman year, but the important thing was that I spent a lot of time banging my head against the black magic that was Rails. I would work on whatever seemed fun and interesting.

Choosing a first job

These days, it’s becoming much more straight-forward what kind of path you should be on if you’re studying computer science. The end goal is something like a job at Google or Facebook or some hot startup, and the path to get there is to become very good at interviewing in order to get good internships which will translate into a good full-time job. I think this is rather unfortunate, as it means that people will start just following the formula and won’t seriously consider all the options that are out there.

I wish I had spent more time in the beginning looking into all of the options. For most of college, I had no idea what it meant to be, for example, a product manager or quant or professor[5]. After I did learn about more career choices, I found that most of my initial impressions were quite wrong. Don’t trust all the stereotypes.

Meta-advice/Closing thoughts

One of the weird things about trying to give advice is that only rarely do people ever listen to advice. Why is that?

Let me turn once again to Charlie Munger for help:

“The human mind is not constructed so that it works well without having reasons. You’ve got to hang reality on a theoretical structure with reasons. That’s the way it hangs together in usable form so that you’re an effective thinker.”

Perhaps the single most important strategy that I’ve learned is to ask “why, why, why” for until you get some sort of axiomatic explanation for literally everything. The exercise of justifying something with the rigor of a mathematical proof is how I think you develop a theoretical structure with reasons.

Ever since elementary school, I’ve constantly been told how important “critical thinking” is, but I’ve never understood what “critical thinking” really means, let alone why it was so essential. But now I think I get it. And that’s the strange thing about advice: it always seems so much more profound afterwards.

[0]I’m pretty sure I picked this up from Patrick Collison who was quoting someone else, but I can’t quite remember the source…

[1] https://www.farnamstreetblog.com/2014/05/hunter-s-thompson-to-hume-logan/

[2] Poor Charlie’s Almanack is a fantastic read.

[3] https://en.wikipedia.org/wiki/Pareto_principle

[4] Theoretically, I think there is a bound based on life expectancy, but it’s not a meaningful one in any case.

[5] For some reason, a ton of people want to go into product management now instead of software engineering. I worry that most people don’t understand what the day-to-day of a new grad product manager is like. I’d recommend asking one of them about it, if you’re at all curious!