Principles of Engineering Management
Engineering Management role is created by engineers for engineers' need in software technology companies. In this article we will go step by step to explore what this role means, and how to be a good engineering manager by leading by example, hiring, managing and growing exceptional talents, and how to let the team shine in their professional growth.
A man standing in front of group of men — Unsplash
To explain "what are the fundamental principles of engineering management", let's divide them into three parts as follows:
- Created by engineers for the engineers
- Hire, manage and grow exceptional talents
- Let the team shine
1. Created by engineers for the engineers
Let's learn the story of engineer/engineering manager pendulum:
Engineering Manager vs. Product Manager
- Your are not a product manager but you are always in sync with them
- You are a solution owner where product manager is a problem owner
- You are not an agile coach and you might not even need it
Engineering Manager vs. Engineers
- You need to know how to develop software solution but you are not an everyday developer
- You are a people manager: by weekly (whatever process is) 1:1s, being supportive, caring towards your team, and keeping up with their personal and professional growth
- You are not necessarily smarter than your engineers
Engineering Manager in Action
- You are a technology historian
- You manage the processes not the people
- You are technically excellent in your field
- You drive the decision making process
- You are a quality guardian
- You are a competence lead
- You suggest who does what based on their competence
- You suggest who does what but don't set the backlog priorities
2. Hire and grow exceptional talents
- First interview is the first day of an employee in your company -- which might continue or not
- Talented engineers join companies with structured interviewing process
- Have a phone screening and don't waste your engineers' time
- There is no Backend, Frontend, DevOps, SRE, Mobile developer. Everyone is a Software Engineer who can solve engineering problems
- Every Software Engineer must know how to code so you need Coding Interview
- Every Software Engineer must be able to architect so you need System Design Interview
- Every Software Engineer must have CS domain knowledge so you need Technical Interview
- Every Software Engineer must fit in your company culture so you need Culture Fit Interview
- You manage the hiring process where HR drives it and your team provides feedback
- Your current team is more important than a candidate that someone from your team doesn't agree with
- A structured and effective hiring process is essential to keep your team competent
3. Let the team shine
Let your team:
-
Start small, learn fast
-
Make it work, then make it beautiful, then if you really, really have to make it fast
-
Discuss and decide their Ways of Working
-
Focus and stay distraction-free by having a Goalie
-
Take credit for what they have done
-
Be new joiners' buddy and onboard them
-
Rotate on roles and tasks to keep motivated
-
Innovate by running hack-days but not on the production
-
Pay the tech debts by running system-ownership days
-
Grow each other because the speed of your team is equal to speed of your slower engineer
-
Be inclusive to have different perspectives and viewpoints
-
Stay informed with all-hands to share a company common value
-
Work in a micromanagement-free environment to keep them innovative
-
Be microaggression-free to retain your human side of the team
To conclude, I would love to quote two great minds of the technology sphere.
Steve Jobs
“They're the great individual contributors who never, ever want to be a manager, but decide they want to be a manager, because no one else is going to be able to do as good a job as them.”
Elon Musk
“I strongly believe that all managers in a technical area must be technically excellent. Managers in software must write great software or it's like being a cavalry captain who can't ride a horse!”