My Outschool Engineering Co-op Experience
by Max Thomson
Hey there, I’m Max. Currently, I’m a second year Software Engineering student studying at the University of Victoria. This Spring, I had the opportunity to work with Outschool for 4 months as an engineering co-op student. I was excited to join Outschool because of my personal experience with homeschooling and my love of learning.
In this blog post, I share my experience as a software engineer co-op at Outschool. Specifically, I joined the infrastructure engineering team, tasked with keeping Outschool.com running 24/7 for thousands of transactions per second. I hope this post will give potential future co-ops the insight into whether Outschool is the right match for them.
One of the hardest challenges for a co-op is securing an offer. I started my co-op application process ~4 months in advance of my intended starting date, as co-op positions are highly sought after (and most employers post far in advance). As cliché as it sounds, a good resume is key. Focusing on my projects (especially since I have limited previous work experience) and linking my GitHub boosted my application significantly. Some incredible resources that helped me are the TechInterviewHandbook & LeetCode.
When my resume & cover letter had passed the recruiting screening step, I got invited to interview with Outschool’s engineers. There are two interviews for co-op candidates: a shorter technical, followed by a longer behavioural. Both are in rapid succession, so I made sure I had a water bottle (and snacks!) within arm’s reach for the five-minute break between interviews. However, I was told that if any part of the interview process didn’t work for me, Outschool would be more than happy to make accommodations.
Once the technical interview finished, I pivoted to the behavioural one with my hiring manager. Although this is a formal interview, it felt more like a two-way conversation about myself and Outschool. Talking about personal interests, and what projects I’ve worked on in the past (think reflection questions). This two-way conversation was extremely helpful to also express my interests and the style of work I wanted, to see if Outschool was the right fit.
The co-op interview is usually extremely similar to the full-time process, just with fewer interview stages and a lower expectation for technical prowess. I found the Outschool blog post, How We Hire Engineers to be helpful in my preparation.
Outschool is a remote-first company, meaning that I could be based anywhere in Canada or the United States! Meetings are concentrated in the 10AM → 2PM PST range to support engineers working across different time zones, and allowing me to choose flexible hours to work. Remote means I don’t need to move, find someone to sublet my apartment to for 4 months, or learn the ins and outs of a new city!
A few weeks before my co-op started, a package arrived from Outschool. Including my shiny new MacBook M1, Magic keyboard/trackpad, and a box of swag (branded hoodie & mug) with a welcome letter. When setting up my home “office” (read living room), I requested additional tech (webcam & adapters) to complete my work area. In retrospect, setting up my desk & monitors (having multiple is incredible) next to a window was an excellent choice.
Suddenly, Monday arrived, and my co-op had already started. My first day (actually week…) consisted of meetings, general orientation, and introductions on how Outschool operates. In the afternoon, I met with my manager to discuss the details of my co-op, and what projects I am tackling in the coming months. It was extremely helpful early on to understand my manager’s expectations, and communicate my goals:
- To receive a full-time return offer for after graduation
- To gain the knowledge required to do a full code review on one of my team’s merge request
The first few weeks were onboarding with my assigned buddy (an experienced SWE), getting an overview of the codebase, what the development process is, and helping with my starter tickets. This ramped to starting my major co-op project in week 2, with lots of initial help from my buddy. My major project, (an admin dashboard), was a highly requested feature internally and aimed to streamline numerous non-technical employees’ workflows. Co-op projects might be called just that, but that doesn’t mean what I worked on has no impact at Outschool (in fact the project I worked on from beginning to end saves ~1hr/day of a PM’s time, and currently accelerates 20+ employees workflows)!
The Outschool onboarding process is documented in much more depth in the Your First Week engineering blog post. Onboarding for full-time and co-op engineers is almost identical.
At Outschool as a co-op, I’m a full member of the team. Everyone is super supportive and goes out of their way to help me learn and grow. Throughout my co-op, I’ve felt like a full-time employee – with the perks of additional special co-op events! Everybody I meet is extremely welcoming, and many are surprised when I mentioned that I am a co-op and not a full-time hire.
Outschool Engineering has a strong emphasis on pair programming to bring others in. From my onboarding on, I am consistently pairing with engineers from across the company. Initially, I was skeptical about having someone “staring over my shoulder” as I timidly searched Stack Overflow for a basic error. However, I really enjoy pairing with engineers since it feels like the stereotypical office hang out and chat atmosphere (but what would I know, I’ve only ever been a remote co-op). Having an additional set of eyes on my work (and mine on theirs) saves valuable time caused by mindless errors and the resulting Stack Overflow trips.
What I learned at Outschool
Communication Skills are key. Remember that code is merely the end product, and communication is what will aid you in choosing and making the proper decisions. These decisions are what lead to the technical aspect of the job.
Fail Fast. You will fail, the key is to minimize the amount of time lost to failure. Rapid iteration (and occasionally failing) is better than dragging through a project in the desperate hope of it working.
Break down Specifications. Break down your project into smaller and much more manageable chunks of work. This helps with tracking progress, and it motivates you, as your progress and completed tasks are then more visible (opposed to having one massive ticket open for a month, which can be demoralizing).
Learn from your Mentors. Take this advantage of working with experienced SWE’s to ask them questions and learn from what they are working on. How would have you developed this feature vs how they did?
Advice for Future Co-ops
Actively Participate. If there are additional specialized groups you can join (e.g., guilds at Outschool), join them. This will improve your broader range of technical skills and introduce you to additional industry tools & techniques.
Increase your Network. Co-op terms are a good excuse to network with many industry professionals. Reach out and schedule meetings with your coworkers. Make sure you talk with managers and employees across the company, there is no such thing as too many connections!
Co-ops are Attainable. You don’t need to be a prodigy to secure a software engineering co-op. Your best assets are curiosity and the eagerness to learn.
Outschool hires engineering co-op students year round, so check the job postings at your university/college!