Skip to main content

Becoming a Software Engineer: A Practical Guide

A new book coauthored by Mohammad Moshirpour follows a summer internship project, filling the gap between academia and industry when it comes to real-world training for software engineers.

Mohammad Moshirpour
Mohammad Moshirpour

“It reads like a story,” says Mohammad Moshirpour, referring to The Ignite Project: A Journey in Scrum (Springer, 2023). He coauthored the new book with Niyousha Raeesinejad and Yousef Mehrdad Bibalan, two of his previous students from the University of Calgary. Now a Professor of Informatics at UC Irvine’s Donald Bren School of Information and Computer Sciences (ICS), Moshirpour explains that the book boosts software engineering education and training by focusing on the internship experience and Scrum software development framework. “Software engineering is a practical profession,” he stresses, “and software engineering education must follow suit!”

Written from the perspective of Raeesinejad, an undergraduate software engineering student, the book opens with the following:

“There is another project I want to discuss with you.”

I look up from my notes to my Surface screen where Mohammad’s video feed shows him sipping from a cup of coffee. In the meantime, I try to take advantage of this pause to digest the prospect of taking on another summer project.”

That summer project involves participating in — and documenting — a software internship facilitated by the Schulich School of Engineering. Student developers make up the Scrum team, Moshirpour acts as the stakeholder, a consulting tech company serves as the product owner, and a graduate student and industry expert take on the role of project leads. The book walks readers through the internship experience, offering insight into how to set the stage for real-world success.

Book cover of The Ignite ProjectWhat was the motivation behind writing this book?
Back when I was still at the University of Calgary, I created a program very much like the Master of Software Engineering program here at UCI. The program was focused on hands-on learning and the development of career-ready skills. So we were always investigating questions such as, “How well we are preparing our students for a career with longevity in tech, and what we can do better?”

I wanted to observe the results of our educational approach, and a very intriguing idea was to find a way to witness the first day or week of my students at work. What would I think of their performance, and what insights might those observations give me in adjusting our curriculum accordingly? Moreover, if I had a chance to chat with my students’ employers, what insights would I be able to share as to how to best support them?

In general, to evaluate our program, we would talk to companies who hired our students to collect data a few months after graduation. Then, an opportunity to conduct an extensive observation presented itself in the form of a large software project undertaken by my research group.

I was part of a Google-sponsored initiative to teach programming to high school students, called Google Ignite. We had this idea to host in-person workshops, where engineering students would teach programming to high school students. So we decided to create a platform for online programming. We started working with a local software company, and we recruited 14 interns — 11 from the professional master’s program, and three from the summer undergraduate honors program. We called it the Ignite Project.

We decided to record this experience as we thought it would be valuable to share with others, especially as told through the eyes of an undergraduate student/intern. The book is written from the perspective of Niyousha, yet as she goes into narrator mode, she summarizes valuable just-in-time lectures about the software process, Scrum concepts, development approaches, etc., and she describes meetings and lessons learned. We also include in the book reflections from other interns as well as from various mentors and collaborators, to offer different angles of this shared experience.

What insights into the Agile Scrum framework are shared?
This book can actually be used as a textbook for teaching Agile Scrum. The book takes a storytelling approach to teaching Scrum concepts, but with the perspective of having interns as part of the team and being mindful of their need for training and support.

We start from day one of the project. We introduce what Scrum is and cover all the basics, such as defining stakeholders, learning how to break requirements into user stories and tasks, effort estimation, etc. We go into the different components of Scrum, such as planning and review meetings, and we look at some of the different tools involved, including Jira, a project management tool for software engineering.

A key part of the Agile Scrum framework is the ability to tailor the process to the needs of the project and the nature of the team. What sets this book apart is looking at Scrum in the context of intern training and support. As such, the book tackles interesting discussions on how to execute Scrum in teams containing interns and how to best support them so that they can learn and contribute to the team. For example, we discuss our approach in trying to decide whether to have component teams — where team members focus on tasks related to one component of the project (i.e., backend tasks only) — or feature teams, where team members attempt all tasks. This discussion is explored from the perspective of interns, industry practitioners, and educators.

Who is the book’s target audience?
The book is meant for three types of audiences:

  • software engineering students, interns, and new graduates;
  • academics, educators, and educational institutions; and
  • experienced industry engineers, team leads, and engineering managers.

For students, The Ignite Project will serve as a roadmap, helping them grasp an understanding of their start in industry through a story about the internship experience. Students can take inventory of their current skill level and develop an understanding of the path ahead.

For educators and industry practitioners, the book provides practical insights and thought-provoking discussions on how to best prepare software engineering students for careers with longevity in tech. It covers how to effectively support students in their roles as interns, allowing them to contribute to their projects in meaningful ways.

What are the benefits of academia and industry collaborating to train students?
I strongly believe in student-centric pedagogical approaches that focus on fostering fundamental knowledge in combination with practical skills. Collaboration between academia and industry can facilitate innovative learning opportunities with outstanding results.

The training of the software engineering interns during our Ignite Project was a collaborative effort between academics, industry practitioners and students. The academic and industry advisors discussed fundamental and applied approaches to student training and worked to find agile solutions to maximize impact while learning from the feedback and progress of the students.

So the book exemplifies a success story?
Yes! By the end of the summer, we had created real value in our software engineering team. Our group of interns was well-trained and actively contributing to the project at a fairly high rate.

We suspect this type of effective value generation will be of great interest to the tech industry. The pedagogical approaches used to support software engineering interns as outlined in The Ignite Project, and the mentorship structure provided, can greatly enhance the work experience of software engineering interns and new graduates.

Shani Murray