We recently had the opportunity to speak with Majid Babaei, one of our new faculty lecturers in the Technology & Innovation domain with expertise in Software Testing/Debugging. Originally from Tehran, Iran, Majid completed his PhD in software engineering at Queen’s University. Before joining SCS, he held a post-doctoral research fellowship in software engineering at Concordia University.
Could you tell us what initially inspired your interest in computer and software engineering?
Everything started with a rather tragic, yet funny incident. I received my first PC at the age of 13 and the first thing I did was delete some of my father’s important program files. I knew what I had to do next: fix it before anyone found out! I searched for a solution and even carried the monitor around (because I thought everything was stored on it!). I noticed that there was something responsible for all the good and bad things that happen to a PC, and it was called software. I realized that this software consisted of files that could only be read by my computer. It was my first rudimentary understanding of what software was and how it worked. My neighbour Hassan and I started playing with everything on the computer, from opening a file to editing it (or even deleting it). It was my first experience with software engineering, something today we call software inspecting and re-engineering.
You held several research positions, including one here at McGill in Computer Science. What were some of the most interesting areas of research that you were involved in?
I have always been fascinated by working with techniques and tools that practitioners use to debug and test software systems. During my PhD research, I worked with a technique called Model-Driven Engineering (MDE) that allowed us to see a large and complex software system from a higher level of abstraction. In one of my projects, we evaluated the effectiveness and efficiency of the MDE approach in debugging and testing distributed systems. It can be very challenging especially if your software contains multiple components running on different machines.
To resolve this issue, we took a completely different approach. Rather than using MDE techniques as a side development tool for developers, we put them at the core. This approach enabled us to remove the need for timestamps in many cases while increasing the performance and effectiveness of debugging and testing.
Our paper was published at MODELS’22 and won the distinguished paper award. This year we were invited to present our work for the second year in a row at ICSE’23 in Melbourne, Australia.
You have studied and worked in several locations throughout the world including Iran, Germany, and Canada. Can you discuss the potential of technology in terms of bringing people closer together?
As Rutger Bregman mentioned in his wonderful book Humankind: A Hopeful History, ”for most of our history we didn’t collect things, but friendships. For prehistoric humans, meeting new people meant continuously learning new things, and only then could we grow smarter [than our Neanderthals ancestors].” Today, we are equipped with modern tools that help us build relationships beyond our immediate neighbourhood and far away from political borders.
I was born in Tehran, the capital of Iran, and eventually moved to Stuttgart, a city in Western Germany where I completed my master’s degree and worked as a software developer at Bosch Engineering Group (BEG). Despite a lot of cultural/historical/ideological differences, we used a common technical language that allowed us to remain productive while learning the values of the new society. Later, when I was doing my PhD in Canada, this understanding became even clearer to me. We, as individuals, have a natural tendency to associate with groups that share more values with us. With new technologies, especially social networks, we can build relationships beyond our immediate folks of family and friends. Of course, it comes with its own challenges that need to be addressed in a proper format, but the power of building such a large network is inevitable.
Today we have access to an unprecedented array of racial/political/gender-agnostic technologies that can help us build better relationships, communicate more effectively, and participate in projects internationally.
You have an active collaboration with tech companies, including some based in Toronto and Montreal. Why is industry collaboration so important and how can it be beneficial for our learners?
The real-world experience we hope to get from collaborating with an industry is not helpful if we do not develop a growth mindset. This enables us to get the most out of the industrial collaboration, a necessity if we hope to build:
- Critical Thinking: It can be tempting to follow along with whatever the project lead decides, but if we learn to speak up and be more vocal in the group sessions, we will gradually learn how to play a critical role to shed light on some aspects we may have never noticed before.
- Problem-Solving: every day to have a new technical challenge (especially in startups) to solve what no one expects us to solve and as a junior developer, to immediately arrive at the best solution.
- Time Management: spending too much time on a small task is not something profitable for businesses. There are a few techniques, such as the Eisenhower matrix that are commonly used for time management in agile-based projects. The better we can manage our time, the more we can do.
What does the future of technology and innovation look like to you and how can you help prepare your students to be future-ready?
Technology and innovation, especially in software engineering, is moving towards higher automation and perhaps full autonomy, in the not-so-distant future. As David Epstein featured in his book Range: Why Generalists Triumph in a Specialized World: “The more constrained and repetitive a challenge, the more likely it will be automated.” Future leading tech industries will demand engineers who can take conceptual knowledge from one domain and apply it in an entirely new domain. Thus, developing our students’ conceptual and inductive reasoning skills while teaching concepts at SCS is becoming more and more important for us. As a concrete step towards this objective, we have already started re-designing undergrad programs to ensure we satisfy requirements at a course-level as well as program-level.
What do you hope to accomplish as a Faculty Lecturer at the McGill School of Continuing Studies?
As I joined SCS and became familiar with its audience and culture, I committed myself to work in three directions in teaching and research helping us (me and my students) build awareness of emerging technologies, humanity, and sustainability. In particular, we hope to make positive and significant contributions in:
- Levering Business Process Perspectives in Designing IoT Applications: We extend business process modeling languages such as BPMN to facilitate the development of IoT applications.
- Human-AI teamwork: we will work on methods that consider unique human characteristics to address challenges in building productive (software development) teams including human and AI agents.
- Sustainability in Software Engineering: we aim to design, build, deploy, and maintain sustainable software applications.
- Diversity, Equity, and Inclusion (DE&I) in Software Engineering: we aim to propose methods that help individuals and businesses apply (DE&I) principles and best practices in their software development life cycle.