“Keep in mind how fast things pass by and are gone—those that are now, and those to come. Existence flows past us like a river: the ‘what’ is in constant flux, the ‘why’ has a thousand variations.” - Marcus Aurelius
end of the beginning
As I sit here in my apartment having written my last exam, getting ready to move out, I can’t help but feel sentimental about the five years I’ve spent studying computer science at the University of Waterloo (UW). It somehow feels like being a student here is all I’ve ever known, yet it’s gone by so quickly. While COVID-19 has brought a pretty anti-climactic end to my almost two decades of schooling, I’ve still had such a rich experience at UW that’s worth reflecting on. Although there is no way I can completely go over all of the lessons that these years have taught me, these are a collection of thoughts that I would have found valuable to read before my freshman year.
learning to learn
I sometimes look back on how much time I spent doing assignments in first-year and wonder whether it was really that hard or if I was just inefficient with how I was spending my time. Every subsequent term since then has felt increasingly more manageable and I feel like I’m walking away with a good understanding of what works for me and what doesn’t when it comes to learning. I likely won’t be using Hoare logic or solving homogeneous recurrences going forward, but the knowledge gained in learning how to learn makes me confident that I can pick up on new concepts effectively.
For me, I found that doing a little bit of a few courses every day worked better than focusing on a different course each day. I think the repeated exposure reinforces course concepts more, despite the momentum lost from context switching. One rule I had for myself was to never go to bed without understanding what was covered in that day’s lectures. In grade school, the same concept would be covered for weeks at a time. In university, things are taught once and every lecture introduces more material that builds upon the previous lectures. By making it a point to prioritize reviewing the material introduced that day over my other tasks, I never felt like I had to cram for things. I handwrote all of my lecture notes instead of typing them up. There are studies showing that writing things down is more effective, though I do acknowledge that there are certain advantages that going digital has (searchability is huge). Additionally, I tried to ask (or at least answer) a minimum of one question per lecture. This helped me to stay attentive, clarify things that may have been gone over too quickly, and has the added benefit of clearing things up for other classmates that may have the same question. Some of my friends have said that they find the idea of asking a question in a packed lecture hall intimidating. I found that all of my professors were open to receiving questions 1-1 after the end of a lecture, so this is another option for those that feel similarly.
When it came to assignments and exams, I stopped approaching these things so sequentially after first-year, which helped me to perform better. My strategy was to first skim through every question, solve the problems I immediately knew how to do in the first pass-through, and then start solving the remaining problems in increasing order of perceived difficulty. Being as stubborn as I am, I used to spend too much time on hard questions at the expense of leaving some questions blank. I quickly learned that it’s more optimal to write at least something down for each question. While these things may seem obvious, I was very conditioned by grade school to do things front-to-back. Also, office hours are very underutilized and I’d encourage everyone to take advantage of them when stuck. I’ve gotten a lot of good hints on assignment questions just by dropping in for a few minutes.
Learning about a particular field is a huge part of the university experience, but learning how to become an adult is just as important. For many, university is the first chance to experience living away from parents/guardians and provides an environment to support the transition from childhood into adulthood. The importance of learning how to stay organized (Notion is incredible) and take care of yourself (physically, mentally, spiritually, etc…) cannot be understated. Balancing actual life with studies may take a bit of time to figure out, but it’s not a race. Some people can manage a social life and overload with two extra credits per term with seemingly no effort, whereas others are only comfortable with a workload of three credits per term. Focus on your own progress; only by first taking care of yourself can everything else fall into place.
Aside: The best courses I took were CS 343, MATH 239, ECON 212, and MUSIC 140.
what’s in a career
One of the things that I’m most grateful for with regard to my university experience is having the opportunity to do a bunch of internships over the years. A 16-week co-op is an ideal length of time to get acclimated to a new routine and work on something impactful, yet not be burdened with the responsibilities of being in one place for too long. Getting to sample 5-6 data points before deciding on what matters most when it comes to full-time employment is undoubtedly a good thing. Still, this does raise the question of how to sequence these work terms to achieve the perfect harmony across a variety of factors: learning, location, compensation, resume equity, company size, and projects, among other things. I can’t tell you how you should weigh these variables, but after having to make these decisions and observing others in the same position, I’ve had a few realizations.
First and foremost, things are rarely permanent. So many decisions seem irreversible in the moment, but this is usually not the case. Moving to one city over another does not forbid you from moving to the other city in the future, and taking one job instead of another does not mean that you can’t apply to the second job later on. Most experiences you have when you’re young are additive. By this, I mean that whether you decide to work for a small start-up in Toronto or a large hedge fund in Chicago, you will learn a lot. Before accumulating ties and relationships that make uprooting your life difficult, the net outcome of life decisions tends to be positive, if only for the learning experience. In fact, learning what you don’t like can sometimes be more informative than learning what you do like. When you figure out what you don’t like, you can close the doors that lead in that direction, effectively minimizing the number of remaining options. However, learning that you like something does not necessarily close off any doors at all. One heuristic I often apply is to make the decision that I think I’ll regret the least. It may be hard to choose between staying somewhere familiar versus going somewhere new, but would you rather stay and wish you had left or leave and wish you had stayed?
I think about the explore-exploit trade-off a lot. At what point is it better to try something new as opposed to doing something that you already find enjoyable? I’m definitely guilty of trying to optimize too early at times, and while there is certainly value to be had in becoming a specialist, it is also valuable to have had a diverse set of experiences. The important thing is to consciously identify whether you are in a phase of life where you are looking to index more into one area, try something new, or achieve some balance of both. Though things are rarely permanent, it is impossible to try out everything, so we have to rely on generalizations as a consequence. You probably don’t need to work at three banks if you’re really optimizing for a breadth of learned experiences. Additionally, it is helpful to envision where you want to be in the future and then work backward to figure out what will put you in that position.
Finally, I’ll leave off with some less abstract career advice. Note that this is very specific to working in tech. To start with, your manager and team dictate what your idea of company culture will be like. Working somewhere with the best perks in an interesting problem space means very little if it means that your day-to-day interactions with the people you work closely with are adversarial and you’re expected to work 90 hours a week. Prioritize having a good team. Secondly, you should always negotiate your salary. The amount of literature on this point is extensive, both how to do it and why you should, so I won’t expound too much. Next, you are in charge of your own career. As a serial intern, I’ve probably grown too accustomed to having a number of people across many departments dedicated to seeing my success through. Though I’m sure there will still be people invested in me come full-time, it’s going to be up to me to drive my own growth. Verbalizing what I’m interested in working on, setting boundaries, and candidly discussing my performance with managers are just a few things that I’ve picked up on over the years. Finally, you don’t have to love your job. A lot of people feel like something is wrong with them because they haven’t found an occupation that they wholeheartedly adore. This is a very high bar to set for yourself. At the end of the day, a job is just a mutually beneficial transaction between you and an employer. As long as you don’t despise work, there is plenty of fulfillment to be found outside of it.
define your own success
Productivity has become the word du jour and there is no shortage of life coaches, gurus, LLC proponents, and various other messaging designed to make us feel like we are never doing enough. In many ways, UW’s (tech) culture is a microcosm of this. There’s a lot of social pressure towards landing certain co-ops which can result in people feeling inadequate if they’re not working at a company in the top ranks of whatever arbitrary “tier list” is in style for that term. Especially in the earlier years, it’s almost expected that you should grind algorithm questions, do mock interviews, go to hackathons, and build side projects in your limited spare time.
As with most things, there is typically some number of extremist viewpoints, with the truth lying somewhere in the middle. On one hand, there exists a vocal minority of UW students that capitalize on the social status gained by working a string of great internships, leading to pretty toxic interactions. This archetype is best illustrated by the following flowchart:
“Conversations with Cali or Bust CS guys” (source: /u/OddLanguage0)
On the other hand, there is a sort of counterculture consisting of people that project their own insecurities of not doing “enough” by shaming those that put in the work to achieve results. Waterloo culture itself is not inherently a bad thing. On the contrary, being in a challenging environment surrounded by high-achievers is part of the appeal of going to university. I’ve both experienced and witnessed many peers have favourable outcomes that can be directly attributed to being thrust into an environment like this. The fundamental problem is that we all have a tendency to attach our self-worth to the definitions of success that are imposed on us by others. Success is highly personal. If you define it based on every signal given to you by the world, you will never be satisfied. While comparing ourselves to others is natural, everyone is on their own journey and you can never really know someone else’s circumstances. Success is not linear. There will be peaks and troughs, you will experience failure, and sometimes you may even be forced to pivot. However, as the adage goes, the master has failed more times than the beginner has even tried. Finally, success is not constant. How I defined success coming into school and how I view it now is not the same. We should continue to evaluate the things that mean the most to us and live with these in mind.
Now, things like money and status are certainly useful, and anyone that tells you otherwise is being disingenuous. Chasing after the fastest returns can sometimes be too short-sighted though. Russ explains this point well in his book, “It’s All In Your Head”:
People often get rid of the entire ship when they get offered another one. Or, even more tragic some people barely even have a ship—they are still putting their little raft together on the sand when some big, shiny ship pulls up and offers them a ride, and due to a lack of self-belief and confidence that the little thing they’re building is going to turn into a big, shiny ship one day, they board the better-looking alternative. But you never really know who or what you’ll find on that big ship, and you may not like how it’s being run and where it’s headed, and you might end up wishing you were back on your own ship, boat, or raft on the sand. Even if you take your ideas, your talent, or your art to a larger entity, navigate that choice on your own terms. If you decide to get on someone else’s ship just make sure yours comes along too, so that you always have an out… which is really just an in back to yourself.
The temptation to take an opportunity that pays more over another where you will learn more will always be there. There’s no right or wrong answer, and in fact, choosing learning and fulfillment over money is not something that everyone is able to do. If you are fortunate enough to come to this fork in the road however, think carefully about what is pushing you in whatever direction and how you can leverage the opportunity to serve your own ends. Spoiler: the perception that others will have of you is not a good reason.
A lot of the value derived from going to university lies in the network of connections made as a student. Both professionally and personally, I’ve been blessed to have encountered so many great people over the years. The key to all of this is vulnerability. You can only get so far in starting relationships by keeping your guard up and defensively interacting with others. Yes, you run the risk of being burned, but the average worst-case is being told no or getting ghosted. When compared to the upside of developing genuine connections, even temporarily, putting yourself out there is a no-brainer. Don’t let the interactions you’ve had in the past rob your present self of future friendships. It seems that society has swung the pendulum too far past being independent. Being a cutthroat hustler with zero emotional ties or feelings has almost become something celebrated; life is not a single-player game. The goal is to find those that reciprocate the same level of commitment as you do. Too much of an imbalance in either direction will cause problems long-term. Note that there is a finite number of close connections that one can maintain at any point in time before the addition of a new person comes at the detriment of other relationships. Figure out what your individual capacity looks like.
Authenticity ranks just as high as vulnerability on the list of things that must be present in order to achieve healthy, meaningful relationships. Identify what your core values are and hold yourself to that standard. Inconsistency is never a good trait. Taking accountability for your own actions is also necessary when it comes to dealing with others. It’s easy to blame circumstances on external factors, but if the same issues keep arising, it’s undeniable that the common denominator is yourself. Being surrounded by yes-men only feeds into the avoidance of personal responsibility. I’m glad to have people in my corner that will tell me what I need to hear, not what I want to hear.
After pinpointing your non-negotiables, don’t compromise them for other people. You can’t force compatibility and there’s only so much that you can reasonably (maybe even fairly) expect someone to change. While humans are flawed and it’s unreasonable to expect anyone to meet all of the criteria on your nice-to-have list, a mismatch in core values is bound to lead to a fruitless relationship. You have to be selective about the energy that you surround yourself with. Only through doing this can you have space at the table for the right people to fill the seats in your life. I tolerated a lot of things in my earlier years that I shouldn’t have, nevertheless, I’ve gained a lot of perspective from the negative experiences. On a parting note, if something feels wrong, favour direct communication. What’s done in the dark will come to light.
beginning of the end
I find it funny to look back on what I thought university was going to be like when I was leaving high school. I never could have imagined the crazy five years that would ensue, but I’m filled with gratitude as to how everything turned out. As I enter the next phase of adulthood, I hope to continue to grow and challenge myself despite not having an institution to provide cyclical milestones to look forward to. An interesting thing about life is that as we get older, we tend to regret the things that we didn’t do more than the things that we did do. It really is Choose Your Own Adventure from this point onward… here’s to choosing wisely.
Thanks to my parents, Loïc M., Zarina M., Rotimi O., and everyone else along the way.