I may or may not know what I'm doing.
2021-05-31
Note: WaterlooWorks, CECA, resume, interview, rankings and matching, PD, work term reflection (WTR), salary/pay/compensation, international, 8-month, courses
This is part of a 4-part series on the first year experience at the University of Waterloo.
Today’s topic will be on co-op. I will talk about CECA, WaterlooWorks (referred everywhere else in my site as WaterlooWorksn’t), and applying for jobs. This blog article is geared towards software development postings (and similar jobs).
The University of Waterloo has a strong co-op program because employers are interested in hiring UW students due to their reputation and because of the WaterlooWorks job board, which consolidates a large number of postings and allows students to apply with a few of the same clicks. However, just because you are in a co-op program does not guarantee you a job. You still have to do the work of making a good résumé and doing well in interviews. Don’t be fooled: It’s easy to get near-100% employment rate when the unemployed are pressured to drop out of the statistic. The time and energy required for applying and interviewing is about the same as a half-credit course (0.25 units).
CECA has a bunch of acronyms and initialisms that constantly change, and I refuse to play along, so this is my name for the co-op administration. Like most administration at UW, CECA is generally competent when there are no special cases, exceptions, or urgency. CECA maintains WaterlooWorks, runs workshops, schedules interviews (and resolves conflicts), matches students to employers after rankings, nags students for (electronic) paperwork, and “resolves” student-employer disputes (most of the time in favour of the employer to the detriment of the student).
CECA maintains a schedule for the term, which contain all of the cycles (confusingly, these were previously called “rounds”, and now rounds postings (a period of time where employers can post individual job postings, not to be confused with an individual job posting) are a subset of cycles). A cycle consists of:
Sometimes there will be a case where you still have a WaterlooWorks interview but already got matched with a job. In that case, CECA will either cancel the interview on their own, you can ask CECA to cancel the interview for you, or you can use that interview as practice (and if it went well you might be able to defer an offer for the next co-op term).
Rankings are from 1 to 10 inclusive, lower is better. When an employer gives an offer to a student, it shows up on WaterlooWorks as “1”. 2 to 10 inclusive shows up as “Ranked”, and if the employer doesn’t want to hire the student at all, it shows up as “Not Ranked”. Employers have the ability to rank multiple students the same number.
Once the employer rankings deadline has passed, students have 24 hours to rank employers. You are also allowed to rank multiple employers the same number (so if you really want to play it safe you can rank 1 for everything - assuming any employers ranked you). You also have three “Not Interested” rankings for the entire term, because even if you rank a job a 10, you still might be matched with it (this might not be good because reneging on a match has penalties, see below).
Matches are then made by going through each individual job posting and taking the lowest sum of employer and student ranking, making the match and removing the student and the employer from the pool. Ties are determined randomly. Once you are matched, you are taken out of the applicant pool and that is your co-op for next term. Ranking a 1 a 1 is a guaranteed match, which come out very quickly, typically within the first hour student rankings close. The rest of the matches are completed by the end of the day, usually early evening. If you do not get a congratulatory match message from CECA by late evening, you did not get matched and will have to try again next cycle.
CECA says you’re not supposed to contact employers about rankings and vice-versa. However, this happens anyway, and very rarely is a student caught and punished for doing so. Employers are generally don’t want to do any more admin work than necessary and are generally sympathetic to students (since they want to know if the offer is being taken as well). There is no rule against contacting other students during rankings day though.
To: Literally everyone who had an interview for the position: “If you got an offer, are you taking it?”
Replies: “No I got ranked but I’m ranking it 1”, “I got the offer but I’m not taking it”, “I got the offer and I’m taking it”, “I didn’t get the offer sorry”, “Didn’t get ranked”, [No response].
While employers have the luxury of cancelling jobs with virtually no consequences even after matching, a student that reneges on a match will be banned from WaterlooWorks for the next two co-op search terms (I’m not sure what happens if you renege on your last co-op search though). So make sure you use those “Not Interested” ranks if you interviewed and then realized the job was completely different from the individual posting description.
Of course, if you’re confident you’re able to get jobs externally, then banning doesn’t have much consequence.
Offer 1:
Employer 1 | Student | Total | |
---|---|---|---|
Student A | 1 | 2 | 3 |
Student B | Ranked (4) | 1 | 5 |
Student A is matched to Employer 1 (3 < 5).
Offer 2:
Employer 1 | Student | Total | |
---|---|---|---|
Student A | Ranked (2) | 1 | 3 |
Student B | 1 | 2 | 3 |
Either Student A or Student B is matched to Employer 1.
Offer 3 Getting wrecked by ties:
Let’s say Student A really wants Employer 1, but Employer 2 was their backup. This is what they see, and what they ranked:
Employer | Employer Ranking | Employer Notes | Ranking Deadline | My Ranking |
---|---|---|---|---|
Employer 1 | Ranked | 06/10/2002 02:00 PM | 1 | |
Employer 2 | 1 | 06/10/2002 02:00 PM | 2 |
Student B is also going for the same employer, so this is what happens on WaterlooWorks side on rankings day (same situation as offer 2 above):
Employer 1 | Student | Total | |
---|---|---|---|
Student A | Ranked (2) | 1 | 3 |
Student B | 1 | 2 | 3 |
Since there is a tie, the student is randomly picked. Let’s say that student B is matched (maybe they wanted a better job but didn’t get matched there so they got matched here instead). Student A still has another chance with employer 2:
Employer 2 | Student | Total | |
---|---|---|---|
Student A | 1 | 2 | 3 |
Student C | Ranked (2) | 1 | 3 |
Either Student A or Student C is matched to Employer 2. If Student C is matched to Employer 2, Student A is out of luck.
Worse, all Student A sees for employer 1 is “Ranked”. So this might have been the original scenario:
Employer 2 | Student | Total | |
---|---|---|---|
Student A | Ranked (5 instead of 2) | 1 | 6 |
Student B | 1 | 2 | 3 |
Have fun playing the lottery!
Don’t be discouraged by a low number of rankings, or even a lack of them. Getting your first co-op is very difficult, and it is not an indicator of your success for future co-ops. My first co-op was working in IT with the Federal Government for slightly over minimum wage. My fifth co-op was developing video encoding drivers with Nvidia for much higher than engineering average salary.
12. You are more than a ranking!
WaterlooWorks is the job posting board and website that students will interact with in order to get a job. This is where you upload your résumé and other documents (e.g. cover letter(s)), apply for jobs, see when your interviews are scheduled, submit an interview relief form for scheduling conflicts, see and submit your rankings, and see whether you’ve been matched.
WaterlooWorks will log you out after a certain amount of inactivity in any open tabs. If you try to log in, it will bring you back to the home page instead of where you were before. To avoid losing progress, open a new tab, go to WaterlooWorks, and log in, which will let you keep your other tabs (just close the notification). Additionally, if you lose your tabs they will be unrecoverable and gone forever (so shortlist often and hope your computer keeps running).
You have +50 applications to use per posting in cycle 1 and 2, and they are cumulative. I highly suggest using all of them available to you on a cycle’s posting 1. Once continuous (cycle 3+) starts, all 500 total applications are available for you to use, minus whatever you used before. Generally, the quality of postings are as follows:
Jobs being posted are usually overwhelmingly software and there are thousands of individual postings. The level of experience for the job doesn’t really matter (employers are lazy and just put all of junior, intermediate, senior for their individual job posting). Make sure to filter by “For your program”, and then you can continue filtering (e.g. by keyword). When you open an individual job posting, there are usually statistics showing which programs and terms they hire from, as well as previous ratings (9.0+ is good, 8.5 is fine, 8.0 is okay, be wary of anything less than that).
Don’t be too picky and/or set too high of a goal. For first co-op you want something like automated QA or webdev as they are the most abundant jobs (most companies need this work to be done vs more specialized roles), and getting software development is really good. Avoid unrelated jobs and jobs that won’t give you experience (e.g. IT, manual QA, summer camp counselor, etc.). In future terms, you can branch out to jobs that really interest you. Additionally, game development is not great because people go in on “passion” so they’re willing to undercut others for pay and work long hours, which means companies exploit the crap out of them.
A possible strategy is to use 5 of your applications for those hail mary shots (e.g. Wish and Bloomberg who look at grades and hire lower years relatively more than the other USA companies) and use the remaining for regular applications. Companies that tend to hire first years more are Blackberry, banks, IBM, and Ford. There are random startups as well.
Hardware jobs are limited and are generally taken by upper years. You can get hardware experience by joining student design teams.
A good résumé gets you to the interview.
Read my guide: https://xierumeng.github.io/resources/resume-guide
Go to the Engineering Society and ECE Society résumé critiques. Get your peers and upper years to critique as well. Remember that it is your résumé and you can choose to ignore advice, especially if you get conflicting ones.
DON’T go to CECA’s critique, their advice is akin to the grade 10 Careers course or “boomer” advice. The CFE course’s critique is not very good either.
Generally in tech/engineering, cover letters are not really a thing. However, some individual job postings will require them anyway. Generic cover letters are worse than submitting a completely blank page or your résumé as your cover letter.
If you want to write a cover letter, be genuine. A few sentences is all you need. However, you can go in-depth if you really think your past experience is exceptionally suited to the job.
Personally, I think cover letters are a waste of both my time and the employer’s time. Unless I really like the job, I submit a blank page (or if they ask for something specific, in which case I write it like an email). Others may agree or disagree with me.
I am available for 4 months starting November 2007.
Sincerely,
Xierumeng
A GPA in the range of 70-90% will not greatly affect your application except for a few specific employers. Grades also have diminishing returns in upper years since experience is what really matters. There may specific courses where the grade is of interest (e.g. employers don’t tend to care about economics but might care about algorithms and data structures or even a specialized course such as embedded systems). Even with a bad grade you can still get interviews (although it might come up during the interview so be prepared to give an reason).
There is no universal rule as the importance of grades will differ between industries, between employers, between teams within the same employer, and the between specific interviewers.
TL,DR: Be able to walk through your résumé, explain your programming experience, answer basic trivia on the programming language(s) you claim to know, and possibly be able to code something on the spot.
Shorter interviews generally do not involve writing any code. However, this does not mean that interviewers won’t grill you on your technical knowledge (e.g. object-oriented concepts) and problem solving skills. Always be prepared for behavioural questions.
Before the interview, do some research on the individual job posting and what the company does. If you want, you can also check out your interviewer’s LinkedIn or other social media presence. Review your technical knowledge and prepare some answers to common behavioural questions (see below) as well as a summary of your career.
Forming a good first impression is important. On the day of the interview, make sure you are well-dressed, clean and groomed (please take showers), and arrive to the Tatham Centre (TC) to check in a few minutes before your allotted interview time. It is not a fun time when you have to run across campus in the middle of summer (or winter) wearing a suit with a heavy bag while also avoiding the geese poop landmines.
In terms of dress code, it is best to be at or one above the interviewer’s dress level. Typically the minimum will business casual (i.e. collared shirt and dress pants), and it doesn’t hurt to be overdressed.
If the interview is in-person, introduce yourself and give a firm handshake elbow touch. Remember to breathe, you got this!
Typically, there is only one interview before the employer decides on who to hire. However, for the elite employers, the process might be more involved and be similar to an application for a full-time job. There may be online assessments (OAs) (coding problems done on your own time, typically with a time limit) before you get the interview phase, then multiple interview rounds involving a behavioural interview, a virtual/phone technical interview, and possibly even multi-hour on-site interviews.
Of course, things have changed since everything is online, but not much. Other than entering the virtual interview room instead of walking to TC, it’s the same. Interviewers will have a more relaxed dress code, but you should still have at least a collared shirt on.
I literally roll out of bed in tshirt into my interviews
Employers want to know if you will fit well into the team. Here are some common behavioural interview questions you should be prepared to answer:
Employers want to know if you can actually code. During the interview, the interviewer will ask you some basic programming trivia (including possible language-specific questions) and then give you a coding problem which you will solve on a whiteboard or on a shared document. Usually interviews with a coding problem are longer than 30 minutes, typically 45-60 minutes. However, don’t count on it, I’ve had to complete a coding problem in 15 minutes during a 30 minute interview.
Generally, the coding problems are the same or a variation of those found on coding practice sites such as LeetCode (or its rip-off LintCode and someone’s blog that has indexed questions and solutions), binarysearch, and Advent of Code. In terms of difficulty, they tend to be from the easy to medium categories, but it’s not unheard of to get a hard difficulty problem. Make sure you know your algorithm and data structure basics well, as they are your tools to start solving a problem you haven’t seen before, and interviewers will ask you about the runtime and space complexity of your solution. You can use the above sites to practice for your interviews (you might even get the same question).
When solving the problem, make sure you are communicating your thoughts as the problem-solving process is an important aspect of the interview. Even if you don’t solve the problem or don’t solve the problem optimally, the interviewer still might like the way you think. Additionally, it demonstrates that you are able to communicate effectively. Take advantage of the whiteboard to draw diagrams and/or program flow (unfortunately, this is much more difficult on shared documents, but you can still write out test cases).
Interviewers may also give non-coding problems. This has happened to me three times so far (geometry, fastest horses, next input of monotonic output).
Here are some types of problems:
Here are things to consider when solving:
I wonder if the next time I get a coding problem and I can’t solve it I should take out my phone, look the interviewer in the eye, and say: “this problem’s probably already solved by someone on Stack Overflow, in a more efficient manner than I can come up with”. If you do this please tell me how it went.
Do not say you know functional programming unless you actually know it (if you don’t know what a lambda is then you don’t know functional programming (which is a subset of declarative programming)). C is a procedural programming language and C++ is an object-oriented programming language, both of which are under imperative programming.
There will be opportunities to ask questions during and at the end of the interview. Asking a good question also demonstrates your critical thinking skills and shows engagement. Questions could be:
When you are selected for an interview on WaterlooWorks, you have to select a timeslot for your interview. Make sure you are able to arrive at least 5 minutes before the start time. If the interview is scheduled outside of WaterlooWorks, you will have to figure out a time with the employer directly.
If you have a conflict with another event that can’t be skipped or caught up with later (e.g. quiz, test, exam), then you start emailing other students to ask them to switch with you (as their emails are displayed on the timeslots). If no one is willing to switch with you, then you can ask CECA for interview relief and they will either reschedule or cancel the interview on your behalf.
Always ask your interviewer about the compensation/salary/pay rate. They might not know, in which case they will either redirect you to HR, come back to you with the information later by email, or HR will contact you.
Canadian employers generally have salaries that are either at or slightly above the average for your faculty. USA employers generally have much higher salaries (especially with a strong USD). Even if the work is remote and they pay in CAD, the numerical value itself is still very high. The UW subreddit has crowdsourced salaries from many companies (please help contribute!).
It may be possible to negotiate higher if you think you are a strong candidate. However, don’t be greedy and don’t worry too much about it. Experience (as well as networking and possible conversion to full-time) is the most important thing to gain. You can always get more money later. Sahil Kale has a guide on negotiating.
I am currently in the process of extracting salary and employment rate information from UW through a FIPPA request. This will take some time, stay tuned for updates!
Nothing is stopping you from applying to jobs externally, but it is a lot more difficult, as you are competing with the entire student population across Canada (and people from another country if you’re planning to go international (e.g. Cali)). This is why WaterlooWorks is a huge advantage as you are only competing with UW students and you are not competing with as many since co-op terms are year-round rather than exclusively spring.
Make sure that the job you accept is compliant with UW, and to do research on the various paperwork you will need to submit (e.g. visa, taxes).
Cali or bust has paid off with Cali? Congratulations! Now you need to actually travel to the USA (land of the free). 4-F. USA Co-op.
I prefer:
Unlike Canadian companies which have a single interview for co-op jobs, USA companies may have multiple interviews and OAs. There may even be multiple OAs for the position.
Changing streams is extremely difficult. Do not accept an 8-month co-op assuming you can change streams!
If you’re in stream 8, it may be possible to do an 8-month co-op and switch into stream 4 before 3A (as 3B is the term when the streams are synchronized again). If you’re in stream 4 and you want to do an 8-month co-op, you will have to drop to the next year, in the same stream. Since you will not be enrolled in an academic (school) term for 12 months, this will cause issues with financial aid such as OSAP. Additionally, it will cause you to delay graduation by a year. Be very careful about whether you want to make this decision, as it’s typically not worth it (especially for first-year co-ops (e.g. banks)).
You can take courses over co-op. For computer engineering students, it is at the faculty of engineering rate regardless of the course’s faculty ($1445 per course at the time of writing). Example: Taking MUSIC 140 from the faculty of arts will still cost you $1445 even though for an arts student it costs them $683.
It may not seem worth it, but OSAP doesn’t count parental income for part-time students, and they are very generous when granting money (grants count as income for tax purposes as well).
Keep in mind that your co-op comes first. If there is a conflict and your employer can’t accommodate you, your co-op takes priority. Additionally, if you wish to take more than one course over co-op, you will need written permission from your employer.
Apparently back when PD didn’t exist, employers complained that UW co-ops did not have good soft skills. Because of this, and also because UW get more money for having students “enrolled” in a course during their co-op, the PD program was created, mandatory for all students. Generally PD courses have a very light workload (a couple of hours per week).
PD courses are CR/NCR, so it does not matter what grade you get as long as it is >= 50% in order to pass. Some students play “PD golf” which is a challenge to get a grade as close to 50% as possible while still passing.
Some PD courses now have reflective essays that must be written at the end of the course, and are a requirement to pass (fail and you also fail the course). For ECE students, three work term reflections (WTR) of a couple of pages have replaced the three 20-page engineering work term reports thanks to David Harris’ efforts (thank you Dave!).
You complete two WTR during the prescribed PD 19, PD 20 and PD 21. PD 22 also has an integrated reflection, and clears the ethics requirement, so I suggest also taking it. Otherwise, search Reddit for the least painful ones.
Normally, you need 5 co-op credits in order to graduate (with 6 opportunities to get co-ops). However, this has changed due to COVID-19. If you weren’t able to get a co-op job in S20, F20, W21, or S21, you can skip that co-op credit.
The important information to take away is to know how to apply to jobs for co-op and work on getting an offer. However, co-op is not the only part of the first year experience. I will discuss the next topic in the next post.
Check out:
© 2023 Xierumeng. All rights reserved.