Rachel interned as a machine learning engineer at Cyclica, a drug discovery company in Toronto, Ontario, Canada. Keep reading to learn more about her co-op journey, what it was like working on the data, web platform, and machine learning teams, and her advice for breaking into software!
How did you get to where you are today?
Being determined and constantly reflecting on where I can improve. First-year was by far my toughest term yet. Moving across the country, adjusting to the differences in academic responsibilities, and managing school-life balance were challenging. On top of that, there was the co-op search. Initially, I applied to almost every field that had anything to do with engineering (mechanical, electrical, software, research, and more). Finding “nanotechnology” jobs seemed rare coming from a first-year student’s background. After a persistent job search, I found myself working in a bionanotechnology lab at the University of Waterloo as a Research Assistant. Not too far into my co-op, I realized that the academia environment wasn’t for me. The pace felt too slow and I enjoyed being surrounded by a more collaborative team. Despite this, I was still determined to gain as many skills as I could and learn a wealth of knowledge from my peers. This is what I have found to be especially useful for future co-op searches: by diving deep into your project and creating a strong impact, your interviews will be able to show the contributions you made and you will be a great hire.
In my second co-op search, I was determined to find a job in software, specifically in industry. I heard the pace was faster and the work you would be doing could change every day. Making this decision to transition into software wasn’t easy. Especially as someone who didn’t perform so great in the NE 111 (Intro to Python Programming) course. But I didn’t let this challenge stop me from truly learning about a field I was interested in. At the beginning of the term, I joined a design team, the Waterloo Nanorobotics Group, on their software/simulation team to really grow my programming skills and become more comfortable. This led me to my next co-op as a software engineering and AI researcher at a small sustainable-finance startup, Korotu. Working at a startup was great because I had the opportunity to wear multiple hats within the company. I worked on everything from backend to computer vision development to researching novel ways for image classification in machine learning.
Ultimately this experience put my foot in the world of software and led me to my third/fourth co-op as a software developer/machine learning engineer at Cyclica. In my first four months, I was responsible for the development of the drug discovery data and web platform. I enjoyed this role I had, but I was interested in the computational biology and chemistry side more. I overheard in an all-hands meeting that they were looking for an intern to start work on optimizing and benchmarking one of their computational models. While I was initially hesitant to reach out to my supervisor, I reflected on what I wanted to gain out of this co-op. I then jumped on this opportunity and found myself working at the intersection between machine learning and drug discovery.
Looking back on the last four years of my time at Waterloo, the one thing that has stuck with me since the beginning has been my drive to seek feedback and take that into action. It’s about having that self-awareness and furthering your personal development to become the next, better version of yourself.
What are the main responsibilities of your job? What project(s) have you taken on?
While I was at Cyclica, I had the chance to work on multiple projects! In my first term on the Data and Web Platform Team, my main responsibilities as a software developer included:
- Developing algorithms to improve the efficiency of predicting drug-compound effects in the human body
- Creating data visualisations and reporting statistics to streamline drug discovery
- Automating workflows for quality assurance testing using Selenium
These were rewarding projects because I got to work on full stack features from the backend to frontend. I had never touched the frontend as much, so it felt really impactful to see your improvement implementations brought to visual displays.
In the latter half of my 8-month internship, I transitioned to the machine learning team where I dove heavily into statistics used in machine learning to gauge performance improvements and collaborated with drug discovery scientists to understand the toxicity effects of potential drug compounds. My project was split into 2 parts:
- Benchmark existing ML models for drug property prediction
- Optimize the performance of ML models based on findings from the first part
After completion of both parts, I left the company knowing that my feature for optimizing the classification in their machine learning models would improve all future machine learning models.
Any tips for getting a similar position to yours or entering a similar field to yours?
Be passionate, show that you’re ready to learn, and connect with people! This advice applies to breaking into any new field and finding a co-op. Employers can sense when you’re passionate about a subject, so showcase that in your interviews! If you have any knowledge gaps, mention that you’re highly motivated to learn and are willing to go that extra mile to get the job done. Lastly, network and meet new people! You’ll never know when you’ll end up talking to someone who’s currently working at the company you’re interested in and who’s willing to refer you.
For transitioning into software specifically, I would recommend building side projects and joining design teams. I’ve joined a design team since my first term in first year, and this has really allowed me to gain exposure to a variety of different skills. It also shows the employer that you’re interested in learning about solving problems outside of class that can be applicable to the work environment. Once you get the ball rolling, it becomes much easier to get your next co-op in data engineering or machine learning.
What NE courses are helpful in your job?
While working on the machine learning team at Cyclica, I quickly found out the importance of the statistics course I took (NE 215 Probability and Statistics). It was common to find graduate degrees in a Masters or PhD within my team as building models required an extensive background in statistics. For the optimization project, I found myself referring back to concepts learned in class such as normal distributions, treatment of data, and confidence intervals. Applying my learnings in a real-world setting and building on them even more was exciting to see.
You’ll also find the intro to programming course (NE 111) and computational methods course (NE 336) helpful for software development and even for research. These courses develop your ability to transform complex problems into code using computational thinking that can be applied in any working field whether you plan to build, automate, or analyze.