Onwards and Upwards

I’m about 8 days away from finishing my last final exam at the University of Waterloo. Over the past few weeks I’ve often been asked, “what do you plan on doing after graduation?” I usually respond with some combination of “travelling, living in Toronto for a while, doing my own thing,” but nothing really concrete. I guess that’s because I don’t really know myself. While many of my friends have found and accepted full-time jobs, I have not. I’m not really sure what I want to do yet, or where I want to work. Besides, I’ve been alternating between studying and working for the past 5 years or so of my life. I’m not ready to just jump into something new and start working.

So I figured I would take a break. Not so much go on vacation, but try to spend time doing more non-academic things, the sort of stuff I didn’t make enough time to do during my undergrad. Things like playing more volleyball, working out more, or cooking. Honestly, getting this degree was difficult and at times (many times), stressful.

So I wanna unwind for a bit, and really focus on the goals I haven’t been prioritizing. But of course, I can’t do this forever; I only have enough money saved to justify doing this for a few months.

Being in a co-op program, you might have thought I’d’ve figured it all out by now. I thought I would have too, but as graduation grew closer, I realized I hadn’t quite found what I was looking for in terms of a full-time job. Being in co-op has helped tremendously in figuring out what aspects of software engineering I enjoy and which ones I don’t. I’ve gained invaluable experiences and learned a ton about creating software, tech companies, and the work life in general.

But throughout my co-op terms I never felt completely fulfilled. To be clear, this is no fault of my employers. Overall, I’ve enjoyed my co-op terms; I’ve learned a lot and worked on some pretty cool things. There were many times (in fact I’d say most of the time) where I enjoyed what I was doing. I could see myself doing these jobs for a few months at a time, but not for much longer. There was just something missing.

When I was in the eighth grade, I wrote in the yearbook that I aspired to be a professional software engineer. I wonder, how did I know what I wanted to be when I was 13? Well, I didn’t. But I knew software engineering involved math and computers, and I liked both of those things (and still do), so it was an obvious choice. Of course, I didn’t really know what it meant to be a software engineer. By that point, I had never written a single line of code in my life. But I stuck with it, and now almost ten years later, I’m about to graduate with a degree in software engineering.

Now that I’m at the end of my degree, I feel much better prepared to answer the question of why exactly I want to be a software engineer. I think there’s a few reasons:

1) I really enjoy the problem solving aspect of it; software engineering requires a lot of critical thinking, creativity, and perseverance. Technical challenges are often fun yet frustrating. You feel good when you finally complete something you’ve been working on for hours, days, or weeks. It’s addicting, in many ways, constantly learning and creating incrementally more complex things and trying to make all the pieces fit together.

2) I also enjoy the magic of the whole experience; you can write text on your computer and create a website, or a game, or anything really, with just your mouse and keyboard and mind. Thinking of an idea, working on it, and having your idea come to life often feels like magic. Working hard on something and then seeing people use the product you made is incredibly rewarding.

These two things are still what I enjoy the most about programming; it’s something where you can just sit and think and create and struggle and eventually end up with something really cool, something you can be proud of.

Although programming is usually enjoyable, there are times when it’s boring, annoying, or just not very fun. I’ve found that I thrive the most and work the hardest when I work on something I really care about. And I’ll usually care more about something if it’s directly related to a cause I care about, or it’s technically interesting. I also enjoy having a lot of ownership over what I work on; by having ownership, I’m making myself personally invested in that work, and so I work harder because I want to succeed by virtue of my work being successful. I like making product, design, and user experience decisions related to the feature I’m working on, instead of just being told to code something and generally only making “technical” decisions.

At my co-op jobs, it’s often felt more like I was just ticking off boxes (finish this task, then there’s another one to do, then after that there’s this thing), and although I had some ownership, I didn’t feel as personally invested in my work as I might have liked. There were times when my work was sufficiently interesting or engaging, and that’s when I worked the hardest, but it didn’t last long.

Maybe it’s because I was just a co-op student. As a full-time engineer, I’m certain I’d have a lot more ownership, but I don’t think that’s all that was missing. I also need to care about the work I’m doing. How does my work impact the product? How does the feature I’m working on impact our users? How can I contribute my skills to make sure the product is successful? And do I even care if the product succeeds?

It seems like I’d be most likely to fulfill these desires by working at a startup working on something like education or social good (two causes I care about), and working with technologies I find interesting, like artificial intelligence and machine learning. Unfortunately, I haven’t quite yet found my ideal job yet, so I’ve been thinking about some alternatives, something to work on while I figure out what I want to do and where I want to work.

For the past year or so, I’ve been working with a few friends on InternCompass, a platform where students can learn about internships and read reviews written by other students who have interned at various companies around the world. Having so much control over the product, from its design to its user experience to its infrastructure, has been a really rewarding experience. The encouragement from our users, and our future plans for the product, give me hope that it’ll take off and be really useful to students from a variety of disciplines looking for internships. By working on InternCompass, I’ll get to work on a product I really care about, and further develop my engineering, design, and communication skills.

So that’s what I’ve decided on for now. For the next few months I’ll be living in Toronto, and when I’m not exercising, socializing, cooking, or whatever else, I’ll be working on InternCompass. Toronto’s always seemed like a lovely place to live, so I’m excited to finally experience the city to its fullest. I’ve also found that living away from home gives me a sense of responsibility that’s conducive towards achieving my goals. Plus I figure with the rising rent prices, I’ll be more motivated to make the most of my time when I’m there. And hey, maybe I’ll change my mind next week, or next month, but that’s okay. This gives me something to work on while I work on myself and figure things out. If InternCompass takes off, that’s great. And if it doesn’t, that’s fine too.

Either way, I’m glad I finally know what I’m going to do. I’m anxious, but I’m also really excited for what’s to come. I’m excited to work on something I care about and feel the joy of creation. I’m excited to work on myself in ways that I haven’t had the chance to until now. I’m not sure where I’ll be or what I’ll be doing a year from now, but I’m excited to find out.