Actionable Advice to my Former Self from a Recent Computer Science Graduate
I’m writing this partly for me as a way to introspect and completely digest an important phase in my life. But, I’m also writing this because I think this information will be useful for others. I know it would have been useful for me when starting out studying computer science. This post should contain useful information about attending university, studying computer science, and preparing for a career as software developer.
I started my Computer Science degree in Fall 2012 and graduated August 2015(Summa Cum Laude — if you care about that sort of thing). I actually started off my university education studying for a BA in Psychology. However, I dropped out of school for a year to work, do some guilt free non-school-assigned reading, and save up money for a trip to backpack through Europe. During that time, I reflected and chose to study CS. When I initially started my CS education, I had the fear I’d be entering a major where every student had been programming since they were 13 years old and I’d be outcompeted by everyone else. That fear turned out to be unfounded and I think it’s one that may keep others out of CS as well. If you think you might like CS, at least try it.
A disclaimer: I’m not particularly qualified to dispense this advice. All the advice contained within only deals with matters that I’ve personally experienced and would give to my younger self. You might or might not glean something useful from it. But, I do think I have a few experiences that give me a unique perspective or something insightful to say. If you want the best advice I recommend reading a biography on someone you admire or reading a classic novel. At least, that’s what I try to do permitting I have the time to invest.
1) Try new things
I’ve noticed the biggest “leaps” in my life have been when I’ve tried something new that takes me out of my element. I attended a tech entrepreneurship competition (3 Day Startup) on a whim the summer after my first year in CS. Again, I was worried I was under-qualified to attend such an event and would be surrounded by technology wizards. But I decided to attend and it turned out to be a pivotal moment in my life. During my time there I realized entrepreneurship might be a viable path that I could pursue. The pace of entrepreneurship provided me an outlet for a lot of my emotional intensity. And the immediacy and effects of your actions felt very satisfying. After the competition, I took up iOS development because our startup required an iOS developer. I didn’t tell anyone I didn’t know how to do iOS development. Instead, I silently went and purchased a Macbook and taught myself through Stanford’s iOS development course on YouTube and worked on the iOS app for 12 hours a day. This eventually lead to my first internship as an iOS developer. And then lead to me working with Dr Ziliang Zong and Dr Qijun Gu to commercialize a university invented technology through the National Science Foundation’s Innovation Corps. Time will tell whether I continue to work in entrepreneurship but the lessons I learned have been invaluable to my edification.
2) Write your résumé NOW and update it regularly
If you haven’t written your résumé — write it today. I’m sure you’re a great person and your identity and selfhood is as complex and rich as any other human being. I’m sure your mom thinks you’re great. That said. Employers first evaluation of you will likely be on how your résumé looks. The reason you should write it today and not tomorrow is because it will be a gut punch on what you need to work on. I was lucky enough to take a Technical Writing course my first semester that required us to write our résumé. I remember the day we had to turn in our résumés for a grade and looking around at the classroom. A lot of people looked defeated. I know I felt that way. I struggled to fill out one page with accomplishments. One page! Life shouldn’t be lived so that you can fill out an impressive résumé. But you should be mindful that time is ticking and eventually you will have to turn in a résumé. Will you be happy with what it looks like? Will it be strong enough to get you the kind of job you want?
3) Take care of your health
Exercise, sleep, and diet. For exercise, there’s no excuse not to do it. The science is already in. Exercise is amazing. It has so many benefits. You wouldn’t believe someone if they told you that scientists invented a single pill that increased confidence, improved mental health, improved memory and creativity, burned fat and built muscle, improved immune functioning, and more. Well exercise does all of that. It can be playing basketball, lifting weights, yoga, gardening, whatever.
Sleep. I have a particular interest in sleep as I’ve struggled with insomnia on and off since I’ve been a teen. I think there’s an insidious belief, especially among high achievers, that getting little sleep is a badge of honor. You read stories how Steve Jobs or Elon Musk slept 4 hours a day while running multiple companies. Well, these people are outliers. There are certain people who can operate on less sleep and last I read researchers are exploring the genetic component of it. However, most people require around 8 hours of sleep. As with most human properties, it’s variable and 8 hours is the mean.
Diet. I’m still working on this one. Eat lots of fruits and veggies. Make sure to get your protein. Cut back on sugar and saturated fats. Eliminate trans fats.
Stimulants (caffeine, adderall, etc.) might be great in a crunch for studying but I’d advise against getting in the habit of taking them regularly. (Unless of course you’re prescribed them.) You shouldn’t need much stimulants anyways if you take care of your exercise, sleep, and diet.
4) Learn to find balance
If you’re like me, you have a lot of different interests and you want to explore them all. I’ve come to the conclusion that there’s no “having it all”. If you focus a lot on your relationships your grades might suffer. If you focus a lot on your grades your hobbies might suffer, etc. Time is your most valuable currency. You have to decide what is most important to you and then be okay with the tradeoffs it requires. If you spend all your time currency on partying late at night you’re not going to have much time currency for studying. Going further, you’re always spending your time currency even when you’re not thinking of it. Sitting at home all day relaxing and not doing much? Don’t be surprised when you don’t have enough time currency to work on that interesting project you’ve always wanted to get around to but now you’re too busy to to do it. Of course, relaxing is also an important thing to spend your time currency on as well. The key is finding a balance you’re comfortable with. I’m still working on this.
I’ll also say this. Almost every ridiculously successful person I’ve listened to (and I’ve listened to lots — from comedians, to physicists, to entrepreneurs, to politicians) says they wished they would have relaxed more when they were younger. But, I think the caveat here is, perhaps they would have not been so successful had they been more relaxed? I’ve yet to hear a ridiculously successful person talk about how they relaxed when they were younger and they’re glad they did. As far as I can tell, the key to ridiculous success is to work really hard, and then once you’re successful, comment on how you wish you relaxed more. I think the takeaway again is: Decide if your idea of success is having lots of fulfilling relationships or collecting interesting experiences or intellectual growth or whatever. Then pick a balance you’re comfortable with.
5) Learn to play the game
When I first started college I literally didn’t know the difference between a Bachelors, Masters, or PhD. I didn’t know what a GPA was or how it was scored. I didn’t know the difference between a scholarship or a grant. I didn’t know what the economic function of a university was. I didn’t know a lot. I was a first generation college student and the extent of my advice for college was: “Go to college.” You need to learn how to play the game when you’re in college. Learn how to pick the best professors, learn how to protect your GPA, learn what the motivations are of students versus professors versus administration.
6) Always be learning
Read, listen to podcasts, watch video lectures, etc. Learning will give you an information advantage over everyone else. However, an appreciation of learning may need to be cultivated. In high school I almost never read or watched lectures outside of class. After high school, I read a few books that fundamentally changed the way I thought. I realized knowledge was fascinating and I became hungry for these life-altering experiences again. I think the path to appreciating learning is finding something you find interesting and learning about that. It can be anything. Learn about photography, or the history of dance, or evolutionary psychology — whatever you find interesting. I’ve found that learning about one topic opens up your appreciation for other topics. For example, reading about the history of WWII might lead to an interest in politics which might lead to an interest in economics which leads to an interest in psychology, etc.
7) You can be broad, but have at least one focus
Being broad is great for fully exploring the textures of human experience. I believe that reading poetry, learning how to swing dance, or learning about the history of an inconsequential village in the middle of nowhere will make you a better person. Broadness gives you a web of knowledge to relate disparate ideas and relate psychologically to yourself and others. To give a computer science example, learning multiple programming languages helps you understand each one better had you only learned one language. Each language will implement different paradigms and patterns. Learning those will help you understand your primary language better as you compare and contrast the languages. And really, a good computer science education should give you a broad overview of the field of computer science.
However, while being broad might have more intangible or non-obvious benefits, I believe it’s necessary to have at least one focus. Find something to claim as your speciality. Some examples for future software engineers include: machine learning, security, web development, mobile development, game development, etc. Future employers are looking to fill a specific role; not hire someone only to have to spend time training them. (The exception lies with large companies that can afford to capture “new grad” talent before they run off to their competitors. (e.g. Google, Facebook, Linkedin, IBM, etc.))
8) Always challenge your own and others thinking
Don’t get comfortable with what’s considered “practical” or “how it’s always been done” or whatever. Certainly things are often done a certain way because others have cleared the path before you and the path is often a good one. However, there’s almost always room for improvement or a new approach altogether. You might have an O(n log n) approach to life right now but maybe there’s a O(n) approach you haven’t considered? Unless the current world is the best of all possible worlds (it isn’t) — there’s room for improvement. Something in your life or someone else’s life can be improved. Whether it be relationship problems or financial problems or community problems, etc. There’s a boundless amount of questions to answer, processes to improve, and problems to solve.
Relax. The fact that you actually read something like this already puts you ahead of your peers. The worst outcome you imagine won’t happen and even it it does — you’ll be fine.