2018 Class Profile
University of Waterloo
Andy Zhang, June 2018
The University of Waterloo’s Software Engineering (SE) is an interdisciplinary
program supported by both the Faculty of Mathematics and the Faculty of
Engineering. For 5 years, all 141 graduating students of the class of 2018 spent 8
semesters in school with similar schedules as well as 6 co-ops.
SE is commonly compared to Computer Science, and is often seen as its more-constrained,
engineering-oriented counterpart. Prospective students may wonder whether SE
is the right fit for them, and whether they’ll enjoy the environment. This
profile attempts to showcase who SE 2018 students are, what they've done, and
how university went for students.
The findings in this report were derived from the results of a class survey.
In total, 113 out of 141 (80%) graduating students responded. SE classes
can vary significantly depending on the year, so generalize from this survey
to other classes at your own risk.
Study terms are defined as 1A, 1B, 2A, up to 4B (8 terms). 4 month co-op terms
occur after every study term starting after 1B and ending before 4B.
All analysis involving income is expressed in Canadian dollars (CAD). The exchange
rate used to convert from USD to CAD depends on time and is stated where
relevant. All salaries include monthly housing stipend or the monthly cost of
corporate housing if applicable.
This class profile was inspired from the Systems Design Engineering 2017 Class Profile created
by Joey Loi and Atef Chaudhury.
Companies, locations, salary, factors affecting salary
Gender, ethnicity, high school, family
Grades, attendance, courses, factors affecting grades
Rating, preferred program, paths
Extracurriculars, software discipline, lifestyle
Debt, post-graduation plans
At least 300 companies from 58 different cities have hired an SE student.
Students had the opportunity to work in many different types of environments,
including working at a 5 person startup, writing code in Kenya,
researching with professors, and working at a big tech company.
While a majority of students were software engineers during their co-ops,
some explored other areas such as design, product management, finance and consulting.
The benefit of having 6 co-op terms is that students get to explore different
company sizes doing different positions in different cities. This is
invaluable for students because it helps students figure out what they want
upon graduation.
91% of students co-oped in at least 2 different countries.
One of the factors behind only 9% of students interning in Canada were
restrictions from work visas which primarily affects non-Canadians.
The majority that co-oped in the US worked in California and specifically in Silicon Valley.
One of the reasons for this is because Silicon Valley is the headquarters for many
large tech companies that hire software engineers such as Google, Facebook,
Apple, etc.
During 5 of the 6 co-op terms, there was at least one student working outside
of North America. This included cities such as Stockholm, Nairobi, Phnom
Penh, Shanghai, Tokyo, etc.
31% of students that worked in California preferred working elsewhere. While California is still preferred by most, this suggests that it is not for everyone. The infamous ‘Cali or Bust’ mentality could have hindered some students from exploring opportunities in other cities that may have been better suited for them.
By the last co-op term, compensations tripled in comparison to the first.
Average monthly compensation per co-op term were $2898, $4184, $5688, $7657, $8972, $9624 (in CAD, includes housing stipend).
The difference could be explained by the increase in salaries and
stipends to compensate for the difference in living costs between different
locations. For example, San Francisco housing typically costs a student between
$1,500 to $2,500 per month. In comparison, Waterloo housing costs a student
approximately $700 per month.
In order to rank jobs appropriately, salary is used as a proxy metric to measure job opportunities. Due to the subjectiveness of this metric, the following results should be taken with a grain of salt because higher salary does not imply higher job satisfaction.
Grades do not correlate with salary at all.
In other words, having a high cumulative average does not imply that the student
will get a good salary in the upcoming co-op term. This suggests that there
are more important factors than grades when it comes to finding a good job.
Some companies do use grades as a cutoff to filter large amounts of candidates.
However, many companies are aware that grades are not a good indication of how
performant a student can be during co-op.
This suggests that if a student wanted to optimize for getting the best co-op
possible, aiming for a higher grade may not yield the desired results, and
their efforts can be redirected towards other involvements such as side
projects.
Interactive: Click on a co-op number to view the plot for that co-op.
Women are paid the same as men on average for co-op terms.
This is great to see because this suggests that women and men have equally good
job opportunities for co-op.
However, this does not suggest that there is no gender bias in the longer term.
fact, according to a
Glassdoor study,
"younger workers face a smaller gender pay gap than older workers." This
finding is not exclusive to the tech industry.
Students who started coding earlier were paid similarly compared to students who started coding later. In other words, it doesn't matter if a student started at the age of 13 or 18. This suggests that students that started coding later are not at a disadvantage in terms of co-op job opportunities.
Students who attended at least one hackathon earned 18% more on average than those that
didn't attend any.
In other words, students who show passion for building projects get better job
opportunities than those that don't. Alternatively, this result could be
because students that attended a hackathon cared more about getting a higher
paying job.
Students who attended more than 5 hackathons earned approximately 27% more than
those that only attended between 1 to 5 hackathons. This could suggest that the
former had a lot more relevant work to show which is more appealing to
employers.
Students that build side projects earned 13% more on average than those that
don't build side projects.
The more time that a student invests into side projects, the more they are likely
to get paid. Side projects are often seen as the closest thing to software
work experience, making it a great time investment to compensate for any lack
of work experience.
It is important to mention that side projects and hackathons are not the only way to find
a job. There have been many less practiced methods students have used to
find job opportunities such as referrals, networking, etc.
It is just as important to note that students who are not involved in software-related
extracurriculars still find great jobs. In fact,
many SE students and faculty encourage pursuing interests besides software.
Admission averages have no significant impact on job pay. A 90 in one school could be harder to achieve than a 99 in another school. In other words, admission averages are an inaccurate metric to determine how successful someone is because high schools do not standardize their grades with each other.
Women make up 17% of students, which is approximately the same proportion as
the number of women in tech.
Although we are still working towards increasing the number of minority gender
groups, we can see a positive increase within the recent SE classes
There are also many on-campus communities that supports the success of women in
computer science at UWaterloo. For example,
Women in Computer Science, and
Women Who Code Waterloo .
One student preferred not to disclose.
Students come from many different ethnic backgrounds, which span 27 different countries. There was a significant number of students Caucasians, South Asians, and East Asians.
Less than 35% of students were involved in a STEM, CS or Robotics clubs during
high school.
Instead, students participated in all sorts of extracurricular
activities such as volunteer work for non-profits, being a cadet, starting a
school newspaper, and more. Pursuing their own unique personal interests was a
common pattern amongst students during high school.
Note that this is not a comprehensive list, and that students have
participated in other extracurricular activities as well.
14% of students are international, which is 4% fewer than University of
Waterloo as a whole.
This could be due to the higher tuition costs for international students, who
pay 27% more than the average international tuition fee. This could also be
caused by the Engineering Admissions having a max quota for international
students.
International students came from countries including Nigeria, United Arab Emirates,
China, Pakistan, South Korea, Indonesia.
More than half of students come from families whose income is higher than the median Canadian family income ($76,000). These numbers do not include income from co-op terms. The majority of students have a family income between $50,000 and $150,000.
There are more parents with Masters and Doctorates combined than Bachelors. Compared to our parents, only 3 students out of 113 are planning on attending grad school. This could be a generational shift, or maybe it could just be that students are tired of school after 5 years with no summer.
Study terms gradually become more difficult, but class averages remain consistent. 3B was voted as the most difficult term by students. Despite being the most difficult, its class average was only slightly lower compared to other terms. This suggests that students progressively become better at coping with difficult courses.
Attendance consistently drops term by term, except after 3B
3B also happens to be the hardest term.
This could be because students enjoyed their 4A classes more, or maybe they
were possibly looking to compensate for their lower grades in 3B.
Alternatively, students attend slightly more class more during summer terms
(2B and 4A).
Although 3B was the most difficult term, it had Concurrency (CS343), the most popular course.
The top 8 favourited courses were all between 2A and 3B. Although
these terms are slightly more difficult, they also happen to have the most
interesting content for students.
Students are also required to take several technical electives to fulfill
their credits. The most popular electives included Graphics (CS488),
Distributed Computing (ECE 454), and Human-Computer Interaction (CS 449).
3B also had Feedback Controls (SE 380), the most disliked course, which
explains why it was the hardest term.
Although SE 463 is just as disfavoured, it was a much easier course, which explains why 4A
was an easier term.
It's important to note that courses that were disliked do not imply that
students find the content useless. Instead, there are a variety of factors
such as personal interests, final grades, and assignments. For example, Logic and
Computation (SE 212) is considered useful by 88% of students
according to UWFlow.
There was no correlation between self-reported attendance and grades. To be clear, this does not suggest that not going to class is beneficial. Instead, it suggests that it is possible to achieve good grades without attending all classes.
Grades are slightly higher when at least one parent had a university-level degree.
This suggests that there could be a correlation between parents' education and how
academically inclined students are.
However, this does not suggest that having a parent with a university-level degree is a
requirement for getting good grades.
70% of students would choose SE again if they could go back to high school. Computer Science is a popular alternative because it has more course flexibility. Unlike SE, Computer Science does not have a cohort which makes it harder for CS students to meet others.
Being a part of Software Engineering was life-changing for most of the class, and equally enjoyed by both men and women. 51% of the class rated SE a max rating score, and 87% of the class rated above a 4 out of 5. Shoutouts to the Software Engineering faculty and the class for creating such a great environment for students!
There are many ways students can make the best of their time in university. As a
software engineering student, it is normal for students to attend a few hackathons,
build some side projects, intern as a software engineer in Silicon Valley.
However, several students took the extra leap of faith to make the most of their
university experience. Here are some of their stories:
I’ve always seen myself as an outsider among my peers in more ways than one. Outside of class, I invested my time in pursuits like illustration, photography, and fashion blogging. When I learned about product design, a field that bridged computing and design, I knew this was it.
I’m grateful I took the leap that landed me my first product role because once I was surrounded by a community of designers with passions similar to my own, I knew I finally belonged.
On one of my co-ops I met a member of a Berkeley student club called Blueprint, where students build tech for nonprofits. I loved the idea of it since it combined my skills in tech with my passion for volunteering. With another girl, I started the Waterloo chapter of the club.
We've gotten to work with some amazing non-profits, whose missions range from cataloging the world's dying languages to the preservation of bumblebees to investing in entrepreneurs in rural Kenya. It's been a lot of hard work, and at times it left me feeling burnt out, but it's been an incredible experience.
I saw data science as a way to grow my skill set in a way that differentiated me
from other software engineers. I believe having an internship in data science has
had a larger impact on my personal and career growth than completing another
software engineering internship.
Throughout my data science internships I've
learned various analysis and communication skills that will benefit me no matter
what position I decide to pursue. I feel lucky to have had people believe in me
to jump into a completely different role with no previous experience.
I've always been interested in the mind, so when I saw the option for a minor in cognitive science, I thought, why not?
I'm somewhat torn by the end of it. I missed out on some courses, but I took others that I really enjoyed (like a seminar course that I did a research experiment in!). I could've taken these without being enrolled in the minor though, so my advice is to just take courses you're interested in and not stress about the minor.
During my 2nd co-op, I ended up having to do customer support part-time for a month which helped me build user empathy. I was also involved with the Product Vision Club, a product management community.
I was hooked and ended up leading the club as well as organizing Canadian
Undergraduate Technology Conference.
Taking the risk to put myself in uncomfortable situations helped me
transition into product roles early on, and I’ve loved the world of
product management ever since.
At the end of my third year, Marcus and me had an opportunity to join an
early-stage startup building autonomous semi trucks. In coordination with the SE Program, I was able to finish my degree remotely by submitting assignments online and flying back for exams. During this time, I got to be a part of Embark’s incredible journey as we grew from a small team of 5 engineers to one of the leading players in the self-driving space.
Taking this unconventional path gave Marcus and I incredible experience beyond my schooling that will follow me throughout my career.
Unlike high school, almost half of students were not involved in any
extracurriculars during undergrad.
Most students were the only SE 2018 student involved in their club.
Most students did not pursue any extracurricular activities related to STEM.
Python is the most popular programming language among SE students.
Python’s versatility for back-end web, scripting, and especially machine learning could explain
why it is so popular in our class. Many of these disciplines are highly in-demand
in the software engineering, making Python an ideal general purpose language.
Java continues to be very popular since it is
commonly taught as students' first programming language in high school.
Many companies hire web developers for
co-op, which could explain why JavaScript, a scripting language for the web, is
so popular. It also happens to be the most popular language amongst all
developers
according to a StackOverflow survey.
Sublime Text is the most popular text editor used in our class, followed by Vim and Atom. Interestingly, Visual Studio Code is one of the less popular editors in our class but it is the most popular editor according to the same StackOverflow survey. This could be because it was released very recently after most students were already accustomed to their favourite editor.
The majority of students are using a macOS machine.
This result isn’t surprising since
macOS is built on top of Unix, enabling a lot of important functionality for
programmers
Interestingly, most students didn’t have a macOS machine in first year. Many
employers provided MacBooks as work laptops which introduced students to macOS's
development environment. As a result, many students converted to being MacBook
users during university.
More than 80% of students have gone to at least one hackathon.
They are especially popular at UWaterloo, home to Hack the North,
Canada's biggest hackathon.
According to Justin Trudeau, “Hack the North will give you a chance to not
only let your imagination run wild, but to meet other people who can help
you solve problems: mentors, friends and colleagues, who will challenge you
to take your ideas a step further.”
Most students have also worked on some sort of side project during university.
Amongst those that have built side projects, only 25% dedicated more than 10
hours a month to their side projects. This should be taken with a grain of
salt since commitment may vary depending on the term and year.
During the first few years of SE, side projects are often a means to getting
a better co-op job because it compensates for the lack of software work experience.
57% of students enjoy an aspect of web development (front-end, back-end,
full-stack).
Many co-op positions happen to be related to web development which explains
why many students are more familar with it. Alternatively,
students could just find web development the most fun. Interestingly, there
are no course offerings in SE for web development unlike ML and AI.
After web development, 25% of students enjoy machine learning (ML) or
artificial intelligence (AI). This aligns with the rising popularity and
demand of both disciplines.
Only 3 students have expressed interest in mobile development. This is
surprising because of both how high in-demand it is and how ubiquitous it is
amongst consumers.
Almost 80% of students exercise at least a few times a month. This could be in the form of intramurals, gym, sports team, etc. Students typically start SE intramural teams with one another. Although school is time consuming, most students actively set aside time for physical activities.
Over half of students cook every week.
In other words, many of us have a
lot of experience cooking. How good is our cooking? That’s a completely
separate question that may be better left unanswered.
These results vary depending on whether students are on a study or co-op
term, since many companies cater meals during weekdays.
Software engineers may have a reputation for being nocturnal, but most
students aren’t night owls.
In fact, 72% of students usually sleep before 1AM.
However, some students do still prefer sleeping late, possibly because they
focus better at night, or maybe they like gaming very late.
5:00AM-6:00AM might sound crazy, but then again, SE students willingly go to 24 hour
coding events called hackathons.
As of 5 months before graduation, 77% of students already have an offer, and 15% of students are
still looking for a job.
7 students are planning to do graduate studies after
graduating. Although most of the class plans to join the workforce immediately,
34% of students are considering grad school in the future.
Even though 80% of the class has worked in California, less than half of
students have chosen to live in California after graduating. Although California
is perceived by many as the place to be for software engineers, seeing the gap
in the conversion rate suggests that there are many other great places for
software engineers such as East Coast Canada, East Coast US and Pacific North
West US.
Good compensation and growth as an engineer were the main
factors affecting post-graduation plans.
This could explain why California was a popular choice for full-time location.
Although family may be the least popular factor, most students working away
from home have expressed interest in working near their families in the
future.
65% of students are graduating debt-free.
30% of students have less than $30,000 in debt. Among students who are
in debt, the median debt is $22,500.
It's important to note that there were students from each family income bracket
who graduated debt-free.
All students with family income higher than $200,000 graduated debt-free.
"Figure out which advice applies best to you and ignore the rest."
The following is a summary of the advice shared by students with the
intention of being shared with both prospective and current SE students.
Many of the sentences
are directly quoted or rephrased from the original advice.
Your success should not be defined by others. Just because someone else is better than you at
something, it does not mean that you're failing. Instead, be open and realize
you can learn something from everyone. Realize that your peers' successes
should be motivation rather than a reason to put yourself down.
Find value in modesty, empathy, and courage. Learn to develop good habits
early on, and budget your time based on your options and priorities. These
skills are indispensable during university. Find a hobby you love. That
hobby just might be software engineering, or it could be something completely
different like drawing video game characters.
Stop worrying about marks. They don't get you far unless you're looking at
post graduate studies. This also means that you should know when to stop working
on assignments to work on other things. "After graduation, I won't remember
many of the bogus technical concepts. I will, however, remember the late
nights in the SE lab with friends, fooling around while doing a last minute
assignment."
Try out as many different co-ops as possible. And don't Cali or continuous.
It's tough to get your first job, but don't give up. And if you get a co-op at
a big company, it does not mean that you're at the top of the world.
And most importantly, university goes by in a flash, so enjoy it!
- University of Waterloo Software Engineering Class of 2018
I hope you enjoyed reading the University of Waterloo Software Engineering 2018 Class Profile!
This project wouldn't have been possible without the help of some great people:
Patrick Lam, director of Software Engineering, for confidentially managing the data and unbiasedly advising the project from start to finish.
Christopher Luc for setting up the processing architecture and advising about the best statistical methodologies to apply, and Richard Wong for helping write processing scripts.
Joey Loi and Atef Chaudhury for inspiring me to create this class profile. Much of the process and structure of this was borrowed from their Systems Design Engineering 2017 Class Profile.
Jenny Sun, Derrek Chow, Kaitlyn Yong, and Bo Peng for providing feedback on the initial drafts of the class profile.
Balaji Sankaranarayanan, Emily Walls, Seun Makinde, Soheil Koushan, and Bilal Akhtar for providing feedback on the survey sent out.
Software Engineering Program Homepage https://uwaterloo.ca/software-engineering/
Co-op at UWaterloo https://uwaterloo.ca/co-operative-education/
Academic Calendar https://ugradcalendar.uwaterloo.ca/page/ENG-Software-Engineering
Systems Design Engineering 2017 Class Profile http://joeyloi.com/SYDE2017classprofile.pdf
HackerRank 2018 Developer Skills Report http://research.hackerrank.com/developer-skills/2018/
StackOverflow 2018 Developer Survey Results https://insights.stackoverflow.com/survey/2018/
Processing scripts https://github.com/se2018/class-profile
Class Profile code https://github.com/andyzg/classprofile
SE Exit Survey results (not related to Class Profile) https://ql.tc/Hia9QK
Let me know what you think! You can reach me at [email protected].