In R&D divisions in the software industry, non-genuine managers are managers who immerse themselves in development processes for more than ⅓ of their workweek. They are managers who conduct like hands-on software engineers, but with more authority and less accountability for their people. This leads to partially neglecting their management duties to improve the system/product.
It might sound cool, but this is a problem. And a common one, too, especially in 2023. The fast-changing, innovative, and competitive tech environment makes coding seem like the most important and rewarding activity. Managers who code a lot get praised for their technical skills, while managers who manage well get ignored or criticized for being too bureaucratic or detached.
Reasons why many managers conduct like hands-on software engineers (non-genuine managers):
They enjoy immersing themselves in development processes and find it hard to let go.
They feel an obligation to set a technical example for their team, and they wrongly believe that without it respect will not come.
They are pressured by their own managers to build/repair parts of the product or system.
They lack the training or support to be effective managers.
This problem hurts both managers and team members. Managers who code too much can’t develop management skills and grow the careers of their team members. They can’t lead, support, and guide their team members well. They can’t communicate well with stakeholders and other teams. They can’t plan and prioritize the team’s work, evaluate and improve the team’s processes, or align the team’s vision and goals with the organization’s vision and goals.
Typically, non-genuine managers don’t support or represent their team members properly. Some of those team members feel that:
Nobody cares about their interests, needs, and goals.
They don’t get enough feedback, recognition, or opportunities to grow their skills.
They work on boring or easy projects.
They are not part of a united and cooperative team.
These feelings can make team members frustrated and unmotivated. They can also make team members quit quietly, which is when they are only willing to do the minimum work necessary to keep their jobs. Quiet-quitting shows that team members are not engaged or loyal. It can also cause the team and the company to lose talent, knowledge, and productivity.
Having a Tech Lead and/or Principal Engineer in the team can help managers code less and manage more effectively. It can also help team members feel more supported, represented, and motivated. It can also improve the team’s technical quality, performance, and innovation.
The role of Principal Engineer aka Lead Engineer
Principal Engineers aka Lead Engineers are senior-plus engineers who lead the technical execution of projects/features/domains/products. They help managers code less by:
Helping with technical decisions. Managers can ask Principal Engineers for technical advice and save time.
Tutoring and training team members. Principal Engineers can help team members improve their skills and work independently.
Identifying and resolving technical risks. Principal Engineers can prevent and fix technical problems before they escalate.
Ideally, a Principal Engineer aka Lead Engineer is more hands-on than a Tech Lead.
The role of Tech Lead
In many cases, Tech Leads are the right hand of the managers, as they lead the technical direction of the entire team. They help managers code less by:
Helping with architectural decisions. Tech Leads can advise managers on how to design their team’s projects to avoid future problems.
Evaluating new technologies and tools. Tech Leads can help managers choose the best technologies and tools for their team’s needs and save them time and effort.
Mentoring and training the Principal Engineer and others. Tech Leads help Principal Engineers and others improve their technical skills and train other members effectively.
Ideally, a Tech Lead is more hands-on than a genuine manager (Team Leader / People Manager / General Manager), but less hands-on than a Principal Engineer. This role stands somewhere between the two.
But why do we really need them?
Having a Tech Lead and a Principal Engineer in a team can make a huge difference in the team’s performance and the manager’s effectiveness. But what exactly are the differences between these two roles, and how do they work together to support the manager and the team?
The main difference between a Tech Lead and a Principal Engineer is the scope of their responsibilities. A Principal Engineer is focused on the technical execution of a specific project or feature, while a Tech Lead is focused on the technical direction of the entire team or domain. A Principal Engineer works closely with the team members to ensure that they are following the best practices and standards, while a Tech Lead sets those practices and standards.
Another difference is the level of technical expertise. A Tech Lead is expected to have a solid understanding of the technologies and tools that are used in their entire team, while a Principal Engineer is expected to have a deep knowledge of the technologies and tools that are relevant to their domain/feature. A Principal Engineer can solve technical problems that arise in their project or feature, while a Tech Lead can solve technical problems that span across multiple projects or features.
So, that way, the roles of Tech Lead and Principal Engineer complement each other. And by having both in a team, managers can reduce the amount of time they spend coding and focus more on their management duties. Some of these duties include:
Planning and prioritizing the team’s work.
Communicating with stakeholders and other teams.
Hiring and retaining talent.
Developing and motivating team members.
Evaluating and improving team processes.
Resolving conflicts and issues.
Aligning the team’s vision and goals with the organization’s vision and goals.
These duties are essential for managers to be effective leaders and to ensure that their team is successful. By delegating some of the technical responsibilities to the Tech Lead and the Principal Engineer, managers can free up their time and energy to perform these duties better.
Having a Tech Lead and a Principal Engineer in a team is not only beneficial for managers, but also for team members. They can provide technical leadership, support, and guidance that can help team members grow their skills, deliver high-quality work, and achieve their goals. They can also create a culture of collaboration, innovation, and excellence that can inspire team members to perform at their best.
The proper balance
In my opinion, every medium/large development team should have all three roles (genuine manager, tech lead and principal engineer), and with a specific balance that enables them to really complement each other:
+----------------------+---------------------+-------------------+
| JOB TITLE | RANGE | SWEET SPOT |
| | min/max portion of | ideal portion of |
| | hands-on dev work | hands-on dev work |
+----------------------+---------------------+-------------------+
| • Team leader | Lower third | 20% |
| • People manager | x >= 0 && x < 1/3 | 1d per workweek |
| • General manager | | |
+----------------------+---------------------+-------------------+
| Tech lead | Middle third | 50% |
| | x >= 1/3 && x < 2/3 | 2.5d per workweek |
| | | (half a workweek) |
+----------------------+---------------------+-------------------+
| • Principal engineer | Upper third | 80% |
| • Lead engineer | x >= 2/3 && x < 1 | 4d per workweek |
| • Domain owner | | |
+----------------------+---------------------+-------------------+
Genuine managers (team leaders, people managers and general managers) should code less than ⅓ of their workweek. A good range is 10% to 30%, but the sweet spot is around 20% (1d per workweek).
Strangely enough, in many R&D divisions today, such managers immerse themselves in development processes for 40% to 70% of their workweek. Essentially, they serve as tech leads or principal engineers. This most likely hurt their team members, as mentioned above.
How to genuinely manage without Tech Lead or Principal Engineer
Sometimes, a team might not have enough manpower to assign the roles of Tech Lead or Principal Engineer. This could be due to various reasons, such as budget constraints, talent shortage, or high turnover. In such cases, the manager and the org need to take some steps to ensure that the team can still function well and that the manager can still be a genuine manager.
Here are some of the steps that the manager and the org can take:
Hire or train more engineers. The most obvious solution is to hire or train more engineers who can take on the roles of Tech Lead or Principal Engineer. This can help to fill the gap in the team’s technical leadership and to reduce the workload for the manager. However, this might not be feasible or realistic in some situations, such as when there is a hiring freeze, a skill mismatch, or a tight deadline.
Rotate the roles among team members. Another solution is to rotate the roles of Tech Lead or Principal Engineer among team members who have the potential or interest to take on these roles. This can help to distribute the technical responsibilities among team members and to give them opportunities to develop their skills and experience. However, this might also have some drawbacks, such as inconsistency, confusion, or conflict among team members.
Delegate some of the technical tasks to other teams or external partners. A third solution is to delegate some of the technical tasks that are not core or critical to the team’s work to other teams or external partners who have more expertise or resources. This can help to reduce the technical complexity and scope for the team and to free up some time for the manager. However, this might also involve some risks, such as loss of control, quality, or security over the delegated tasks.
Prioritize and simplify the technical work. A fourth solution is to prioritize and simplify the technical work that the team needs to do. This can help to focus on the most important and valuable tasks and to avoid unnecessary or redundant tasks. It can also help to make the technical work more manageable and understandable for the team and the manager. However, this might also require some trade-offs, such as compromising on some features, functionalities, or performance.
So, genuine managers should remember that they are not software engineers (anymore), but leaders. They should code less and manage more. They should:
Lead, support, and guide their team members.
Communicate well with stakeholders and other teams.
Plan and prioritize the team’s work.
Evaluate and improve the team’s processes.
Align the team’s vision and goals with the organization’s vision and goals.
By doing so, they can be genuine managers, i.e. can lead their team to success and grow their own career.