Nathan Laundry's Blog


Increasing Your Surface Area for Serendpity: Finding Opportunities as a Computer Science Undergrad

Computer Science Undergraduate Networking

🏃🏽 TLDR — How to find summer research opportunities and freelance programming jobs for undergraduates

There is a huge unfulfilled need for programmers outside of the tech-sphere both in research and in industry
How to find research and freelance opportunities outside of the usual places:
Go to events and join clubs
Teach, tutor, and be taught
Say yes to opportunities wherever you find them
Opportunities to look out for:
Data is plentiful and in need of analysis. Improving data management and providing insights to companies is extremely valuable
Interdisciplinary research — a lot of research requires a programming aspect these days, offer your services

🤲 My story of Opportunity and Belonging — skip this if you don’t care

it’s 2015, I’m sitting at my desk, second from the back row, second from the left wall. It’s 3:00 pm and the bell is about to ring — what I’ve been waiting for all day. I sit just adjacent to the left corner because it’s the least noticeable spot. Teachers think they’re clever when they call on the shy kids in the corners so I move one in — 15-year-old Nathan thought he was outwitting the system. My teacher makes some announcements about essay deadlines in a tone that could lull crying babies only to be cut off by the bell. Classmates rush out the door; they’re buzzing about music club, anime club, the rugby team — take your pick. Not me though. I head straight home.

This was my ritual. I didn’t want to get involved. I didn’t want to get noticed. I didn’t see the point. I went home and I played Call of Duty Black ops 2.

At my high school, we needed a certain number of extracurricular credits to graduate; I had neglected this requirement for 2 and a half years. As I approached my senior year, I realized how sorely behind I was on these credits. I needed to join a club, and I needed to do it in the middle of February after all the clubs had already chosen their members.

Cue my hero and dear friend, Ilakkiyan — we called him Lucky. Lucky was president of the environmental council at the time and after I explained my situation he graciously offered to bring me aboard the team. Now, as a perennially disinterested teenager, I thought there could be nothing lamer than joining the environmental council. Don’t get me wrong, I was grateful, just not enthusiastic. I expected long drawn-out meetings during my lunch period, a room full of unengaged high school students seated in a room with a heating system from the 40s. Most importantly though, I expected to do nothing of value.

Flashback to my first day. It’s a Thursday lunch period, some forgettable date in February — my first meeting. I trudge through the halls to a forgotten classroom in the corner of a forgotten wing of the patchwork building that is this school. Arriving at the door, I drag my feet over the threshold, into a musty “natural light only” room — that’s code for the lights barely work anymore. As the room envelops me, as I step into the class, everyone turns. Everyone says hi to me and people I’ve scarcely seen through the halls the last 3 years invite me out to grab pizza after class. Everyone’s excited, engaged, and completely unaffected by the dim and poorly heated room we’re in. For the first time in my life, I seat myself front and center of the class.

In the year and a half that I was on the environmental council, we created an outdoor garden that’s maintained to this day, ran classes for local elementary schools on the value of recycling, and held assemblies on current environmental issues. I even sang in front of the school for one of those assemblies. In that year and a half, my expectations were shattered — we did so many things of value. Most importantly, in that year and a half, those hallway faces — my classmates — became the faces of dear friends.

Thanks to Ilakkiyan and the kind hearts of the 2015 and 2016 environmental council, I got involved, I found belonging, I found my love of community; the point that I couldn’t see a short year and a half ago.

When I graduated at the end of 2016, university on the horizon and environmental council at my back, I swore I would never let go of what I found — I never sat in the back corner again.

👂Increasing your surface area for serendipity

Now you’re thinking “gee, great story Nathan, but what does that have to do with anything?” Hear me out. On-campus and freelance opportunities are plentiful and varied but you’ll never find them or think them up on your own. You have to sit in the front row and participate. Do that enough and opportunities will find you.

Some of the unusual stuff I’ve gotten myself into by literally and metaphorically sitting in the front row include:

