This month, we explore software engineering, a profession that is in high demand among Québec companies. We spoke with Manuel Darveau, director of software engineering and Renée Périgny, director of human resources for 8D Technologies about the position of software engineer.
Jobboom : What does being a software engineer involve?
Manuel Darveau : In a nutshell, software engineers respond to the needs of users through the software solutions they create.
We try to build and deliver solutions to real-world problems. For example, software can power autonomous vehicles, a fleet of shareable bicycles, a new video game, or any other number of applications. Software can provide solutions to an astounding number of problems.
JB: What fundamental skills are needed to become a software engineer?
MD: In my opinion, the most important quality needed to become a software engineer is curiosity – and in order to be curious, you need to be passionate. You need to enjoy discovering new things and exploring new technologies. Software development is an industry that is always evolving and every year, important new technologies are developed. So it’s not a profession where you can learn everything in one shot and then use those skills for the rest of your career. Software developers need to always be learning, always renewing their skill sets. In order to maintain a high level of curiosity throughout one’s career, you have to be passionate; you must love what you do.
Secondly, despite the fact that software engineers work with computers, there’s an enormous amount of human interaction involved with the job. It’s essential to be able to work as part of a team, to know how to listen and to understand the perspectives of the people you’re working with. It’s also important to be able to understand the needs of the client. The job demands strong social skills, diplomacy and communication skills.
JB: What are some personality traits that could come in handy as a software developer?
MD: Beyond curiosity and strong communication skills, software engineers need to have one particular personality trait: the desire to overcome challenge and succeed no matter how difficult the problem may be. They need to have perseverance. When we develop a piece of software, there’s no magic formula that dictates how the solution will be achieved. Developers need to find the path; we need to have imagination and creativity because we’re building something that has never been created before. Even though it’s a virtual construct, software development still involves building something.
JB: What does a typical day as a software engineer look like?
MD: There’s really no typical day in this line of work. For example, this morning I went to visit a supplier and we discussed a possible partnership on a project. This afternoon I helped put together a conference about bike sharing that was organized in Montreal and then did an interview with Jobboom. Once I’m finished here I’ll most likely be helping developers work out technical problems. So the daily tasks vary greatly.
The days of software development directors, just like those of engineers, are never the same: we meet with clients, discuss with them to understand their needs, and then meet with product teams to decide how we’re going to meet those needs, and then organize and prioritize our work for the day. Sometimes we will be working hands on with code to solve a particularly difficult problem, or to root out bugs. Other times we have to develop something entirely new.
JB: What kind of projects do software engineers work on at 8D Technologies?
MD: Our core products are solutions to manage parking and bike sharing, including the Bixi system we developed for the city of Montreal. For self-serve bike sharing systems we program the bikes, the electronic cards and the application that powers the service terminal, but we also create the software for the back office, the web site and the mobile app. The projects and products our engineering teams work on are extremely varied and encompass both the website and the software, which interacts with the firmware.
JB: What kinds of opportunities for advancement are available to software engineers?
MD: At 8D Technologies / Motivate, there are two paths that an engineer can follow.
One person could join the company as an intern, and then become a junior software engineer and eventually a lead engineer. After these stages, they could become a technical project lead (whereby they would lead teams in their technical work to achieve the best possible software design), or become a manager and manage teams to ensure they work in a coherent manner during projects. This kind of management role typically leads to other management roles or to a directorship within the organization.
In my case, I started as a developer. I worked on many different areas of the back-end code of our software, and that experience led me to become a team lead. Now I’m the director of software engineering for 8D.
JB: What other careers could a software engineer easily transition to, if desired?
MD: There are several different paths a software engineer could choose. There are those who will work with code their whole working lives and become experts in one particular field; others will transfer their skills to other areas.
Engineers who have strong communication skills could choose to work with clients as a product or project manager. A product manager identifies the current needs of the market and then directs the software development team to revamp the company’s products to reflect those needs. Project managers organize project goals and timelines with clients, and then coordinate the workloads and schedules of the software engineers accordingly.
It’s also possible for a software engineer to become a manager, a Quality Assurance specialist, or an analyst. Analysts, as the title implies, analyse needs in order to inform engineering teams how to proceed with software development.
JB: What education should an aspiring software engineer pursue?
MD: Those who have the title of “Software Engineer” have studied at a university that offers an accreditation in engineering. A bachelor’s of engineering provides a good base for a working methodology in this field.
That being said, many software developers do not have a Bachelor’s in engineering. Programming is a skill set that can be learned autonomously, especially since there are so many open source resources to learn from. It’s easy to pursue if a person is motivated enough; there are several people at 8D who are self-taught developers. Others don’t have a Bachelor’s in engineering but have technical training or a Bachelor’s in another area of computing.
Regardless of what an employee’s training is, it represents only the very beginning of their career. Learning will continue ‘in the field’, either at work or at home on personal projects. Software developers need to continually be refreshing our knowledge and expanding our skills. What a developer learns in school is important, but will also rapidly become obsolete in the years that follow their education. People who lack patience or have no interest in learning new things on their own will have a lot of trouble in this job.
JB: Do you have any advice for people who want to enter the field?
MD: I would strongly encourage those who have a passion for this work to charge ahead with their desire. But aspiring developers really do have to be passionate, because the job involves a lot of homework, self-improvement, and in-office work. Software engineers don’t take up this work because they will get rich – they do it because they love it. If they didn’t, they wouldn’t be any good at it.
Programming may seem mysterious, but it’s easy to learn if you have a good sense of login and a desire to learn. Once you get started, never stop experimenting, working and trying new things!
JB: Do you have a work-related story to tell us?
MD: I’ve been working on the Bixi bike-sharing system for the city of Montreal since the very beginning of the project, but there’s one event that has stuck with me.
It happened when we were replacing the existing bike-sharing system of a competitor in New York City. We were running into problems. We were collaborating with New York-based firm Motivate and it was a complicated project because, among other things, we had to transfer all of their existing user information to a new system with a completely-new back end.
Several 8D employees were involved in this project, and were determined to succeed in pulling off this complex task. So on the day of the implementation, we all got together and started a countdown, then ‘turned the key’ to activate the new system. Everything worked perfectly!
We were prepared for the worst, expecting to have to fix a number of bugs, but in the end there were no problems at all. Everything just worked. That’s when we realized that it was the ongoing collaboration between 8D and Motivate teams that led to this brand-new system working flawlessly. This climactic moment also marked the beginning of a more expansive collaboration with Motivate that, within a few months, led to the merger of the two companies.
The Recruiter’s Perspective
JB: What are some of the key competencies you look for on a software engineer’s CV?
Renée Périgny : The things that grab our attention when we’re scanning CVs from software engineers are mentions of different programming languages that the person is comfortable with, past professional experience, and concrete examples of the candidate’s work.
In terms of examples of work, we want to see in what context the projects were achieved: did the candidate work as part of a team? If so, how big was the team? Did the candidate play a management role in the team, and what programming languages did they use for the project? What value did the candidate add to the project and what were the results?
JB: Do you require candidates to submit a cover letter in addition to their CV when they apply for a job?
RP : Yes. We think the cover letter is an important element of the selection process. A cover letter allows us to see how well the candidate can write and if they can explain themselves clearly. It also allows us to find out how the candidate structures their thoughts, how they reflect on things, what role they see themselves playing in the organization, and how they explain the contribution they see themselves making should they be chosen for the position.
JB: How much importance do you place on a portfolio?
RP : A candidate’s portfolio is definitely useful for evaluating if they would be a good fit for a position. For example, when our hardware team wants to hire a technician, they enjoy having access to a candidate’s portfolio so they can see the person’s tangible achievements in the form of a finished project, including how it was planned out and undertaken. From a recruiter’s perspective, we can talk about a candidate’s previous projects during the interview, which makes the conversation more interesting and illuminates other qualities about the candidate.
JB: What key elements about a candidate will hold your attention outside of the interview?
RP: Like Manuel mentioned, we’re really looking for people who are curious and passionate about software. These are qualities that you can sense a candidate possesses during the interview.
More than anything, when a candidate comes in for an interview, I really appreciate it if they’ve done their homework. To prove their interest in the position, they need to show that they’ve learned about the company and the position. At the very least a candidate should know what the company does and be able to talk about it during the interview. A candidate that has done their research and has an understanding of what we do already has a big advantage over less-informed competitors!
If they’ve done their homework, they should have a more-or-less in-depth understanding of our industry, what we’ve achieved, and our needs and expectations in relation to the available position. This will allow them to demonstrate the value they can bring to the organization.
Candidates for software engineering positions should also be able to express themselves clearly and concisely. If they can clearly explain their experiences and skills during the interview, then we know they will be able to communicate well as part of team.
These qualities can also be evaluated when the candidate presents us with their accomplishments. We like candidates who can speak in concrete terms about their projects and achievements, whether they were done at work or during training. The way that a candidate presents these achievements to us shows us more of their personality.
It’s also important that we get a sense of humility from the candidate, particularly that they understand that the best solutions are the result of collaboration, and that they know that they must keep learning on an individual level for the rest of their career.
Once we’ve identified the candidates with the skills and experience that the position requires, the final piece of the puzzle is finding the one person who would be the best fit for the team they’ll be joining. This may seem like a subjective decision but it’s very important to bring together personalities who will complement each other, in order to ensure a good working atmosphere.