Tech Leadership in Software Engineering

Tech Leadership in Software Engineering

·

10 min read

Before starting to seriously write about my role as a leader in the Software space, I thought I should right about the frequently used terminology around being a technical lead in the tech world. Below, I’ll delve in to the different levels and types of leadership that I’ve seen and that I will write about. Most job titles are open to interpretation and can mean different things in different companies, so I’ll try and just define them in the most common way as I’ve seen them.

I won’t go In to leadership styles in post as that is a very different subject and requires an entire post series of it’s own at some point in the future.

What is a leader?

I bet you didn’t think I’d go this far back to basics, did you!

leader
noun [ C ]

leader noun [C] (CONTROLLING)

a person in control of a group, country, or situation:
a religious leader
He’s a natural leader”.
She was elected as leader of the campaign group.

Oxford English Dictionary

The Oxford English Dictionary defines a leader as: “a person in control of a group, country, or situation”. This is a very clinical definition devoid of nuance. When a definition of a leader uses the word “control” it is often (quite rightly) derided. There are many different camps when it comes to leadership, but I’ll just choose two for comparison here:

  1. Leading by strict direction and a singular vision. Essentially autocracy using authority.
  2. Leading by example and using consensus.

There’s essentially having people work with you or for you. I realise that there is a broad spectrum of types of leaders, so I definitely don’t want to define it down to just these two forms. I just want to highlight these two as they will become pertinent later in this post.

I’m more of a fan of the Harvard Business Reviews definition of a leader:

Leadership is the accomplishment of a goal through the direction of human assistants.

Harvard Business review

So, a tech lead can either lead by authority or without or authority. Let’s take a look through some of the job titles and leadership roles in the Software Engineering space.

Senior Software Engineer as a Tech Lead

Whilst you can certainly be a leader as a Junior, generally the SSE is the earliest form of tech leadership. The SSE is probably the largest category of software engineer. When I started working in the industry, the general consensus was that when you’d hit five years of commercial experience, you could feel comfortable calling yourself a senior software engineer. In my current place of work, I think the definition is anyone with three years or more experience. You are a senior software engineer much longer in general than you would be a junior. Not all engineers want to rise through the corporate ladder beyond this as they like writing code. SSE is the highest population of workers in Software Engineering.

Leadership without authority is essentially what you have to do as a senior software engineer. You infrequently would get a position of direct authority in this role where you would have reports, but in no way does that mean you can’t be a leader. Many of the people I picture as leaders during my years have been SSE’s. I listened to them and took instruction because they earned it.

Leading without authority requires that you gain the respect from your peers. You colleagues needs to see you being extremely competent and leading by example. With these virtues being shown, leadership without authority is not only possible but tend to organically happen. Leadership here tends to come in the form of mentoring more junior (that could still mean other SSEs) colleagues in both product and technical term. An SSE may choose the framework or language for a particular service or piece of code and be able to get this through consensus without the power to tell, but with the power to convince people it’s the right thing to do.

Scrum Master as a Tech Lead

In order to stick to the topic of tech leadership, I’m going to talk about a scrum master here in the terms of an Engineer who remains technical but takes on scrum master duties, not a purely non technical scrum master.

In some teams, a scrum master is a non directive leadership role whereby one is in charge of running the sprint ceremonies and ensuring your work tracking tool of choice is up to date. Other companies however see the role of scrum master as all of the above plus an element of people leadership. I’ve not known of scrum masters who have engineers directly report to them, but I certainly do know scrum masters who decide on what work goes to which person, has the authority to tell someone to stop working on a task if priorities change and chase people when their work may be late. Scrum Master is a leadership role when it’s allowed to be.

Technical Lead as A Tech Lead

A Technical Lead has to fall in the tech leadership list, the clue is very much in the name. A Tech Lead has ownership and authority of all things technical within a team. They choose which language to use, which frameworks to use, which patterns to follow, what the architecture will look like etc. Tech Leads seldom do people management, they are generally the career progression next step for SSEs. The leadership aspect here is pretty obvious, it’s leading the teams technical identity and agenda.

Software Engineering Team Lead

Here’s where things get fuzzy. I’m sure that there are many people who have fixed definitions of this role and the next role I’ll define (Software Engineering Manager), but to me they can mean different things in different organisations. I’m going to write here based on my experiences (which is all I will ever do).

