Engineering Lead Handbook

Hero image for Engineering Lead Handbook

Welcome to the People path of the Developer Track đź‘‹

This handbook aims to guide software developers on the engineering leadership path by providing detailed insights on:

  1. What the role is really about.
  2. In what ways it differs from an individual contributor on the Technical path.
  3. 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 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.

This concept of servant leadership is at the core of how we envision leadership at Nimble. Our squads are also structured with servant leadership in mind. First, our squads have a flat structure in which no member is hierarchically above another member. Second, our 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.

Squad with engineering leads in non-team roles

Even though the role is named Engineering Lead and not Engineering Manager, there are still management duties involved. Management refers to a type of task - just like there are also development-related or recruitment-related tasks - which an Engineering Lead must fulfill.

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’s still an active “coding” role.

While many managers stop coding, we firmly believe 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 is assigned to one (minimum) or multiple (3 at most) project squads in the same area of expertise as their own (Android, iOS or Web) e.g. one Engineering Lead with Web expertise would be assigned to and vouch for the deliveries of one to three Web applications. In contrast, another Engineering Lead with iOS expertise would take care of one to three mobile applications.

The minimum set of development responsibilities is to do code reviews on all assigned projects. Besides, an Engineering Lead can fully participate in the development process of one project as he/she works side-by-side in the squad, i.e., work on development tasks and actually commit code. An Engineering Lead’s priority and type of tasks can be decided within the squad (this relates to self-management).

While code review responsibilities must be fulfilled on all the assigned projects (2-3 at most), actual development must be limited to a single project. Doing development on all projects would entail an immense workload and context switches incompatible with the rest of the responsibilities.

Accountability means that an Engineering Lead is accountable for the technical implementation and delivery of all the assigned projects. The Engineering Lead 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. Team Leads are usually Senior/Principal Developers so they have the technical abilities to make such decisions. But as a leader, an Engineering Lead must use their technical expertise and management skills to get the team to go in the right direction i.e. the Engineering Leads must use their influence 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 will create conflicts in the engineering team. Our squads must continue to work collaboratively and have group ownership. Thus, an Engineering Lead must work in collaboration with the Team Lead and the squad as a whole to achieve the best possible outcome.

In order to avoid some pitfalls, the following guidelines must be followed (i.e. a list of what NOT to do):

  • Do NOT coerce the squads to follow a specific direction.

    As a servant leader, an Engineering Lead must use influence and guide, not order and force. Respect the decision-making process occurring in the squad.

  • 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 that 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 NOT blame the Team Lead and/or the whole squads 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 the things happening in a project. Therefore, forecasting issues and being pro-active enough is the Engineering Lead’s responsibility.

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 30 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

    In order 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.

  • Perform regular one-on-ones and 360 reviews (performance reviews) with the assigned software developers.

    In terms of schedule, at the minimum, the schedule for one-on-one sessions is set to be done every four weeks for both full-time developers and developers under probation. As for 360 reviews, they are done twice a year after each squad rotation in January and July.

    Whether it is a one-on-one or a 360 review, the Engineering Lead must define the objectives for their assigned developers to ensure they can level up and 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 our 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 our development processes. As the team grows, Engineering Leadership is meant to ensure our processes are maintained across the board from development to security.

At the crossroads of a SCRUM master, an Engineering Lead also ensures that Agile rituals are held and deliver on their goals.

As a participant in retrospectives, an Engineering Lead can guide Chapter Leads to lead each session. In addition, an Engineering Lead can also make sure that developers provide useful information in daily standup.

A Typical Week

With a seemingly long list of responsibilities, it might seem hard to visualize what an Engineering Lead would do on a weekly basis. So here is what it would typically look like:

  • Monday:
    • Participate in internal sprint planning along with the squads for the projects he/she is assigned to (1-3 projects)
    • Code reviews in all of the assigned projects and optionally do development on secondary tasks or bug fixes (0.5 day)
  • Tuesday:
    • Screen and interview candidates
    • Code reviews in all of the assigned projects and optionally do development on secondary tasks or bug fixes (0.5 day)
  • Wednesday:
    • Participate in retrospectives in corresponding Chapter
    • One-on-ones with the assigned team members and write a report for the CTO (every 6 weeks)
    • Code reviews in all of the assigned projects and optionally do development on secondary tasks or bug fixes (0.5 day)
  • Thursday
    • Screen and interview candidates
    • Retrospective with CTO (every two weeks)
    • Code reviews in all of the assigned projects and optionally do development on secondary tasks or bug fixes (0.5 day)
  • Friday:
    • Participate in sprint planning/reviews with the client along with the PM
    • Code reviews in all of the assigned projects and optionally do development on secondary tasks or bug fixes (0.5 day)

It’s a simulated scenario so the days might not match with the actual days.

In addition, an Engineering Lead could take part in an additional Platform Engineering project to remain hands-on, perform technical writing for Compass and/or the blog.

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 software developers.
  • 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 software developers and projects.
  • Assess and recruit new team members.