Thoughts on UTSC's CS Program
May 19, 2019
Table of Contents
- General Thoughts
- Program Content and Curriculum
- Quality of Companies
- PEY vs Co-op
- Is Co-op Right for Me?
- What are the Best Jobs?
- Getting the Job
- Cali or Bust
this post from a few years ago. My experience was a bit different from theirs, but there is some truth to it - particuarly the program's curriculum. Overall, the co-op program is a good one and prepares students to find work terms and explore opportunities. The thing is, they need to cater to the lowest common denominator so a lot of students find the services and lectures useless or tedious. You can see this exact same sentiment about repetitive, uninteresting work on UWaterloo's subreddit too, just search for "Fuck PD".
In co-op, you're expected to complete two co-op prep courses, which train you to develop documents (Cover Letters, Resumes, etc.) and start doing interview prep. Usually you're told to apply to around 3-4 postings per week through the coop portal, CSM. You're also allowed to apply externally (LinkedIn, Indeed, etc.) and you just need to tell your coop supervisor you're doing so. If you're unable to secure a work term you're allowed to resequence and try again in another term, and this does indeed happen. The quality of jobs on the portal is good, getting better, but not yet great. The support you get from coop staff is good, and getting better. The curriculum is good, and getting better. If anything, I would say theres a strong positive trend towards becoming better, and the staff that Ive spoken to (I worked with the coop office before) seem to be all really great people that want to make it better in the coming years.
Overall? I give the current coop program a 7/10. It is a ways better than mediocre, and it definitely helps most of the people in the program land solid positions. It lacks the high prestiege and clout of Waterloo's coop program, but it does have a long history of success and intimate connections with a lot of local companies. The staff has mostly been turned over from the above reddit posts, and there are some _seriously_ amazing people at the coop department (Jaime, Marcia, Dallas, Venessa, Catherine, to name a few). The program costs (about $600 CAD a semester for the first few semesters) are a bit off putting for some students, but I do recommend the coop program overall.
tl;dr: Good program, was a bit outdated compared to modern trends but now is making major strides.
The coop program consists of several coop courses you take in addition to the regularly scheduled courseload (these courses are strictly pass/fail, and do not affect your GPA nor count towrads your graduation progress). Overall, they teach you about how to enter the workforce and become an attractive candidate. Here's a very brief overview:
COPD01 - Learn about job search cycle, create job search documents (cover letters, resumes, etc.), learn to assess your own skills and develop stories to describe your skills
COPD03 - Learn how to tailor job documents to specific jobs, how to effectively interview, apply, network, and additional coaching, etc.
COPD11/12/13 - Additional courses are just about seeking work terms with support from your supervisors.
A primary and reoccuring complaint by a lot of people is that its very slow paced and a lot of the stuff is extremely simple. This is true, they do spend a lot of time covering soft skills, how to write properly, etc. but if you've seen some of the resumes I've seen, you'll know that going over the basics like this is necessary. This does put a lot of people off it, and that's fair though.
The general curriculum has actually changed a lot in the last few years, in my opinion for the better. We used to do two-page resumes with summaries, interpersonal/etc. skills. Super outdated stuff. Now, we've modernized and push 1-page resumes a lot more. For example, this is a super basic but ideal resume template. Not flashy, but it works and works well. The curriculum has developed new and topical stuff like personal portfolio websites, talking about whiteboarding interviews, coding challenges, and a lot more great stuff.
During the work term, a member of the coop team will reach out to your manager and check in regarding your performance, accomplishments, and areas for improvement. You'll also have a chance to talk about any problems or reservations you might have with your work term. This is a great opportunity to learn if there are any areas for you to improve in, or discuss anything that you're not quite sure of. If you're not in Toronto, this can be done remotely too. I haven't found this too useful personally but I think its a great thing to have. At the end of your term you're expected to write a Work Term Report.. I'll be honest - everyone hates this - students from UW, UTSC, UBC, literally everyone. Just write about the tech you used, what you learned, etc. Think about it as a brain dump reflection for what you did.
Oh, and there's also a new initiative thats been started recently, a Peer Coaching Network. Peers (students from all disciplines) from upper years who have done work terms before will help critique, review and revise your application documents and give general advice/insight. Completely free for all co-op students, all you need to do is book online and just show up! Or, join our discord server and get free advice in the #careers channel! (hopefully its not dead by the time you stumble on this blog haha).
tl;dr: No big blow-your-socks-off name companies, but good consistency and a lot of great selection.
Interested in seeing the types of companies UTSC coop students work for? It's linked on the Discord above, I'm not putting it here so go join discord and check pins or ask for info. In short, there's a bunch of variety of companies on there, from startups like Verto to established companies like IBM. There's companies focused on healthcare (UHN) to companies focused on finance (Fidelity) and banking (RBC/CIBC, etc.).
At first glance, its apparent that it lacks the oomph compared to UW (Two Sigma, Google, Airbnb, other tech giants). This is true, and indeed no coop program in Canada comes particularly close to UW's. That being said, it is getting a lot better recently. Our coop department secured Salesforce (CRM giant in California) recently as an employer partner, and has invited Microsoft and Facebook on campus too. We're definitely trending in the right direction and I'm hopeful that the co-op scene at UTSC can continue to grow.
You like numbers? Check out the UTSC Co-op salary thread of 2018 posted to r/UTSC. Generally for local Toronto companies, on your co-op term you can expect to be paid around:
First Work Term: $16-22/hour
Second Work Term: $20-26/hour
Third Work Term: $22-30/hour
The normal interview process is that you'll get a notification from the coop department that you've been invited to an interview. You'll accept the interview invitation and go to the coop office (or through the phone) and interview with the company once or twice before an offer is extended. Some companies like to do an online challenge (IBM's cognitive test), some companies prefer to do virtual interviews - it all varies. Once you get an offer, the coop office will contact you with offer details. You've got a day or two to accept your offer, and if you don't, you need a valid reason to decline the offer, otherwise you might be kicked out of coop (I know this sounds harsh, but UW does it too). For external offers you just send the details to the co-op office and they'll handle the paperwork.
tl;dr: PEY is better for long term experience, coop/internships is better for variety of experience. I personally recommend coop or internships.
- More depth of experience, can contribute more in 1yr than in 3-4 months
- Usually will not have experience going into PEY search making your job placement probably more along startup/mid tier company (IBM, CaseWare, Flipp, etc.)
- LONG commitment (if you don't like your company) - a lot of people have had bad experiences doing year long QA, etc.
- Much more straightforward process (compared to coop classes, its just apply for PEY, do a couple of sessions and start applying)
- Many opportunities to explore different roles in tech field (SE, QA, DevOps, PM, Technical Writer, etc.)
- Can leverage past work terms into better work terms (perhaps Startup -> Medium Company -> Larger Company -> Tech Giant)
- If you like your job, you can often extend the work term - If you don't, it's only a 4 month commitment anyway
- Gives you the opportunity to preview more cities and companies before you graduate
- Most major and even a lot of startup companies offer co-op or internships, whereas not many companies do PEY
- Slightly more expensive overall compared to PEY. Has more work to be done in terms of work term reports, co-op classes, etc.
tl;dr: Yes, its good for you if you think you're an average student.
I think that co-op is perfect for most people. If you're looking to find a job, get some experience, take some time off school, pay off some tuition, and pad a resume for a easy job search post-grad, then the co-op program will work perfectly. That being said, who isn't coop for? In my opinion - the superstars. Almost all of my most successful friends have found their jobs outside of the portal - those in UBC, UOIT, Ryerson, McMaster, Waterloo, from all sorts of universities. It's about you, not your coop program. My friends found jobs at Google, Amazon, Airbnb, Citadel, Microsoft, Facebook, Uber, MemSQL, Jane Street etc. and most of them aren't in any sort of co-op whatsoever - they're just incredibly driven people. A lot of friends have dropped from UW's Co-op program because they said it just wasn't useful anymore. When you reach a point where you're an incredible candidate, it's true that co-op will feel redundant.
However, I really do want to note something - it's okay to not want to be a 'rockstar developer'. You don't need to graduate having interned at all 4 of the Big 4, or getting a 200K total compensation job offer right out of school. You'll see your fair share of people getting amazing co-ops in Silicon Valley and NYC, but what you don't see are the hours put into interview prep, reviewing CTCI, practicing leetcode and sending out applications. It's okay to graduate with a few local internships - believe it or not, these already put you way ahead of 85%+ of other candidates. It just depends on what you're looking to prioritize.
Be honest with yourself. If you think you're the second coming of CS Jesus, go ahead and bet on yourself and drop coop. If you think you'd like a little guidance and be ensured a pathway to success, coop sets you up well.
tl;dr: Depends on you, entirely. What are you optimizing for?
There's a ton of variance here, so let's break it down. First, should you intern at a large company vs small company? What makes more sense? This is a very general classification, but here's what I think each has to offer:
Large/Established Tech Company
- Usually solid engineering best practices (git, CI/CD, code reviews, etc)
- Solid mentorship from industry veterans
- Enormous opportunity for networking (esp if in Bay Area)
- Easy to get into basically any other company afterwards. If you worked Google then wanted to go to a startup, its much easier than startup -> Google
- Great salary and a chance to explore different cities (maybe you like SF/Seattle/NYC/Austin/LA, etc. and want to live there after grad)
- Well defined intern program with checkins, one-on-ones, lunch and learns, offsite trips (basketball games, boat cruises, etc)
- Usually little to no choice of product/team if you're an intern
- May be stuck working on some features that are irrelevant to core product or never shipped (my friend worked on a weird little messenger feature that I find mostly useless this summer at FB)
- Tight knit community with a great sense of community
- Engineering practices may not be well instilled or have some glaring flaws.
- Lots of ownership means wearing a lot of different hats (PM, SE, QA, DevOps, etc.) and gaining a lot of experience with different roles. Jack of All trades somewhat
- Comparably worse salary and probably will be mostly local (TO, KW, Ottawa maybe)
- Not all companies have return offer / conversion to full time pipelines in place, nor a well defined intern program
Learning New Tech
Want to learn the most? Go to a smaller startup where you can take the lead on a number of great mission-critical projects. You'll learn so much and contribute in a meaningful way. I definitely recommend doing this for your first or second work term so you can develop a number of skills and see what sticks.
This is tough. Find out what companies work in the field you're interested in and go after them exclusively. Honestly, don't get caught up in the prestiege - its better to do something you like (ex. ML at a small company) than something for the sake of it (ex. QA at IBM).
Dollar Dollar Bills, Yo
Go to a company in the United States, for real. I recommend this for the last work term, after you've developed a bunch of desirable skills and can land interviews at the Big N companies (Microsoft, Google, Facebook, Airbnb, Salesforce, Dropbox, Uber, etc.). If you want the most money, go for quant roles in New York City or work for any HFT Firm/Hedge Fund. Citadel/2Sigma/JS/etc. pay around $12.5K+ USD per month for interns - no, that's not a typo. Any Big N job in the states (Bay area, Seattle, NYC) can probably net you around $7K+ USD per month, housing and board included. Going here for your last terms can help you secure a full-time new grad offer which means job security!
tl;dr: Make yourself stand out. Network. Use references. Keep applying. Check out this slide deck we made.
- Its who you know, more than what you know. Use references, even if it feels awkward to ask. Honestly, I can't stress this enough. Please, do it.
Stand out, there's a bunch of things you can do to get ahead. I'll list some of them:
- Coding competitions (USACO, ACSL, UW's CCC/CCO, IOI are all incredible accomplishments. If you can get recognition here you'll get an incredible amount of clout). Those are HS contests, in University look into the ACM-ICPC and Google Code Jam, Facebook Hacker Cup, etc.
- Hackathons. A lot of hackathons take in HS students, and I won a hackathon in HS - this experience came up a lot as a talking point for interviews, and really added to my otherwise empty resume in first year. Look into UofTHacks, Hack the North, Hack the Valley, amongst others. Check out MLH.io
- Projects. Start a GitHub. Over summer, before school, whenever you've got some free time and are bored, maybe learn a new technology, make a personal site, or something. Keep on learning, and build a great portfolio at the same time. Don't really think about it as 'doing a project for the sake of finding a job', but rather 'explore this cool new thing that I've heard about'.
- A good GPA (in the first few semesters of University). Although this is controversial, when you're just seeking, chances are you have little to no experience. Your GPA differentiates you from the mass of other students! This matters significantly less as you get experience though.
- Clubs/MOOCs/etc. Show leadership and initiative, go seek out clubs and extracurriculars, learn new stuff from online courses (Andrew Ng's ML course, CS50 at Harvard, etc.) This just shows employers you're passionate and motivated. Also psst. join CSEC
- Keep Applying. Definitely apply on CSM, but also apply on LinkedIn and other job sites. One great resource is Intern.Supply).
- Not getting responses? Get your resume checked. Either hop on over to the coop office, visit #careers in the discord, or check out r/cscareerquestions who have resume review threads stickied each Tuesday and Saturday. Remember to anonymize your resume so you don't get unwanted attention!
If you've hung around the internet (esp. the UW subreddit) you've seen the meme "Cali or Bust". Personally, I think California is a great place to develop and explore tech opportunities, but after making it there it's honestly not life-changing. Let's talk about some pros:
There's something different in the atmosphere at the Silicon Valley compared to Toronto and other major cities. I guess one good description that I've seen thrown around is the Mecca of CS. Honestly, the scope and variety of opportunities that are available to you is mind-boggling. There are basically recruiting events for new grads and interns every day of the week with free food, speaker series, and company swag. I've had uber pool rides where my fellow passengers offered to refer me to their companies, and others where I'm being driven by a VP of a large tech company. It's sort of surreal.
You want to work for a large company? Sure, they've got them in spades - Facebook, Amazon, Google, take your pick. Want startups? Sure! Unicorns galore like Uber, Lyft, Airbnb, and other great companies with promises of amazing IPOs. Want an unique challenge and blaze your trail in a niche field? Self driving cars, bleeding edge ML/DL and all sorts of R&D happen in the valley too. Whatever your interest, you can be sure that there's somebody somewhere working on it in the valley, and you can be sure they have a bunch of funding too! The valley is super connected with a great rapid transit system that can get you from one end of the bay to another in 1-2 hours, making travelling not a problem, even if you don't have a car.
The last thing might be the quality of the people there. I'm not saying that everyone in the Silicon Valley is a savant, but I've met some people I couldn't imagine I'd meet. I was reading up on query optimization - the next few days, Patricia Selinger, the woman almost accredited for the discovery of that field, showed up on my floor and had a chat with me. I met the CEO of Reddit at a meetup and had a great chat about the Reddit redesign and monetization models. If you want to meet some real life legends, there's no better place to do so.
Now, that does sound kind of great right? What are the drawbacks? Well, I think that the Bay Area kinda sucks to live in man. It's got great weather, but the wealth disparity is a bit shocking. SF has slums (Tenderloin) very close to the tech giant offices. You'll also be hated by a lot of people that live in the area and aren't in tech, because, well you're kinda indirectly causing the gentrification of the area, inflating their housing prices to oblivion and driving up their costs of living substantially. Talking shop all day can also get exhausting, and there's an intense feeling of impostor syndrome and getting left behind. It's a bit stressful. Oh, and everything costs a fucking fortune, from food to housing. Want to learn more? Check out my article comparing my experiences in Los Angeles, Toronto, and San Francisco.
It definitely isn't a mark of a bad junior engineer to not make it to a tech giant on their first job. Neither should it be everyone's aspiration. Everyone has different priorities, and if you enjoy Toronto, enjoy the opportunities, or just don't want to go to the states, its perfectly okay to stay local. Never think that you're behind or worse off than anyone else. I've seen a lot of depression about the Cali or Bust mentality, and honestly after getting there it's a bit overrated. California is a good place, but there's a plethora of amazing tech talent and opportunity in Canada too. Don't drink the kool-aid!
Numbers + AddendumLike numbers? Heres a few links with relevant information to this topic. I'll try to update as I find more stuff:
r/UTSC's coop self-reported salaries, 2018
UofT grad self-reported salaries, 2016
Bo Peng's Toronto CS salaries, 2018