How to Get The Best Coding Interns
The University of Waterloo has been consistently ranked the top university in Canada over the past 7ish years and is known for innovation and technology. The school's math and coding teams compete nationally and normally place among top 10. All in all, uWaterloo produces among the top coding graduates, who normally start out at companies such as Google, Facebook, Amazon, and Microsoft.
Before I start, here are some useful links:
Here's how the co-op program works: Students attend classes for 2 semesters (Fall, Winter) in first-year. During the second semester, students find jobs and then work during the Summer (technically "Spring" semester). Afterwards, they alternate between school and work terms. Some programs are flexible and let students take 8-month school/work term blocks if they choose.
During the first week of classes, students prepare their resumes and upload them to Jobmine (more on Jobmine in next section). During the second week, students start applying for jobs. If selected for an interview, interviews happen around midterms. After interviews, you'll rank students based on how much you want to hire them. Didn't get anyone you want? No worries, wait for the next round - you are not obligated to hire. After your rankings are submitted, Jobmine will run an "intelligent matching algorithm" to assign students to jobs.
PROTip: There are various rounds of "apply, interview, match" throughout a term. The best students get snagged fast. Make sure you're in the first round.
Jobmine is used by both students and employers. As an employer, you'll use this site to upload your job description(s), browse resumes, select students for interviews, schedule interviews, rank students, and get interns!
PROTip: Yes, the site is pretty much unusable. It has been a "work in progress" since before I started as a student in 2005. We just have to deal with it.
At the beginning of the term, you can post a description for the students to look at.
Every term, there are thousands of job postings. From 2006 - 2010, I would regularly have to sort through 2000+ job postings for every version of "Computer Programmer". It is hard to attract top students since you'll be competing with large companies, such as EA, Google, Amazon, FB, Twitter, Microsoft, Apple, etc.
PROTip 1: Many students are subconsciously competing with their friends to see who can have the "best" co-op term. For students, "best" is 1. highest paying 2. most prestigious company. Oftentimes, startups don't measure up because they can't compete on either.
PROTip 2: Want the best students? Follow these tips:
Make the job sound interesting! Make it sound like it's going to be bucketful's of fun at your office!
Students don't want to be doing bug fixing for 4 months. Let them know they they will have real projects, can interact with customers, will be pushing code to live servers, full ownership over projects, independent & collab work, etc.
Hype up your perks - free beer? Students love that! Do lots of team bonding activities? Students love doing things.
It is prestigious for a student to be anywhere except Ontario for a co-op term. It's especially prestigious for students to be in the Valley. Hype up your office's location. What other cool places are near it?
Say random facts to make your posting stand out! (ie. WATCH OUT FOR NERF BULLETS!)
The more interactions you have with students, the better. There is a startup "meet & greet" that we run with free beer and poutine. Student come with resumes in hand! Many larger companies will hold information sessions with free food and swag to meet students before deciding who to give interviews to. Some students like hackathons too.
Students will browse your stellar job posting and if they like it, you'll get a resume from them. Some students will write cover letters.
PROTip: Most of these cover letters are all copied/pasted with a company name change. If it seems at all customized to what you're doing, pay more attention to that student!
If you are hiring for a coding position, keep these tips in mind:
List Computer Science, Software Engineering, Computer Engineering, and Electrical Engineering as programs from which students may apply.
Mechatronics, Math, and Combinatorics & Optimization are also decent options for coding interns.
The Engineering curriculum tends to be more strict than Math (CS is in Math at UW). CS students will have higher averages and Engineers will have many failed courses. That's just how it is.
We, at Willet, tend to hire students who do programming for fun outside of school.
After reading resumes, you will rank students and then interview the top students. It is common to receive over 100 applicants for 1 posting. Just be happy you're not Google and don't have to read 5000+ packages/term. Interviews can last anywhere from 30mins - 90mins. 45mins is typical.
On Campus: You'll have an entire day blocked out and the students you select will pick their timeslots. On the day, you'll be directed to a room and students will come to you. You will get a snazzy nametag and free coffee.
By Phone: The co-op building on campus has phone interview rooms that students will use for phone interviews. They will book these interviews in the same way that they'll book in-person interviews.
By Computer: Not sure if this is officially supported. Wish I could tell you more.
PROTip 1: You're given free reign to interview them as you see fit. Just know that it's common for a student to have 20+ interviews every term and they are interviewing YOU just as much as you are interviewing them. Top students prefer being challenged in an interview because they'll think the job will challenge them and they'll near a lot. Top students also love meeting very technical interviewers.
PROTip 2: Programming students expect technical interviews, not HR interviews. 99% of my interviews were "Solve this problem on the white board/paper in pseudo code. Talk through your thought process." I was often unimpressed when companies asked me "Tell me about a time you had a disagreement with a manager. How did you react?"-type questions.
PROTip 3: Some employers send students home with programming assignments to complete overnight and submit. Interviews are held during midterms. Students don't have time for this. If a company asked me to do one, I wouldn't bother and wrote off the employer.
After interviewing all of your students, you'll be expected to rank them. Only offer jobs to students who you would actually employ. After you've submitted your offers, students will rank all of their offers. Then a "magical matching algorithm" will run and match students to employers.
PROTip: CECS (part of UW who runs co-op) will forbid you from contacting students outside of Jobmine. Who cares. All the big companies will email students who they want to try to convince them to rank them higher. You should do this too.
Here are some general tips if you are not familiar with uWaterloo's system.
Pay: Coding students are expected to be paid for their work. Their pay is usually determined by the term they are in. Students in 4th year are paid higher than those in 1st. Pay also varies by employer. FB, Google, and Amazon tend to be the highest payers. They will average $30-$40 US / hour. Some startups try to compete for students on salary. I know a 4th-year student who was earning $7k/month in SF.
Here is a Weekly Salary chart for 2010.
VeloCity: VeloCity is a residence for students who want to start their own companies. Assume students from VeloCity are actually interested in learning about how startups actually work. These will be great students for you!
Students Talk: Students will often ask around about a company that they are unsure of. Keep this in mind during all interactions with (potential) students.
First-Year Students: It has been described as a "community service" to hire first-year students. They have often never worked a "real job" before and often won't have much programming experience. Use your best judgment.
Hope this helps. If you have any other questions, please ask away!