Engineering is the department in the organization that actually builds the product that the enterprise sells. In the world of the knowledge worker, employees don’t stand near the assembly line tightening screws. The modern knowledge worker is a software developer who creates products using code. The role of the engineering manager, likewise, doesn’t resemble the worker of an overseer or foreman in a factory. This post is about what an engineering manager does and what exactly their role is in the department in particular and in the enterprise in general.
The work of an overseer or a foreman in the assembly line world was mainly to be a yardstick of quality. They made sure that the product’s quality met the required standards. In addition, they had to make sure that the work was done in order. This included things like making sure the machines were correctly set up, employees were tightening the screws in the places they should be, etc. Essentially, this, with the addition of soft skills (hiring, firing, approving vacation days, mediating disputes, and so on), was the job of any manager in the industrial world.
The Duties of the Modern Engineering Manager
Hiring new engineers can be one of the most time-consuming and important parts of the engineering manager’s job. Not all managers participate in the hiring process, but many of them do.
The Hiring Process and the Manager’s Involvement
The hiring process itself comprises multiple parts. These can include drafting the job description, doing initial phone screening, evaluating home assignments, conducting technical interviews, etc. The engineering manager will sometimes do both: design the process and participate in all stages. At other times, they might do the design part only: phrase the job description correctly in cooperation with the HR department, devise a screening process, and write the tests. Or they may do the actual screening only. Or any combination of the above (design some of the stages and participate in some of them, but not all).
Talent Pool Shortage
Unfortunately, our day and age is seeing the extreme shortage of development talent. This means engineering managers may have to take on an additional role. If they participate in the screening process, the engineering manager should also act in a bit of a sales role. Essentially, they should be selling the company and the opportunity to the candidates. In fact, some managers do the initial contact with candidates instead of the usual scenario of an HR person making the approach. Managers do this to be able to speak with the candidate in a more familiar language to them—in terms of tech stack, development methodology, etc.
This part was unheard of before the world of the information society. As the software development world is rapidly changing, we see new programming paradigms crop up. First there was procedural, then object oriented, and recently functional programming. And then there are novel programming languages: Go, Node.js, and Rust. We even have new methodologies of software development: agile, scrum, and extreme programming.
Those frequent and rapid changes make it necessary to invest in the professional growth and development of software developers on the manager’s team to make sure that they’re ready to face the challenges of today and tomorrow. As a manager, they should devise a professional growth plan for each of the developers in their team/department and do a follow-up on the process. Failing to do so will result in a decrease in productivity of the team/department in the medium and long run.
Personal vs. Team Development
Depending on the level of management an engineering manager finds themselves in, they may be taking on different levels of responsibility. As mentioned above, many engineering managers work with developers to make sure they’re individually up to date on new processes, software, etc. A group manager, on the other hand, will sometimes look at a bit more macro level. They’ll focus on the cumulative professional development of the teams they manage, rather than checking this on an individual level.
In day-to-day management, the engineering manager should make sure that the job is done properly at the required quality and that the code is delivered on time and on schedule. An engineering manager should do code reviews, conduct daily meetings to get status updates, implement processes that enforce code quality (CI/CD with static code analysis, for example), and much more, just to stay on top of what’s going on. This is regardless of the way they organize the development process: waterfall, agile, scrum, or kanban. A group manager or VP of R&D will be concerned more with the progress the department is making: meeting deadlines and ensuring the software quality via overall KPIs.
A Bit More About Development Methodology
The last point is something that the manager should do as well: decide how to ship the code and how the team/department operates. Kanban or waterfall? Short sprints or long sprints? Choosing a development methodology is more than choosing a buzzword. The development method affects the day-to-day operations. For instance, the manager should report to management on progress in an agile approach every two weeks versus once in several months in a waterfall model.
Another example is that the talent you hire depends, in a way, on your approach. You’ll hire different people for doing agile development versus waterfall. For instance, for very methodological and structured people, an agile approach doesn’t fit as well as waterfall might. Likewise, for people who like to deliver features fast, a structured, long-cycled waterfall approach will be less enjoyable.
Performance reviews are the time of the year when a manager and their subordinates meet one-on-one. Contrary to some other one-on-one meetings, this meeting is a recurring annual (at least) meeting. It has a clear agenda of providing feedback to the engineer on their work—what was done well and areas to improve. Likewise, the employee can give feedback about their work: what difficulty they face and what can be done to help them. Last but not least on the agenda is defining goals for the year to come and aligning expectations. Usually, the manager will do a follow-up on this meeting during the year to make sure that all the checkboxes are ticked in the “areas to improve” section.
Hands-On Coding and Management
As the manager’s seniority rises, the less time they can devote to being hands-on. They may have less time for writing code and staying up to date with the latest engineering trends. The manager should find the proper balance between staying technologically on top of things and taking care of the management aspect as described above. In addition, this depends on the developers who work in the team/department. If these developers are senior enough, the manager can delegate tasks confidently and focus on management. If they’re less experienced, the manager has to be “closer” to the code.
The engineering manager’s role has changed considerably during the transition from the industrial to the information age. Not only do they engineer virtual products (software) instead of physical ones, but they also manage different types of people. Instead of managing general-capability blue-collar employees, they have to manage software professionals. Instead of simple overseeing, they need to be with their hands constantly on the pulse. The main responsibilities of the engineering managers today are many. They hire talent, develop the talent professionally, choose the development methodology, and manage the day-to-day operations accordingly. Lastly, the role includes doing performance reviews and making technical decisions.