my software dev blog

Author: dariusz (page 1 of 1)

Developers as Team-Leads

A common career paths for software developers  is towards a “team lead” role.

If you’re lucky enough to work somewhere that Team Lead option, it’s a very attractive role:  offers a transition for dev’s interested in management, retains some of that key senior-dev contribution, and sometimes helps avoid having to hire / move people into a more traditional Manager role.

But its pitfalls are serious: TL’s generally struggle balancing individual contributor commitments vs. management responsibilities, and the perceived importance of each.

From personal experience, and from managing Team Leads, some tips!

Guard Your Time

Acting as a Team Lead requires you to be really aware of how you spend your time, and what you expect to deliver in that time.

For example lofty, heroic Sr. Dev achievements can be less valuable than more predictable output, especially for to those that depend on you for next steps.

Ask yourself the obvious questions:

  • How much time can be set aside for individual work.  (2-4 hours per day is normal).
  • How much time can be dedicated to organizing or unblocking work, alignment, reporting, client calls, etc. (4-6 hrs/day)
  • Do you have direct reports? How much time will you dedicate to 1:1’s, mentorship, onboarding, etc. (1-2 hrs/week/person)

This split of time will impact how you can perform team activities like pair/mob programming, white-boarding sessions, etc. because you may not have long stretches of dedicated time.

The simplest way to visualize this challenge is to set it up in your calendar.

  • Block off dedicated slots for certain types of work (then guard them with your life).
  • Pro-actively book time with your team for work that you need to do together.
  • Identify things you have to do well, give yourself time to prepare (weekly demo’s to the CEO, client meetings, etc.)

.. knowing that it’ll change from week to week, but have these rough proportions. Most importantly, run this setup by your manager. Maybe they have a different vision about how to spend your time?

Focus on More Constructive Efforts

The “individual contributor” time Leads have has to be used very constructively.

There’s a few ways to play this … some thoughts:

Taking high value, undesirable work (difficult-to-reproduce bugs, client escalations, etc.).  Those issues keep you connected with details, and identifies difficult things to mentor the team on.

Architecture and high-level software design for the team.  Something I found works well is scaffolding new capabilities, and being involved in that first week .. but letting the team fill in the blanks, iterate.

Technical documentation becomes more important as you’re more exposed to stakeholders, other teams, etc. Docs influence more of the organization than your dev output does.

Code reviews can get overwhelming for any lead.  Good practice is to defer to the rest of the dev team, and focus your review attention on very important or risky deliverables.

Understand Perceptions of Your Contributions

Regardless of other duties, Team Leads are often perceived as “developers first” by others.  That can be positive or negative, depending on how you really want to contribute.

Navigating this perception of the role can be really challenging.

Personal story: I was leading a team of four on a new product.  The plan was ambitious, I was leading efforts with a  client-facing team and designers, and realised a better solution, but it’d move the timeline.

I went to my executive asking that we re-evaluate the promised timeline so we can deliver a better thing.  They started asking me about some implementation detail that I wasn’t aware of.  Then mentioned that I should know those details, and ignored questions about the plan.  It was frustrating; I felt under-appreciated.  Later I realised the mismatch with what the company expected from a Senior Developer in Lead role, vs. what I was focusing my energy on day-to-day.

Building resiliency for those times, and being flexible enough to contribute on the many sides of the role, is tough but great for professional growth.

Hopefully you found this helpful,  and good luck with your Team Lead future.

Project Accountability using a matrix

Once projects get too large for a small team to run, people need ways to identify who is involved (and how) beyond the basic “on the team”.

Borrowed from project management best practice, an accountability matrix is a simple system used to communicate responsibilities on a project. 

Two things all the accountability matrices have in common:

  • have sweet memorable acronyms
  • have a point person who wrangles people into that matrix.

RACI

RACI is probably the most common accountability system. In RACI, the point person is known as the “Accountable.”  The acronym identifies the roles:

  • Accountable: single person who answers for the execution of the project.
  • Responsible: people engaged in the work of the project.
  • Consulted: people who weigh-in on the project, as SMEs. (Two-way communication)
  • Informed: people who want to know what’s going on. (One-way communication)