Running Roboticon for 2 years at the University of Guelph — a 250 student robotics competition. I had no prior robotics experience.
I aided in the design of big data agricultural projects involving state-of-the-art “smart barns”. I had 0 prior experience designing databases.
Check it out here: https://foodfromthought.ca/research/livestock/the-animal-database/
I took a master’s course in the Summer of my first year on Evolutionary Algorithms
I didn’t take biology past grade 10 and had little to no optimization/machine learning experience

So how did I do this? The truth is it’s always felt like luck. I was just lucky enough to meet people who introduced me to my friend Jared who was already working on The Animal Database project. I was lucky enough to stumble into a room where I met Sebastian, a 4th year CS student who worked with professor Wineberg on the redesign of his evolutionary algorithm code.

Computer Science at Guelph was small at the time and it was easy to stand out if you were curious and kind. In all honesty, there was a flurry of chance that went my way. But here’s the thing, you can “increase your surface area for serendipity”. We can’t control how lucky we get, but we can influence how many times we get to roll the dice. I felt luckier because I took more chances — I rolled more dice.

Let’s talk about where to find those chances.
♣️ Go to events and join clubs

The legend of the lone programming genius is a harmful one for young students to hear. Programming is a cooperative pursuit. From coding itself to identifying business problems, finding research projects, and more, development is a collaborative process. To find collaborators, the best thing you can do as a student is going to events and join clubs — especially outside of tech.

A couple of events that I loved as a Canadian computer science undergraduate include:

CUSEC — Canadian Undergraduate Software Engineering Conference
CSGAMES — Computer Science Games
Hackathons (there’s so many but to name a few RUHacks, HawkHacks, WinHacks Hack the North come to mind)

Some clubs or methods to find clubs on campus:

your computer science student society (at Guelph we have SOCIS, Laurier has LCS, etc.)
intramural sports teams — a great way to meet people from a variety of studies on campus
your universities club list — it’s probably hidden away somewhere on their website
Search for anything you’re mildly interested in and try it out — I joined Jack.org to improve mental health awareness on campus.

Computers science events and clubs are a great way to meet like-minded people, the rest are a great way to meet differently-minded people. I loved both. It’s easy to trap yourself in an echo chamber, especially when you’re just starting to learn what you want to do with your career.

Once you’re at an event or club meeting the most important part thing to do is take in ideas and inspiration from other students and speakers, and of course to network.

Some of you may be hesitant or it might just be me, but when I first started reaching out, I despised the word “networking”. It felt like a sleazy process of “if you promote me, I’ll promote you”. Luckily it doesn’t have to be that way. If you’re genuine, seek out interesting people, and ask them about your mutual interests “networking” will happen naturally. Networking can and should be a sincere process of connecting and engaging with people.

It’s easy to remain siloed off in academia and computer science. Attending events and clubs is a deceptively easy way to branch out.

🧑‍🏫 Teach and Tutor

Teaching and tutoring can seem terrifying at first. I used to worry about this a lot. “but I’m not an expert. How can I teach? What if people ask me questions I can’t answer?” You may not be an expert, but you definitely know something someone else doesn’t. Teach that thing. And if someone asks you a question you don’t know how to answer, figure it out together.

Expertise should be measured relatively, not absolutely. It doesn’t matter that you’re not an expert compared to your professors, it only matters that you’re an expert in something compared to your peers. For my fellow computer scientists and software engineers, your introductory programming courses will be filled with a slew of engineers, mathematicians, statisticians, and curious folks from all across campus. Your expertise in relation to them is programming, just as theirs may be calculus, statistical analysis, or psychology in relation to you. Offer to help (but please be humble about it … I cannot stress this enough) and request help yourself. I’ve met some of my favourite people by mentoring and being mentored.

The more you help, the more people will think of you next time they have a project or idea. The only reason I got to work on the Animal Database Project was that my friend Jared heard that I helped the engineers through our intro programming course.

🆗 Say yes to Opportunities wherever you find them

This ties into my last bit of advice on how to increase your surface area for serendipity. Say yes. Once you’ve joined some clubs, gone to some events, taught and been taught by some clever and interesting people, say yes when they propose a project.

