Engineering Lead Handbook
This handbook aims to guide software developers on the engineering leadership path by providing detailed insights on:
- What the role is really about.
- In what ways it differs from an individual contributor on the Technical path.
- The expectations from management and from the squads that the Engineering Lead oversees.
Core Principles
A key part in better understanding the Engineering Leadership’s role is to have a good grasp of the following core principles.
Servant Leadership
It is not a coincidence that the role is named Engineering Lead (EL) and not Engineering Manager. The title “Manager” puts the focus on having a specific role in a company, whereas “Lead” puts the focus on the actual leadership skill. Leadership means being able to guide and influence others, not bossing people around.
The concept of servant leadership is at the core of how the team envisions leadership at Nimble. That is why the squads are structured with servant leadership in mind.
First, the squads have a flat structure in which no member is hierarchically above another member. Second, the squads are by nature cross-functional, and as a result, leadership is shared between multiple individuals, namely the Team Lead, the Engineering Lead, and the Product Manager. Each of these leaders has an area of focus and a set of responsibilities. Therefore collaboration is required between all members to deliver a project.
Hands-on Role
“Each week that passes where you don’t share the joy, despair, and discovery of software development is a week when you slowly forget what it means to be a software developer. Over time it means you’ll have a harder time talking to engineers because you’ll forget how they think (…)” (source)
The Engineering Lead remains a 100% software engineering role with some management responsibilities. In practice, it means that while the role comes with reduced development activities, it is still an active “coding” role.
While many managers stop coding, the team firmly believes that an Engineering Lead must keep their coding hat on for the following reasons:
- To assess technical bottlenecks and process problems, Engineering Leads must keep their technical skills up-to-date by writing code themselves.
- To advise the squads on the shortest and most efficient path through the systems to implement features, Engineering Leads must understand all the software pieces. The better they know code, the more efficient implementation paths they can suggest.
- To lead with influence instead of authority, Engineering Leads need to be recognized for their technical expertise.
Management & Mentoring
An Engineering Lead is assigned 6-9 developers as reports. It means that these developers report to the Engineering Lead for their individual performance and growth path.
Engineering Leads and their direct reports are not required to have the same area of expertise. An Engineering Lead expert in Android development can manage iOS or Web developers.
Even though software developers work in different areas, the same management and mentoring apply to all software developers. Software developers usually face the same challenges thus the same guidance is applicable. Engineering must think of themselves as leaders of software teams, regardless of the technology used.
Responsibilities
Engineering Leads have to combine the responsibilities of a Developer (omitted below for brevity), a Team Lead (if they are leading a squad), and finally the following additional responsibilities (tagged with → a type to differentiate the specific area of responsibilities):
- Software delivery accountability → execution
- Provide insights and reports to the CTO → management
- Nurture and assess software developers → management
- Participate in the recruitment process → execution
- Facilitate and ensure that developers follow the company engineering processes → management
Software Delivery Accountability
An Engineering Lead (EL) is assigned to client project squads ranging from one (minimum) to three (maximum) in their area of expertise (Android, iOS, or Web). For example, an EL with Web expertise would be assigned to and vouch for the deliveries of one to three Web applications. On the other hand, an EL with iOS or Android expertise would take care of one to three mobile applications.
Code Reviews and Development
The minimum set of development responsibilities is to do code reviews and attend to technical discussions on all assigned projects. Code review helps to reinforce the quality of the codebase, while taking part in technical discussions helps to ensure that the EL has enough domain and project knowledge to participate meaningfully in a project without necessarily requiring to perform active development.
Besides, an EL can fully participate in the development process of one project when assigned as they work side-by-side in the squad, i.e., working on development tasks and committing code. Furthermore, an EL can decide their priority and type of tasks within the squad (this relates to self-management).
While code review responsibilities must be fulfilled on all the assigned projects (two to three at most), development work is limited to a single project. Doing development on all projects would entail not only an immense workload but also significant context switches incompatible with the remaining responsibilities.
Collaboration with Product Managers
In addition, Engineering Leads (ELs) must assist the Product Managers (PMs) in most of the technical meetings with the stakeholders. The presence of Team Leads in such meetings is optional.
While the PMs take the lead in the meeting, the ELs can provide insightful technical details when needed.
At the end of meetings, the minutes would contain both business requirements from the PM, and the technical implementation details from the EL that enables the development team to understand the features thoroughly. This forms a strong link between the Engineering team and the Product team, where both can participate in shaping the project efficiently.
At Nimble, Product Managers are all technical. They are well-versed in software development (although not at an engineer’s level). They can take part in technical discussions and break down technical requirements for the Engineers. However, Engineering Leads must provide support when a technical challenge is beyond the Product Manager’s capabilities. For example, when it comes to detailed implementation plans or software architecture decisions.
Collaboration with Team Leads
Accountability means the EL is held accountable for the technical implementation and delivery of all the assigned projects at the required quality. The EL is thus the point of contact for the management (CTO and CPO) regarding the assigned projects.
Accountability does not mean decision-making. When it comes to having the final say, the Team Lead of the squad remains the decision-maker.
When the Team Leads are Senior Software Developers, Technical Leads, or Principal Software Engineers, they often have the technical abilities to make adequate decisions for the projects independently. In the advent of a Team Lead who is new to the position, the EL must spend more time on coaching and ensure such decisions can be made gracefully.
Eventually, the ELs must use their technical expertise and management skills to get the team to go in the right direction. They have to use their influence, debate, and persuasion skills instead of forced authority to impose a decision.
While it might seem counter-intuitive to have someone accountable but not calling the shots, the reality is that forcing technical decisions would create conflicts in the development team. The squads must continue to work collaboratively and have group ownership. Thus, an EL must work in collaboration with the Team Lead and the squad as a whole to achieve the best possible outcome.
Rapport Building with the Client Engineering Leadership
While the PM is purposefully the main point of contact between the squads and the client stakeholder(s), ELs are encouraged to engage in conversations punctually and solicit feedback from the engineering leadership on the client-side. The latter usually consists of either Chief Technical Officer (CTO), an Engineering Lead/Manager, or a Team Lead overseeing the project. Thanks to their skills, Engineering Leads are best placed on building such rapport so that the PM can focus on the product and the Team Lead can focus on the delivery of the sprint’s goals.
The purpose is two-fold:
- Building a relationship with the client team that goes beyond executing the current work. Nimble aims to partner successfully with its clients so that they succeed in the long term. Therefore, as the project progresses, different and future needs can emerge that Nimble can support the client with.
- Getting insights on how the squads are performing in delivering what the client needs from their viewpoint. While Git analytics provides robust and proven insights, the latter do not replace human-centered feedback. Engineering Leads should strive at sourcing all the feedback they can to ensure the project’s success.
No specific rituals or schedule is enforced as each project and client differ. However, as a rule of thumb, having check-ins 1) on Slack or by email work best and 2) every 2-3 sprints provide enough time for the engineering client stakeholder(s) to reflect on while not generating a burden to them. At no point should this effort feel forced or impractical.
Insights and Reports to the CTO
A constant line of communication must be maintained between the CTO and Engineering Leads with the following rituals:
-
Bi-weekly Retrospective
Limited to 60 minutes, the purpose is to have bi-weekly retrospectives of successes and blockers across all projects and for all reports.
For projects, the bi-weekly schedule is necessary as not all projects start at the same time or have the same sprint duration. As reports’ one-on-ones can occur at different schedules, having a bi-weekly schedule also allows reducing the time to report issues to the CTO.
-
Bi-monthly Planning Session
To guarantee coordination between all engineering areas, this meeting is used to review and define initiatives for the next period of 8 weeks.
These sessions come in addition to the monthly one-on-one dedicated to the individual growth of the Engineering Lead.
Nurture and Assess Developers
An Engineering Lead is expected to:
-
Instigate curiosity and continuous learning in the area they are experts in.
As an expert in an area, the Engineering Lead supports Chapter Leads in sharing technical information among team members either during retrospectives or workshops, updates the required technical skills for learning tracks on Nimble University, and drives the technical direction of a Chapter.
-
Execute regular One-on-Ones, Peers Feedback, and Skill Appraisal with their assigned engineering team members as per the following schedule:
- Monthly for One-on-Ones.
- Every few months to not less than twice a year after each squad rotation for Peers Feedback.
- Bi-yearly (in January and January) for Skill Appraisals.
Whether it is a One-on-One, Peers Feedback, or a Skill Appraisal, the Engineering Lead must define objectives or next steps for their assigned developers to ensure they can level up and constantly progress.
In addition, an Engineering Lead must report performance issues and level up recommendations back to the CTO based on their assessments in their bi-weekly retrospectives.
Participate in the Recruitment Process
As an Engineering Lead, screening and interviewing applicants to join the team are weekly activities to perform in addition to development activities. Screening includes resume and application form processing but also reviewing the code challenges submitted by applicants.
The activities are coordinated by the Talent Team. The actual workload can vary greatly depending on the number of applicants. But an Engineering Lead is expected to process applicants at the earliest to provide a good applicant experience.
Engineering Process Ambassador
At a macro-level, an Engineering Lead is an ambassador and enforcer of the team development processes. In a large team, Engineering Leadership is meant to ensure the team processes are maintained across the board from development to security.
At the crossroads of a SCRUM master, an EL ensures that Agile rituals are held and deliver on their goals.
As a participant in retrospectives, an EL can guide Chapter Leads to lead each session. In addition, an Engineering Lead can also make sure that developers provide helpful information in daily standup.
A Typical Week
With a seemingly long list of responsibilities, it might look hard to visualize what an Engineering Lead would do on a weekly basis. So here is what it would typically look like for an Engineering Lead who is assigned in 2 projects, involved in active development for one of them, and manages 4 reports:
-
Monday:
- Participate in the internal Sprint Planning along with the squads for the 2 projects he/she is assigned to.
- Perform code review in all assigned projects and optionally do (in 0.5 days):
- Development on secondary tasks, bug fixes or,
- Work on internal engineering initiative.
-
Tuesday:
- Screen and interview candidates (maximum 2 interview meetings per day).
- Perform a one-on-one with the assigned team members (monthly). Prior to the event, the EL must prepare keynotes for the meeting.
- Attend the one-on-one meeting with the CTO (monthly).
- Perform code review in all assigned projects and optionally do (in 0.25 days):
- Development on secondary tasks or bug fixes or,
- Work on internal engineering initiative.
-
Wednesday:
- Participate in retrospectives in corresponding Chapter (bi-weekly).
- Perform code review in all assigned projects and optionally do (in 0.5 days):
- Development on secondary tasks, bug fixes or,
- Work on internal engineering initiative or,
- Prepare the reports, status updates for upcoming monthly/bi-weekly meetings.
-
Thursday:
- Screen and interview candidates (maximum 2 interview meetings per day).
- Perform a one-on-one with the assigned team members (monthly). Prior to the event, the EL must prepare keynotes for the meeting.
- Write the report for the CTO and attend the EL Retrospective meeting (bi-weekly).
- Participate in the Engineering Lead retrospective (bi-monthly).
- Perform code review in all assigned projects and optionally do (in 0.25 days):
- Development on secondary tasks or bug fixes or,
- Work on internal engineering initiative.
-
Friday:
- Participate in sprint planning/review with the Client along with the PM.
- Perform code review in all assigned projects and optionally do (in 0.5 days):
- Development on secondary tasks or bug fixes or,
- Work on an internal engineering initiative or,
- Participate in team events like Nimble Talkfest, Nimble Code War, etc.
It is a simulated scenario. Therefore, the days might not match identically with the actual days.
In addition, an Engineering Lead could take part in additional engineering initiatives to deliver the engineering roadmap and to remain hands-on, perform technical writing for Compass and the blog.
Performance
Metrics
When officiating in a role, beyond knowing the responsibilities, one must also know the key metrics to assess how well they fulfill their duties.
Impediment-free Development
An Engineering Lead must aim to be the invisible hand in the squad, i.e., the unseen force that moves the self-managed squads toward the right implementation paths. Mapping the unknowns, enforcing best practices in tackling them, and ensuring they are resolved swiftly are the hallmarks of an efficient Engineering Lead.
Good performance in that aspect means:
- The fewer issues discovered after the sprint has started, the better. Indeed, the Engineering Lead must identify any potential blockers at the earliest, ideally before they occur. That is why they must work closely with the Product Manager to review future sprints’ technical requirements and continuously monitor the delivery, quality, and throughput metrics.
- The higher the squad’s velocity, the better. Indeed, the fewer impediments in the development, the more story points the squad can deliver, thus maximizing the Engineering Lead’s ability to ensure the client’s goals are achieved.
Innovative and Efficient Processes
While coordination in a team requires processes, the latter must always encourage progress. Like desire paths, a team would work around inefficient or non-existent processes, i.e., the team would not go where expected. Therefore, an Engineering Lead must continuously ensure they pave the roads leading to the best outcomes, i.e., they define the processes that enable the team to achieve its best work.
Good performance in that aspect means:
- The more up-to-date the development processes, the better. Indeed, software development is constantly evolving. Therefore, the engineering team must continuously reassess and rethink how it performs work to continue performing at its peak.
- The more consistent and productive the engineering team is, the better. Indeed, when a team knows what and how to do it, they do not wait for others to make things happen. Each team member takes ownership of their work, whether on client or internal projects, and contributes regularly and significantly.
Fulfilled and Self-Driven Reports
Give a man a fish, and you feed him for a day. Teach him how to fish, and you feed him for a lifetime.
An Engineering Lead is the engineering team’s and, even more broadly, the company’s main point of contact for each of their assigned developers. As a result, they significantly impact their reports’ journey. They must develop a mutually beneficial relationship to ensure their designated team members achieve the best of their work and grow as professionals and individuals. Good performance in that aspect means:
- The steadier the individual growth of their report, the better. Indeed, an Engineering Lead must ensure that their reports continuously work toward growing their skills and leveling up on the Developer Track. While every team member differs in character, personality, and aspirations, hence will grow at a different pace, an Engineering Lead must adapt to the best of their abilities to ensure their reports stay committed and consistent for their betterment.
- The more independent their reports can define their growth path, the better. Indeed, Engineering Leads must continuously work towards equipping their reports to the point where they — Engineering Leads — would no longer be needed. By providing them with the proper mental models to approach any situation, their reports can independently make better decisions.
Cohesive and Synergetic Team
Since an Engineering Lead screens and assesses applicants in the recruitment processes, they significantly impact how the team composition changes and evolves. They must ensure that the new members have the required skill sets and are the right fit for the engineering team and, more broadly, the company. As the company evolves, an Engineering Lead must also ensure they adapt their assessment to bring onboard how the team needs most.
Good performance in that aspect means:
- The fewer false positives in the recruitment process, the better. Indeed, since recruitment is a significant time investment and a high-impact activity, an Engineering Lead must consistently identify and proceed only with the most suitable applicants at any given stage.
- The faster a new team member can be integrated and productive, the better. Indeed, while the team comprises individuals from different walks of life, they must quickly find their place and contribute to the team’s efforts to the best of their abilities. An Engineering Lead plays a crucial role in vetting the right individuals (before they join) and guiding them (once they join).
To avoid common pitfalls, the following guidelines must be followed:
- DO collaborate and pave the way for the team to move forward.
- Do NOT coerce the squads to follow a specific direction.
👉 As a servant leader, an Engineering Lead must use influence and guidance, not order and force. Respect the decision-making process occurring in the squad.
- DO support the Team Lead in making the best decisions for the project.
- Do NOT make technical decisions in place of the Team Lead.
👉 When software developers are placed in a Team Lead role, it is because they have been assessed and deemed ready to take on the role and/or they need to grow their leadership skills as part of their individual growth. An Engineering Lead must guide and coach Team Leads so they understand the bigger picture of a project, learn how to balance the business and technical perspectives, and know how to make a decision.
- DO take responsibility and stay on top when incidents happen.
- Do NOT blame the Team Lead and/or the whole squad when issues arise.
👉 An Engineering Lead is accountable therefore is ultimately responsible for the outcome. By doing code reviews and being involved in the development process, the Engineering Lead must be on top of all events happening in a project. Therefore, forecasting issues and being proactive in solving the problem is the Engineering Lead’s responsibility.
- DO strategically oversee each project based on its needs at any given time.
- Do NOT simply split your time equally between each assigned project.
👉 No project is the same; each has its specific timeline, constraints, and challenges. Therefore, an Engineering Lead must know how best to oversee their assigned projects. In practice, one project might require more effort than others. As a rule of thumb, at the two extreme points of a project lifecycle, i.e., when a project starts and ends, the Engineering Lead must be more involved in the day-to-day activities to ensure a smooth start and hand-over since these represent sensitive moments for the squad. Similarly, a project on a complex or novel domain would likely require more involvement than a project on a domain that the team has extensive experience in.
- DO minimize context switching between work activities of different types.
- Do NOT treat every work activity as identical to one another.
👉 An Engineering Lead needs to combine both a maker’s and a manager’s schedules. They have software development duties that require deep focus for long periods of time (i.e., several hours), similarly to Developers and Team Leads. That represents their maker’s activities. While, unlike individual contributors, they also have management duties that involve coordination and collaboration efforts for short periods of time (i.e., less than an hour). Switching too often from one type of activity to the other usually results in poor outcomes in both areas. Therefore, it is best to group work activities that fit into a manager’s schedule (e.g., interviews, one-on-one reviews) together on the same day while scheduling work activities that fit into a maker’s schedule (e.g., development, code reviews, etc.) on days when disruptions are less likely.
- DO meet reports at the scheduled date and time for one-on-ones.
- Do NOT postpone on short notice one-on-one sessions with reports.
👉 While Engineering Leads might find themselves, at times, busier than they planned for, they should still honor their commitments with their reports. Postponing a one-on-one session sends the implicit message that there is other work more important than the one-on-one, i.e., the Engineering Lead values other activities more than their time with their report, hence depleting the trust battery between an Engineering Lead and their report. When rescheduling is necessary, it should be made with ample notice period and accompanied by an honest rationale.
Closing Words
Engineering Leads are technical leaders who handle the human side of software development by providing coaching and mentoring to:
- Their reports, i.e., assigned engineering team members.
- The Developers on their assigned projects.
Because of their skills and role in the team, they are the most suited to:
- Report to the CTO about the performance of engineering team members and projects.
- Assess and recruit new engineering team members.