A couple of days ago, McMaster released degree program placements to incoming second-year students, which will determine the course of study for many students for the remainder of their degree (unless the student decides to transfer or pursue a double degree). This is a time filled with excitement, worry, anticipation, and perhaps disappointment, but seeing as there are very few reviews of the Software Engineering and Management (Co-op) program that I recently graduated from, I have decided to start a blog series documenting my own personal thoughts on the program.
My second-year deadlines in the Software Engineering and Management program (Winter, 2016).
In this blog post, I will provide 3 honest thoughts on the Software Engineering and Management program. In subsequent blog posts, I will elaborate more on the co-op program, courses that I took, and my reasoning behind my journey as a Software Engineering and Management student.
Note that I am not an academic advisor, nor do I hold/have held any positions at McMaster that would qualify me to provide professional academic advice on behalf of the university. I am simply a recent grad who is creating a blog so that those who come after me can have a resource that I wish I had going through the Software Engineering and Management (Co-op) program. Always speak to an academic advisor from the university when you have any doubts about your academic progression.
1. Is it Even Worth It?
The Software Engineering and Management program is a 5-year program at McMaster. For some people, the Software Engineering and Management program presents a unique opportunity to develop strong technical skills as well as business acumen to become technical leaders at companies and for future studies; however, for others, the additional year the program requires is a huge loss in terms of opportunity costs. I will present an overview of both aforementioned views below:
The Good: For some people, the Software Engineering and Management program presents a unique opportunity to develop both strong technical skills as well as business acumen to become technical leaders at companies.
Engineering firms are ultimately businesses, and a lot of decisions made in the office are ultimately dictated by business processes. In my experience, the Software Engineering and Management program at McMaster does a very good job of not only providing you with the required knowledge, but also integrating it together, so that you know how the different disciplines work in the real world.
I think this is especially applicable for the Software Engineering and Management program. A significant part of the software engineering program (much, much more than coding) revolves around eliciting requirements from customers or users, communicating design decisions with both technical and non-technical people, designing around business scenarios and use cases, managing software teams and projects, and documenting systems for future engineers. All of these tasks are enhanced with an understanding of management and how firms and organizations make decisions. Coupled with the strong experiential nature of both faculties, I believe that the Software Engineering and Management program prepares students well to become technical leaders at companies.
The Bad: For some people, the Software Engineering and Management program represents a huge loss in terms of opportunity costs as they could have made more money pursuing internships or full-time employment.
By studying Software Engineering and Management, you will spend an additional year studying while your friends in 4-year degree programs work full-time or pursue graduate studies. It means you will miss out on 1 year of full-time wages (if you decide to go into the workforce after your undergrad), or you will delay your graduate studies for 1. It could also mean taking on an additional year of student loans that you will have to pay back in the future.
The average entry-level software developer salary in Canada is $54,338 CAD, and the 1 year’s worth of tuition for a domestic student can easily exceed $13,000 CAD. If we include other expenses such as textbooks or auxiliary fees, the opportunity cost for attending an extra year of school can exceed $70,000 CAD, even for domestic students.
So What: Only you can decide whether or not the Software Engineering and Management program is right for you.
Before you commit to the Software Engineering and Management program, ask yourself if you are truly passionate about BOTH software engineering AND management, so much so that you are willing to spend an additional year studying and learning about both disciplines. Carefully weigh out the pros and cons of the program and try to decide early on if the Software Engineering and Management program is right for you.
Keep in mind that Software Engineering and Management students take software engineering courses at a different pace than regular Software Engineering students. Additionally, Software Engineering students also take courses that Software Engineering and Management students do not (e.g. Sfwr Eng 3O03, Sfwr Eng 4E03). If you decide to switch out too late, you may still have to do a fifth year to catch up on courses you’ve missed.
2. Don’t Confuse Software Engineering with Computer Science (or Coding Bootcamps)
Some students are shocked, or even disappointed when they learn that software engineering is not computer science. While software engineering does use programming and computer science concepts, the end-goal of the software engineering program is distinctly different than the end-goals of the computer science program.
At McMaster, Software Engineering is a rigorous study of how to engineer safe, correct, and sustainable software.
At McMaster, software engineering is NOT about knowing how to use the latest frameworks, libraries, or technologies. Instead, Software Engineering program is about learning a set of timeless engineering principles that can be applied to design, develop, and maintain software systems such that they are reliable, easily maintainable, safe, and secure. Heavy emphasis is placed on learning the software engineering process and applying it to create safe and secure software systems. You will take courses like Software Requirements and Security Considerations where you will learn how to elicit and document requirements from customers, Software Design (1, 2, and 3) where you will learn how to design sustainable software systems, and Software Testing where you will learn how to ensure that your programs behave as expected. You will learn how software interfaces with the real world, and how you can design software systems that will not do harm to people. Throughout your 5 years as a Software Engineering and Management student, you will be challenged to design, develop, and maintain software systems as part of your course work.
If you would like to read more about the Software Engineering program at McMaster, you can read their program information guide on the official Computing and Software (CAS) website.
At McMaster, Computer Science is the scientific study of computers.
At McMaster, Computer Science students study how computers work, and how the computer can be used to solve various problems. Whereas Software Engineering students are required to take courses like Software Requirements and Security Considerations, Software Design, and Software Testing, Computer Science students take courses like Algorithms and Complexity, Compilers, Principles of Programming Languages, and Operating Systems. Whereas Software Engineering students learn how to “engineer” software systems, computer science students learn the science behind different parts of software. Perhaps it is like the difference between Chemical Engineering and Chemistry. Moreover, as it was described to me in 2015, the Computer Science program at McMaster was meant to be a “portfolio program”, where students have a lot of elective space so that they can explore other disciplines and pursue minors in other areas if they so choose. Overall, Computer Science students have a lot more elective space than Software Engineering students.
If you would like to read more about the Computer Science program at McMaster, you can again read their program information guide on the official CAS website.
3. Learn to Be Flexible
The Software Engineering and Management program at McMaster is a rigorous interdisciplinary program combining the full software engineering degree with the core components of the DeGroote business degree. Both faculties have world-class professors that expect the most out of their students, and you will need to learn to “wear multiple hats” if you want to excel in this program.
Be prepared to manage different (and sometimes conflicting) expectations as you progress through the Software Engineering and Management program.
The expectations professors have on your work between the different faculties can be different, and sometimes even conflicting. One jarring example that I’ve personally noticed is what “professional looking work” means to each faculty. In many software engineering courses, work that is presented in a clean, well-structured LaTeX document is considered professional. When giving presentations in software engineering courses, you are expected to deliver accurate information in a clear and precise manner. Adding additional features to your presentation such as providing a quiz for the audience or handing out swag to people who ask questions is typically not expected of software engineering presentations.
On the other hand, I found that commerce courses required students to polish their work more than software engineering courses for it to be considered professional. The professors in the commerce faculty work hard to prepare students to work in real-world business environments after graduation, so students are frequently put to those same standards. Whereas most Software Engineering professors accept stapled reports or assignments, in some of my commerce courses, final reports had to be bound with a laminated cover on the front. Presentations I made in commerce courses were also branded with much more colours and images than the simple plain backgrounds found in software engineering presentations. In commerce courses, professors say that how you present is as important as what you present.
Be prepared to work with students from different faculties.
Being at the intersection of two faculties requires you to learn to work with people with a wide array of interests, timetables, and personalities. On top of learning to work with people with varying levels of engineering knowledge, one of the most underrated difficulties of being in the Software Engineering and Management program is the difficulty involved with scheduling team meetings. Software Engineering and Management students follow a course schedule that is distinctly different than Software Engineering students or Commerce students. While Software Engineering and Management students take as many courses as Software Engineering students, I found that my commerce courses sometimes conflicted with the free slots for Software Engineering students and vice versa. Moreover, it is common practice for Commerce students to have an extra day off each week due to the way that they scheduled their courses. As a result, some of my group meetings have been scheduled as late as 9:00 or 10:00 in the evening.
Ultimately, if you are prepared to work hard in the Software Engineering and Management program, I believe that you will come out of the program prepared to be an active leader in any organization that engineers software systems.
And that’s a wrap for this blog post. I hope you got some helpful insights into the Software Engineering and Management program at McMaster. In my next post, I will give my thoughts on pursuing co-op as a Software Engineering and Management student.
DISCLAIMER: All opinions expressed in this blog post are my own and do not necessarily reflect that of any company or organization that I am affiliated with. I am not an academic advisor, nor do I hold/have held any position at McMaster that would qualify me to provide academic advice to current McMaster students. This post is a reflection of my own personal experience, and your mileage following my advice may vary depending on personal circumstances. Follow my advice at your own risk. I assume no responsibility for any loss or damages incurred as a result of this blog post.