How did I get to work on Roboticon, The Animal Database Project, and a master’s course all in first and second year? Often I was the only person in the room with the courage to say yes. Roboticon was a case of right place, right time, no competition. While attending a SOCIS meeting, the previous director of Roboticon asked if anyone would like to help run it. I was the only one to raise my hand. The Animal Database: one time, while studying at the library my friend Jared bumped into me and said “Nathan, you’re good with computers right? I’ve got a USB stick here, if you can read the files on it, I have a job for you.” I dropped my assignments and worked on that cracking that USB all night. With evolutionary algorithms, while at an event on campus, I forget what for, I got to chatting with Sebastian. He noted that Professor Wineberg needed more C++ or Julia programmers … I may have stretched the truth of my expertise during that conversation, but I did learn Julia that Summer.

Opportunities, as I’ve experienced, are plentiful but rarely taken. Clubs are looking for extra hands to run their events. Your friends and peers have projects they need help with. Your professors love talking about their research to curious students. When you join clubs, attend events, and reach out, the people you meet just might think of you next time they have an opportunity to share.

🗓️ What kinds of opportunities are out there

Alright so we’ve talked about how to be luckier when finding opportunities, but what kinds of opportunities are there? I’ve noticed three categories go overlooked over and over: interdisciplinary work, infrastructure development, and data analysis/management.

🤝 Interdisciplinary Work

Remember we talked about expertise as relative, not absolute. Interdisciplinary work is a perfect example of this. Bioinformatics is an inherently interdisciplinary field, combining biology (most of what I’ve seen is in genetics), and computer science. In a field like bioinformatics, as a computer scientist, your relative expertise in programming may be greater than if you were to dive into an exclusively computer science topic like compiler optimization. An expert in biology may need support with the programming or discrete mathematics — fields where your experience will shine. Interdisciplinary fields often sorely lack developers as they funnel into the industry or strictly computer science fields. These projects often have funding for programmers or undergraduate research assistants available if you pitch yourself well.

🏗️ Infrastructure

Almost everything needs or could benefit from a website, server, or some automation. I can’t tell you the number of times I’ve heard friends and colleagues in political science, biology, sociology, etc. talk about how some automatable process eats up hours of their day. This is where you come in. Listen closely to their complaints then come up with a solution. For academics, often some amount of research funding can be freed up for these kinds of automation projects. In industry, many companies are willing to pay for websites, servers, and other infrastructural services.

What I was brought on to do with the animal database project was infrastructural. My job was to assess their data flow — how data got from the barns to data storage facilities and to figure out if the team could improve this in any way. I was only in my second year and I had never even been on co-op — far from an expert on these topics. My relative expertise was enough to make my voice and opinion valuable to the research team.

💽 Data Analysis and Management

A lot of the automatable processes I spoke about earlier have to do with data retrieval, processing, and analysis/representation. Tasks like scraping hundreds of websites or documents for consistent, well-formatted data are done, painstakingly and manually, by graduate students or employees. One python script could do all of this in a fraction of the time. Simple things like “coding” — the process of transforming categorical data like “not-satisfied, somewhat satisfied, completely satisfied” from surveys into numerical representations (0,1,2) are often also done manually when this could easily be achieved automatically. Lastly, even the most basic statistical analysis (simple descriptive stats) can provide invaluable insights in research and to clients. It doesn’t take long to learn the basics of stats using python or R and present those stats to researchers or clients.
Summing up

It doesn’t matter if you’re an undergrad looking to get some experience on your resume before the co-op search or a graduate student trying to find a niche, this advice applies across the board. Seek out people first, engage with them sincerely, and don’t let opportunities go to waste.

Cheers,

Nathan Laundry

Join my Email Newsletter #GuidingQuestions here

If you liked this post you may like my previous 2:

Breaking Down the Literature Review
From Undergraduate to Masters/PhD: How to Handle the Mindset Shift

If you’re curious how to manage all those opportunities try my Notion Template for managing weekly todos
https://nathanlaundry.com/notion-templates/weekly-sprint-template