What is Software Engineering?

Software engineering is a discipline that involves the systematic approach to designing, developing, testing, and maintaining software systems. An example of these systems include operating systems (also called OS) like Microsoft Windows, Linux Android and MacOS.

Although its commonly and mainly perceived through its programming work, the discipline applies a combination of both engineering principles and technical skills — In other words, Software Engineering is more than just code and often requires practitioners to complete multi-step processes for a project.

While the profession and program can vary, we've asked Matthew Tran to provide his insight into this discipline.

Engineer Feature

My name is Matthew Tran, I recently graduated from Lassonde School of Engineering at York University as a Software Engineer. My main program is Software Engineering, General Stream. I also have complementary studies in entrepreneurial management and business administrative law through Schulich School of Business and Osgoode Law School, York University—some of the most prestigious programs in Canada. I started working pretty early on in my career, around second year, in which I believe opened a lot of doors as I progressed through my major. I got the chance to work in corporate and startup settings across various industries (e.g. tech, fintech, education,…etc.) before I even graduated university. They say experience triumphs over education, and now more than ever, that seems to be the case.

How were your high school academics?

My high school academics are, to put plainly, very high. One might say that is a humble brag, or lack thereof, but I understood the requirements needed to get into such a competitive program. I sacrificed most of my social life to get the marks needed to get into university, even giving up on my passion for swimming, but I never regretted any of that. If I were to give advice to future students, it would be to prioritise the things that are important, such as the desire to get into good programs, but to never give up on things you enjoy—more on that later. High school was daunting and I thought university would be much harder. Looking back, university is more difficult content-wise but it exists within a parallel world of navigating career and academics that somehow made it easier to juggle.

How did you know you wanted to pursue Software Engineering?

Interestingly, my initial interest lay in Computer Engineering, driven by a curiosity about building computers. However, the heavy emphasis on physics and electricity prompted me to pivot towards Software Engineering, a decision I never regretted. The opportunity in tech has been particularly encouraging, especially during events such as the COVID-19 pandemic, which accelerated tech adoption into daily life.

How difficult was the program?

The program itself started out easy since it didn't demand any prior coding knowledge. It was designed to teach everything from scratch. In the first year, we focused on building a strong foundation in coding concepts. However, things started to change in the second year as the curriculum assumed that we had a certain level of foundational coding knowledge. This adjustment challenged us to keep up with the expected pace. By the third year, the difficulty level increased significantly. We delved into algorithms and data structures, which required a deeper understanding and application of complex concepts. Finally, in the fourth year, the focus shifted towards building larger projects that aimed to prepare us for the industry by leveraging our existing knowledge and skills.

What would you recommend for students interested in the program?

For students considering this program, I recommend doing some extensive research into your field of interest. There are many specialisations within software engineering, and understanding these can help shape your career path. In my opinion, any specialisation that's data-based is a good bet for the future, given the increasing importance of data manipulation. Moreover, always try to incorporate co-op opportunities into your study program. These practical experiences are invaluable and can set you apart when it comes to job applications. Additionally, I suggest working on independent projects to showcase your skills. These don't have to be overly complicated but should demonstrate that you can write clean, reusable, and efficient code.

Do you feel that people need to be a certain archetype to be successful in this discipline? (ie. good at maths, have prior coding knowledge)

I get this question a lot, and I’m always afraid to give a direct answer. On one end, I do not want to dissuade anybody from going into Software Engineering but on the other, the success rate in this field does favour a certain group of people. Let’s start with the main one, “Do I have to be good at math and physics?” No. You do not have to be good at it but if it is not something that you can pick up quickly or have the determination to understand, then engineering is not for you. Speaking in terms of industry progression and predictive future outlooks, math is the fundamental basis of programming, dynamic programming, and modelling. Take generative AI as an example, or many people synonymously refer to it as ChatGPT, it is trained by data, and that data manipulation requires math, very advanced mathematics. Another consideration is gender. Yes, everyone would like to achieve gender balance within the tech space but before then, one must acknowledge it is a male-dominated field.

Does the university you attend for Software Engineering matter?

Well, in my experience, the name on your degree isn't as crucial as you might think. Rather, it's the opportunities that the university provides, especially in terms of co-op placements, which play a significant role. For instance, different universities have unique partnerships with industries. Waterloo is known for its connections with Silicon Valley tech companies, York has a strong relationship with IBM, and UofT interns often secure placements with banks in Toronto's financial district.

These connections can shape your early career experiences and provide valuable networking opportunities. However, it's crucial to remember that the success of your career depends on your skills, determination, and ability to adapt, regardless of the prestige of your university. Ultimately, your university can open doors, but it's up to you to step through them.

Did your post-secondary education assist you in your career as a Software Engineer?

Reflecting on my university education, it did not directly map to my current role as a software engineer but it instilled valuable skills in me. It prepared me to rapidly adapt to new languages and taught me the importance of resilience in the face of challenges. Skills that are rarely mastered through online tutorials or bootcamps.

What are some of your daily tasks?

On a daily basis, I juggle between web development tasks and teaching JavaScript fundamentals. In my free time, I ensure I dedicate time to exploring new languages and prepare for technical interviews, which in my view, are a mix of detailed problem-solving and holistic system design questions.

Would you recommend pursuing Software Engineering in 2023?

Looking ahead, I am optimistic about the prospects in software engineering. The field is witnessing tremendous growth, offering a wealth of opportunities. However, to those new to the field, my advice would be to identify a niche area of interest. With an industry as vast as tech, specialising is your key to standing out and establishing a successful career.

Matthew Tran is a Software Engineer, Full-Stack Web Developer and Entrepreneur. Matthew's LinkedIn