One person can perform many roles. For example, an Accountable is often Responsible as well.

RACI has critics and detractors.  Most of the criticism reflects that organizations take the matrix too seriously.   I like the point that Grumpy PM makes: the best use of RACI is identifying the various dysfunctions in the organization.

Define Responsibilities

The roles have assigned responsibilities.

Generally:

  • A and R’s attend all project meetings.
  • R’s do most of the actual work.
  • C’s provide timely information, and attend meetings as invited, follow Slack conversations.
  • I’s read the status emails.

If someone can’t be relied on to do the above, they are likely not actually on the project.

For example, it helps identify if someone is a C (book stuff around them), or an I (don’t).  Changing people’s role on a project is straightforward: they get a new letter!

In Software Development Teams

Accountability matrices raise eyebrows and roll eyes due to origins in consulting and Deloitte-like environments.  I still like them. The concepts are lightweight and adaptable to help at a practical level.

Things I find helpful about a matrix:

  • Calls out when someone will actually need to be engaged, which can frees up time in calendars.
  • Divides work without stepping on toes.
  • Fun to make up your own acronyms.

My observation is that matrices that break up R into other roles (Supporting, Tasked, etc.) tend to be way too specific, and categorize people that can’t help the project directly.

Adopting This

Step one: add a bit of RACI to the “epic” or “feature” or “project” templates in your work management system (Jira, Trello, or whatever).  Your project will thank you!

The Employee Lifecycle, for New Managers

At some point early in my “management” career I realised nobody had sat me down and academically explained what managing people actually involved. I didn’t know what I was doing, other than being helpful-on-demand and organizing meetings. Being empathetic came naturally, but it felt like a failure when an employee wasn’t performing well. I didn’t always know what to do, and I didn’t really have the language to explain what I didn’t know.

Leading people was far less mystifying; I had been lead by good leaders, worked in groups where I was the leader, and “leadership” was a topic well-worn in TED talks and college papers. I had a framework for leadership in mind. But it wasn’t helping me convince someone that they shouldn’t quit after a boring project that under-utilised their skills.

Over time, many people helped me build a model of managing people, and it hinged on this idea that your job is to organize people’s lives through the employee lifecycle.

People get hired, become productive employees, and eventually leave. What they do in that lifecycle is up to you to manage. Tada, management.

Engagement and Performance

The lifecycle is organized into two important, somewhat binary, things about an employee:

  • Are they engaged, or not. Employee enagement is, as of writing, the best* predictor of employee success. This is something you can only get if you ask (with surveys, reviews, or 1-on-1’s).
  • Are they performing well, or aren’t they? This can be measured in many, controversial ways. As a manager you can generally answer the question “Is this person a high-performer, or not?”

The lifecycle looks like this:

The lifecycle of employees, and how to progess them through it.  The green area is the desired landing place for all employees.

Recruitment

Every employee starts the same way: someone recruits them. Recruitment is a shared responsibility in the organization, typically involving a dedicated talent management department (ex. HR).

Managers themselves need to:

  • Find and attract talent beyond what other departments are doing (ex. attend meet-ups, write tech blogs)
  • Screen, interview, and assess applicants.
  • Provide a good experience for everyone involved, as applicants talk to their networks.

Development

Once an employee has been recruited, they are likely pretty engaged (unless recruitment didn’t go great). They are likely not performing at their version of “high level”. Developing an employee into a fully-functional member of the team is a managers responsibility.

Development is a continuous activity. An employee can highly function in one part of their role (ex. technical skills), but struggle with others (ex. leading a project, professionalism).  This changes over time, as new skills are required, and the job changes.

Developing employees requires managers to:

  • Onboard, and support their early learning and concerns.
  • Coach the development of required competencies, both professional and personal.
  • Set goals and provide progressive feedback; help overcome blind spots and local maximums.

