cm

December 4, 2023

What's Your Leadership Style?

There are many ways to exhibit leadership in the realm of software engineering. When it comes to engineering management, however, it is a required aspect of the role. When I am being interviewed for engineering manager, lead engineer, or senior engineer roles I am sometimes asked to describe my leadership style. In my opinion, hiring managers don't ask,  "What's your leadership style?" often enough. Instead, they tend to infer leadership style by asking behavioral questions such as, "Tell me about a time that you had to deal with a challenge and how you handled it." Of course, there is a lot that can be inferred by listening carefully to the answers to these types of questions. On the other hand, during an interview one's nervous, the time limit is short, and other factors can make it difficult to explore the broader themes of leadership style within the context of specific behavioral questions.

Still, as the interviewee it is often up to you to steer your answers in the best, most informative ways possible. I argue that most leaders blend multiple leadership styles and this may not be apparent when behavioral questions get too focused on specific example details. If you're the interviewee, try getting to the point succinctly and leave a little room to talk directly about the leadership style you employed in the specific case and then briefly describe how it relates to other leadership styles you might use in other contexts. 

Before we dig in, I first want to briefly touch on agile management processes and how leadership styles relate to them, because having that top of mind can also help elucidate my point. The difference between a leadership style and a management process is not always clear, but usually style is referring to the aspects of leadership that require extemporaneous and auspicious action and/or strategy and vision, where as management process is about building repeatable and reliable ways of completing common (and sometimes uncommon) tasks. I like to think of the difference between a head chef (employing a style) and their kitchen team and recipes (employing a repeatable process). So leadership is a quality of a person and there can be a lot of art to it. Management is the act of directing a team to achieve outcomes and tends to be more highly structured.

On top of that there are also management philosophies which blur the line between the two. For example, if we look at just three commonly referenced approaches: Lencioni's five dysfunctions of a team (i.e., absence of trust, fear of conflict, lack of commitment, avoidance of accountability, and inattention to results), Gene Kim et al's DevOps principles (e.g., having a common goal enables the fast flow of planned work into production, cross-functional teams rigorously test hypotheses about delightful features that advance organization goals, etc), and the flywheel method (e.g., open and authentic communication, be a team player, lead by example, etc, but especially removing friction and accumulating small wins), we find that there is a great deal of overlap between how we talk about the things a leader can do and how they do it (their leadership style), why they do it (their philosophy), and the management processes they put in place to perpetuate the best outcomes. Still, these philosophies don't often touch on leadership directly and ultimately constitute sort of visions or strategies for management processes which themselves exist within or alongside the agile methodology.

Back to my original point about blending multiple leadership styles. I will now quickly review three commonly known leadership styles and how it might be possible to exhibit the characteristics of each in specific circumstances. 

const overPromise = new Promise(underDeliver);
Transformational leadership is a style in which vision, team and company culture can play a large role by facilitating a sense of identity. A transformational leader might take advantage of the excitement and flexibility at an early-stage startup to adopt a particular philosophy, architecture, programming language or library. At an early-stage startup this might start as simply and innocuously as getting something done using a new language or library and then discussing its positive aspects with team members and helping them get started with it. Traditionally, we'd expect a transformative leader to run with this and make it a fundamental part of their identity and that of their team's: "we only use the latest and greatest technologies", "our innovative new product was such a success thanks to my decisive use of this tech", etc. However, that's not strictly necessary. And while transformative leadership can help to reinforce technical mastery and build rapport and culture within a team, it can also lead to over-reach and cult-of-personality. Thankfully, the next leadership style I'll discuss can easily blend with it.
 
isServant = issubclass(Leader, Team)
assert isServant, f"expected Leader is subclass of Team, got: {isServant}"
Servant leadership is a style in which the leader is purposefully and explicitly putting the team ahead of themselves. In this sense, servant leadership can be easily seen to blend with transformational leadership in so far as the transformation is for the betterment or success of the team rather than for any particular individual member. Even better yet, in so far as it places the team above the leader the servant style can be thought to promote valuable qualities in the leader such as humbleness and authenticity while simultaneously disincentivizing unwanted qualities such as selfishness. A transformational leadership style might not do that unless those valuable qualities are already a part of the team's identity. In this way the servant style can promote leading-by-example. At an enterprise company the servant leadership style might shine when a leader is tasked with architecting a solution that integrates with other teams' applications. In this case, the needs of the larger engineering organization outweigh the desires and identity of the individual or even that of the smaller team. In this context, the servant style could promote aligning software development to strategic business goals and delivering value on a predictable schedule. 

type Team struct {
    leader sync.Mutex 
}
func(team *Team) {
    team.leader.Lock()
    team.leader.Unlock()
}
Coaching leadership is a style in which the leader has a more fluid and less traditional presence that focuses on collaboration and career development. A principal or staff engineer, one who floats between teams, might most obviously benefit from employing this style. However, team leads and managers can also employ it to great effect. For example, one's team members or direct reports may be interested in developing cross-functional skills, learning new technologies, etc. Having a leader whose style is that of coaching could promote the development of those skills by setting reasonable expectations, offering decisive feedback, creating action items and tracking them in a timely manner, helping to build career development processes and support, or even directly mentoring. This can then feed back into many of the positive aspects of the transformative style (team-building, vision, culture, identity, etc) as well as the servant style (leading-by-example, authenticity, aligning goals, etc). A coaching leadership style can also inspire the leader to find and remove team members' blockers earlier (i.e., might have more one-on-ones and careful listening to team members) as well as promote synergies outside of the engineering organization by fostering an educational communication style that non-engineers might benefit from. 

It might sound like I'm wrapping up with the coaching leadership style because I feel as though it blends better with the other styles mentioned. I don't believe this is true. It is only an artifact of the fact that I started with the transformative style and ended with the coaching style. In my view, all of the styles here, and other styles I didn't mention, can be more or less blended depending on the situation and the person's own experience, personality, and proclivities. The broad examples I give above are all from my own experience leading software engineering teams. For this reason, I believe my own leadership style is an eclectic one that has grown out of my experience living and working abroad, humbly working as a team member in many different employment contexts, teaching and training, organizing meetups, writing, etc. And it's also for those reasons that it's best to bring up "What's your leadership style?" directly rather than leaving it to guesses based on examples.

About cm