I recently read a blog post from, as is often the source of somewhat polarizing ideas in software engineering, and engineer on medium who argued that management was simply “human engineering”, after several years as both a software engineer and a manager, I can see some similarities, but certainly can’t agree. There’s so much more than just fine tuning processes and treating people and relationships than systems in management and I find this idea far too simplifying of this nuance.
Management, this post argued, is simply the fine-tuning and optimization of people and relationships, essentially treating people as components within a software system, pieces in a mechanical one, or electronics in an electrical one. Since this is essentially the same as what engineers do in these fields, designing and tweaking these components, management is just engineering with people.
But in my experience, and probably pretty much in everyone who has ever had a conversation with another human being ever, people are far more complex than components. Yes, there are complex systems and code bases, but they are far less likely to change their minds and motivations than people are. Managers learn and improve aspects of these interactions for sure, measuring what works and what doesn’t and making change to improve. Treating people as components is a sure recipe for failure as a manager.
I started managing in the first place because I wanted to increase my ability to improve the effectiveness of teams and to focus on coaching and developing people, providing the benefits I got from the coaching and development of my best managers when I was an individual developer. I wanted to provide a personal focus on each and every one of my team members to make sure they got the attention they needed and deserved for their own goals and aspirations. I’ve always attempted to make sure my team members don’t just have projects, but have opportunities to stretch and develop skills that match their own priorities and help them grow in their careers. Treating them as replaceable or interchangeable components would completely countermand this.
Good managers need to listen and collect feedback constantly. That feedback might be about others on the team, others outside the team, management itself, or even processes that aren’t working. As a developer, my code would sometimes give me signals it wasn’t working right, or as optimally as it could be, and it would be up to me to figure out how to help it get along with other code which had different priorities. Still, that was dramatically less complex and demanding that solving this problem between different people. Code isn’t looking for increased responsibilities and ways to prove itself. Good managers don’t just ask for this feedback, they make active time to collect it and build an environment in which it is shared comfortably and often.
Managers also need to learn to read situations and environments and adapt with change. Technology also shifts and adapts, and good engineers need to keep up with it, but management is far more than keeping up with new trends and tools. Managers need to take what they hear from team members and adapt plans and projects to suit it. When the team feels something isn’t working, the manager needs to hear this and change, whether it’s engineers on a project, the projects themselves, or communicate a vision of how to change and improve. This ability is far more an art and skill that is honed over time and experience than any documented process like engineering the situation would be.
Unfortunately, managers also have to deal with the difficult situation of underperforming employees at times too. While the first goal of any manager should be to coach and improve performance, sometimes it doesn’t work out. This is completely unlike working with underperforming code. Employees cannot, or at least should not just be ripped out or replaced like code or mechanical components can be. Instead, managers need to practice compassion, tact, and creativity in looking for ways to improve the situation, potentially by increasing motivation, finding better matched opportunities, or adjusting plans. It’s a far cry from designing improvements to poorly performing components of a system.
There are certainly aspects of management that mimic or build upon engineering practices. In some regards, management can be seen as improving processes, improving the efficacy of parts of a complex system, and fine-tuning with a focus on improving results. However, no amount of engineering experience can prepare one for the difficulty and art form that is managing people. There’s a reason engineers are trusted to work on complex systems, they are inherently more complex than these systems. Managers need to be able to deal with this increased complexity as well as the exponential complexity that occurs when interactions between people increase. Management is far more than engineering of people.