This is different than training; development is personally tailored, and goes beyond core skills.

Training

Employees find themselves in tough situations when they do not have the tools, or base skills required to perform parts of their job. It’s a manager’s responsibility to resolve those needs with training.

  • Identify under-developed core skills, particularly for groups of employees.
  • Create time in projects to pursue this “on the job.”
  • Watch for missing or incorrect tools, or usage of tools. (ex. wrong software, outdated guidelines)

Expecting people to train at home, or in the case of my industry on hobby projects, is a tad demanding and unpredictable.

Exiting

Leaving the team (or the organization altogether) is an important moment in an employees lifecycle. Managing exits professionally, whether voluntary or involuntary, has a downstream effect on recruitment, and rest of the team’s engagement.

It doesn’t matter if the employee is let go, leaves voluntarily, stays with the company or not, a managers responsibilities are similar.

  • Prepare a replacement plan for every person on your team. Assume no replacement is coming.
  • Take part in the company “off-board”; administration can miss things that are team-specific.
  • Assess your team processes (ex. document ownership, meeting schedule) after every exit.
  • Maintain a conduit for a personal relationship; the time for learning from the experience may come later.
  • Keep the whole process positive and professional.

Exiting employees are actively networking and sharing their experience about your team with others.  They can either be building your bridges, or leaving negative Glassdoor reviews.

Retention

Very narrowly, retention is avoiding unplanned exits.  It’s expensive, disruptive, and bad karma to lose any employee (aka “churn”).

If you recognize someone is un-engaged and underperforming, the “exit or retain” decision should follow quickly.  Retaining means putting that person on a path to engagement (not necessarily high performance), and investing in their longer-term development.

This decision is difficult, and requires you to identify and address problems head on with the employee. That ruthlessness doesn’t always come naturally.

Preventing the “retain or exit” decision by setting up your team properly (including by hiring well) is the goal.

Retaining employees requires managers to:

  • Be clear and consistent about necessary behaviours and goals.
  • Foster a team identity that’s inclusive, honest, and aligned with business objectives.
  • Develop a personal “improvement plan”; the goals isn’t to make someone a rock-star, but set expectations on all those behaviours required to be successful.
  • Team-build; call out conflicts and have employees resolve them together.  Friends need strife.

The pattern here is managers retain people by being clear about: the team, it’s goals, and people’s roles on the team.

Engagement

If you’ve taken management training since the late 1990’s, likely it was focused on engaging your employees.  Engagement supersedes concepts like “job satisfaction” and “morale” as a predictor of employee success.

Research that precedes this terminology still stands.  A formative, data-driven text on engagement is the (terribly named) First, Break all the Rules by the good people at Gallup.

Many activities required to engage high-performers are the same ones managers need to do in other parts of the lifecycle:

  • Ensure people have the right tools, equipment for the job.
  • Consistently communicate what is expected of the team, and the value of that work to the company.
  • Define plans for development and training.
  • Support development of team identity and friendships.

While retention requires setting up the team and roles, engagement focuses on the one-on-one relationship with the manager:

  • Know your employees as individuals, people with personal stories.
  • Find work that plays to their strengths and opinions; advocate for projects that match their skills.
  • Discuss their growth regularly
  • Plan strategies for getting promoted, compensation increases.
  • Recognize and celebrate successes; don’t wait for “announce-ables”, small wins that have creative output are great (ex. a well-written document that solved a client’s long-standing problem)

A lot like development, engagement is a continuous activity.  Like with skills, employees can be really engaged with one aspect of their job, or their team, and dis-engaged with others.   The challenge here is to develop someone to be well-rounded, and engaged with all aspects of the organizations work.

The Other Exit

The extreme end of the one-on-one relationship with your employee is identifying when to exit someone to bigger and better things, as perhaps they have outgrown the role you have for them.  Encouraging an employee onto a better opportunity is an act of being a great manager.

Hopefully you’ve found the above lifecycle helpful!  A good first step is to place your employees on the diagram above, and maybe your next one-on-one will prove insightful.