Human Who Codes Newsletter

Human Who Codes Newsletter - Leadership Roles

Published 10 months agoย โ€ขย 5 min read


Thoughts on Leadership Roles

As you progress in your software engineering career, your leadership skills become increasingly important. Even if you never transition to a management position, you are still likely to find yourself leading others whether that be formally through a role as tech lead or informally as a senior member of your team or company. While there are many different types of leadership there are five primary roles that you'll play.

Teacher. You'll directly instruct someone else on what they need to do. In this role, you are guiding people, step-by-step, to learn new skills and concepts. This might involve teaching a class, giving a talk, writing a blog post or book, or even pair programming with someone to help them through a difficult task. Teacher hold the hands of their students to help develop.

Mentor. You'll indirectly help someone with what they need to do by engaging with them. In this role, there's less hand holding than in the teacher role and you instead help by giving advice. You might share stories of your own experiences or connect them with resources or people who can help. Mentoring is a hands-off role where you act as a sounding board and resource to help point people in the right direction but don't get directly involved in the work.

Coach. You'll directly help someone by asking them to think deeply about the task. Where teachers will give you the next step, coaches instead challenge you to discover the next step with their guidance. Coaches don't give step-by-step instructions, instead, they ask questions to help change thinking. Coaches inspire action through discussion with the end goal of developing certain skills in their coachee. (By the way, I offer coaching.)

Supervisor. You'll oversee the work that someone else is doing to validate that it is done correctly and on time. While this role traditionally falls to a manager, there are certainly times when tech leads are required to supervise their teammates. Supervising means pointing out when expectations are not being met and holding people accountable for meeting them. Practically speaking, this most often happens for tech leads during code reviews, where it's your job to ensure that the quality of the code is up to company standards.

Sponsor. You'll indirectly help someone develop by providing them with opportunities they might not otherwise receive. Sponsoring inside of a company often looks like recommending someone for certain positions or roles, or ensuring someone gets a certain type of work that will help them develop the necessary skills. Oftentimes, the person you're helping won't know that you've sponsored them. Being a sponsor is about opening doors so someone else can walk through, setting up to succeed.

You won't play all roles to everyone in your career, and you might play several of these roles inside of conversation with someone. For today, just keep in mind that there are many different types of leadership, and therefore, many different ways for you to help your teammates grow. Understanding and using these roles will help you continue to progress in your own career while benefiting others as well.


Key Takeaways

  • There are five leadership roles you can adopt: teacher, mentor, coach, supervisor, and sponsor.
  • Each role is appropriate in different situations and you will likely move between roles frequently, sometimes even within the same conversation.
  • Tech leads have the opportunity to practice all of these roles even without direct reports.

Further Reading

๐Ÿ“š You're the Leader, Now What? by Dr. Richard Winters

If you enjoyed the discussion about the different leadership roles, then you'll probably like this book, which contains a whole chapter on this topic. This is a book on leadership in general and not technical leadership specifically, but it is definitely applicable to software engineers (and anyone else).

๐Ÿ“š Multipliers by Liz Wiseman

Another general purpose book, this one explains how to be a multiplier, which means that you help other people succeed. I've written before about the importance of being a multiplier as a tech lead and staff engineer, and this book has a much longer discussion about how you can grow in your career by helping others grow.

Want more book recommendations for software engineers? Check out my reading list for a complete list of what I consider must-read books.

โ™ฅ๏ธ Sponsor me on GitHub. Over the last two months, GitHub eliminated PayPal donations and as a result my sponsorships decreased by over 80%. If you enjoy the free content and code that I provide, please sponsor me on GitHub.

Stuff I've Enjoyed This Month

๐ŸŽฌ Where do types go? Not here by Matt Pocock
I've been experimenting more with writing JavaScript projects with TypeScript type definitions, and at first I was confused as to where I should put those type definitions. This video explains succinctly how to provide types for your JavaScript project.

๐ŸŽฌ How Google remapped the world by Wall Street Journal
I've always been interested in Google maps and how it works, but never really spent much time looking into it. This short video explains where Google maps came from and how it keeps accurate and up-to-date.

๐Ÿ“ How to load HTML from another page with vanilla JavaScript by Chris Ferdinandi
Getting back to basics, this post explains how to use vanilla JavaScript to pull in HTML from another page and display it in a dialog. As someone who is a big believer in understanding the fundamentals of the web platform, I'm always happy to see tutorials like this that help people understand the browser primitives that underlay what the UI frameworks are doing.

๐Ÿ“ Prerender pages in Chrome for instant navigation by Barry Pollard
Back in the day, Chrome had a feature that would allow you to prerender pages for faster navigation. That original approach had some problems so it was removed only to return now in a better-thought-out version that will soon allow you prerender your pages again. This post explains the differences from the original approach and how to try it today.

๐Ÿ“š The Staff Engineer's Path by Tanya Reilly
There are so few books about the role of staff engineer that I had to pick this one up when I saw it. While a bit long-winded and abstract at times, I found that there were still some useful nuggets of information throughout, such as being mindful about your social capital and credibility. I think Will Larson's Staff Engineer is a better overall book about the role but this one certainly has its moments.

What I'm Working On

๐Ÿ  Real Estate: My latest BRRRR property is still awaiting repair for the hail damage. I finally found a construction company who are willing to work with the insurance company on the needed repairs. I'm hoping that I'll see some progress in the next week. Follow my Instagram for photos.

๐Ÿ“ Blog: I wrote a three-part series called Managing your interrupt rate as a tech lead. The goal of the series is to help tech leads regain control of their schedule but minimizing interruptions. Tech leads are often pulled in a lot of different directions, and this series is here to help. You can read each part here:

๐Ÿ’ป ESLint: I've been working primarily on the language plugins project, with the latest pull request aiming to move more JavaScript-specific functionality out of the core. The overall goal is to have a language-agnostic core that will allow ESLint to easily lint languages other than JavaScript.

Human Who Codes Newsletter

Nicholas C. Zakas

A once-per-month newsletter discussing topics important to senior-level software engineers, with a particular focus on frontend technology and leadership.

Read more from Human Who Codes Newsletter

Thoughts on Open Source Takeovers This past month saw one of the most well-planned open source software supply chain attacks in history. A program called xz Utils, which provides lossless data compression for most Linux distributions, was found to have a backdoor that affected sshd. As Ars Technica reported, โ€œAnyone in possession of a predetermined encryption key could stash any code of their choice in an SSH login certificate, upload it, and execute it on the backdoored device.โ€ There are no...

20 days agoย โ€ขย 5 min read

Thoughts on JSR This past month saw the public release of the JavaScript Registry (JSR), a direct competitor to npm. The folks behind JSR are the same folks behind Deno, a direct competitor to Node.js. While it may not be surprising that a Node.js competitor would also create an npm competitor, Deno actually started with a theory that the JavaScript community didnโ€™t need npm or any other package manager. In fact, in Ryan Dahlโ€™s original talk announcing Deno, he explicitly mentioned npm as a...

about 2 months agoย โ€ขย 5 min read

Thoughts on Burnout As tech layoffs continue to fill up news sites, Iโ€™m reminded of how hard I used to work as a full-time employee at companies who could dispose of me without warning. Not only was I giving my all to my work, but then I was working on open source and books in my spare time. For years, I had very little downtime as I bounced from one task to the next, all the while pushing through burnout and not taking any time to recharge. Itโ€™s no surprise that I ended up so sick that Iโ€™ve...

3 months agoย โ€ขย 6 min read
Share this post