Without wishing to define the definition by restating the problem, a Software Engineering Team lead leads software engineering teams. Well done me. The reason this is quite hard to define, is that a SETL has to wear many hats and those hats can depend on the organisation in which they work. Some of the more common hats they may need to wear:

  • Mentor
  • Technical Lead
  • Product
  • Business Analyst
  • Scrum Master
  • Communicator
  • Team Cheerleader
  • People management
  • Project Manager
  • Problem Solver

As you can see, the list is long and varied. I’ve been a SETL in three different companies and the roles all looked totally different. The roles you have to play will depend on the size of the company and the ability for that company to have dedicated people to fulfil those roles i.e. Product, BA, PM etc.

If I had to boil down the definition to one sentence it would be:

A Software Engineering Team Lead does whatever is required to get the team to deliver the project.

Software Engineering Manager

Depending on the size of the organisation and the organisation itself, the roles of Team Leads Managers can overlap. For instance, in a smaller company, the Software Engineering Manager may also still write code. I’ve worked in a company where that was true. This SEM also was accountable for most of the other roles that I’ve listed above in the SETL section.

In larger organisations however, there is a slightly bigger differentiator. Managers are usually more involved in the long term strategical vision for the team(s) that they run. Generally a team lead would report in to a Manager, so the manager would be a step removed from the actual code. Some companies only hire managers that were at some point In their careers engineers, others seem to worry less about the ability to write code and more about the ability to effectively integrate with the business plan and manage people. Some managers would have engineers directly reporting to them, sometime there’s a rung in the middle in the form of a team leader.

Technical Manger

This is where things get fuzzy for me. I’m going to define a TM as someone who could either run a team of software engineers, an infrastructure team or both. I’ve technically held this title, but it was the shortest role of my career as it involved procurement and other hardware related items which didn’t really interest me.

What is my job title?

I’ve held all of the above tech leadership titles throughout my career. My role at the moment is somewhere between a Software Engineering Team lead and a Software Engineer Manager. My companies somewhat conflates the two roles even though I myself do report to a Software Engineering Manager.

The predominant reason for this post is to show that tech leadership can be displayed at all levels of an engineers career. Even if you are a life long SSE that has no interest in people management, you can be a leader. As a scrum master that may not have any direct reports, you can lead and direct the team. Leadership without authority can be attained at any level as long as you display the characteristics that draw others to trusting your instructions and decisions.

As always, I’d love to get feedback on this post, so please contact me with any thoughts.


Summary FAQ

[

a

How to demonstrate technical leadership?

](#)

Category: Software Leadership Definitions

How does one demonstrate technical leadership? This can be dependent on the current level and role in which the person is. Leadership without authority is usually gained by having a proven track record of being good at your job to the point where people follow and listen to your ideas. Demonstrating tech leadership from a Tech Lead role or a manger role would be different than from an IC, and usually involves many of the same traits that you would generically expect from a leader: Trustworthiness, clear communication, leading by example, resilience, empowerment of others etc.

[

a

What are the roles of technology leaders?

](#)

Category: Software Leadership Definitions

“Technology leader” is a fairly generic term. In Software alone this can cover:

  • Software Engineering Manager
  • Software Engineering Team Lead
  • Principal Engineer
  • Senior Software Engineer

All of the above in various degrees are technology leaders. One or many of the below responsibilities could be assigned to any of the above roles:

  • People Management
  • People Development
  • Project Delivery
  • Human Resources queries (Time off, Sickness, working aboard etc)
  • Ensuring technical excellence
  • Team morale
  • Day to day running of the team
  • Mentoring
  • Technology advice Design responsibility
  • Architecture

[

a

What is the role of a Software Engineering Manager?

](#)

Category: Software Leadership Definitions

  • People Management and development
  • Human Resources related issues: Time off, Sickness etc
  • The direction of the team
  • Interacting with business counterparts
  • Less low level code and architect choices

[

a

What is the role of a Software Engineering Team Lead

](#)

Category: Software Leadership Definitions

  • Ensuring the team follows the coding patterns and styles defined
  • Keeping the standards of the code to a high level across all team members
  • Final technical decision sign off
  • Architecture
  • Mentoring team members
  • Day to day running of the team

[

a

What makes a great leader in Tech?

](#)

Category: Software Leadership Definitions

To be a great leader in Tech, you need to be a bit of an all rounder. You need to have good interpersonal skills that allow you to not only lead your team but also influence others in the business. A great tech leader needs to remain technical (the degree to which they need to remain technical generally relates to how high up the management chain they get). A great tech leader needs to be able to understand the business and domain they are managing within and ensure that the team is not only delivering something technically of high excellence, but solving the clients/customers needs.

The post Tech Leadership in Software Engineering appeared first on Just Another Tech Lead.