Not Your Everyday Tech Lead: What Does It Mean To Be TL in a Lean Software Company?

Rate this content
Bookmark
Slides

The experience of being a Tech Lead can change from organisation to organisation, from being an ivory tower architect to getting stuck in the weeds with complex technical challenges. A Lean Software Company is one whose approach is deeply rooted in optimising customer value through studying the techniques used in Toyota’s Production System.

Old-school Agile also has many roots in Lean principles - Kanban, for example, is a tool used on the Toyota production line. But what can the manufacturing of cars teach us about software development?

Join me for this exploration through the world of a TL as experienced within a Lean Software Company as I reveal some of the secrets that allow these companies to deliver higher-quality software at speed.

This talk has been presented at TechLead Conference 2024, check out the latest edition of this Tech Conference.

FAQ

A tech lead in a lean software company is responsible for creating and maintaining the conditions for developers to deliver value effortlessly. This involves identifying and solving problems in the developer's working conditions, rather than just focusing on their own coding tasks.

While a senior developer focuses primarily on coding and solving technical issues, a tech lead is also responsible for managing and improving the overall working conditions for the development team. This includes problem-solving, standardization, and ensuring smooth team operations.

The mentor model of management in a lean software company involves splitting roles into 'makers' and 'managers'. Makers directly create the product or service, while managers create and maintain the conditions for makers to deliver value. Tech leads fall into the manager category, focusing on the success of the team rather than individual contributions.

The cycle of firefighting refers to constantly addressing recurring issues without solving their root causes, leading to burnout and inefficiency. It can be avoided by adopting a systematic problem-solving approach, identifying root causes, and implementing solutions that prevent issues from recurring.

Andon is the process of surfacing and visualizing problems as soon as they occur, enabling immediate problem-solving. Genchi Genbutsu involves going to the source of the problem and experiencing it firsthand to better understand and address it. Both concepts help in identifying and solving issues effectively.

Standardization involves defining the state of the art for processes and tools, creating stable conditions for the team. This helps in achieving consistent results and makes it easier to identify and solve problems when they occur. Examples include having a CI that runs in less than 10 minutes and 100% TypeScript coverage.

The four M model categorizes the root causes of problems into Makers (people), Machines (tools and codebase), Methods (work standards), and Materials (inputs). Depending on the root cause, different solutions are applied, such as training people, fixing tools, updating standards, or ensuring quality inputs.

By adopting the mentor model, the tech lead shifted focus from individual coding tasks to managing and improving team conditions. This involved systematic problem-solving, standardization, and effective communication, ultimately breaking the cycle of firefighting and improving team efficiency.

Examples of standardization in a lean software company include maintaining 100% TypeScript coverage, having a continuous integration (CI) pipeline that runs in less than 10 minutes, and making effective choices for tools and frameworks. These standards help create stable and efficient working conditions for developers.

Lean software development takes inspiration from Toyota's production lines by adopting a scientifically rigorous approach to problem-solving. It focuses on incremental improvements, standardization, and creating stable conditions for high-quality output, similar to the methodologies that made Toyota a benchmark for reliability.

James Haworth Wheatman
James Haworth Wheatman
20 min
15 Jun, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
The Talk discusses the role of a tech lead in a lean software company. It highlights the importance of understanding the distinction between a senior developer and a tech lead. The speaker shares their experience of focusing on immediate issues rather than addressing root causes, leading to burnout. The Talk emphasizes the mentor model of management and the shift in perspective it brings. It also explores the principles of lean and problem-solving techniques in a lean company. The role of a tech lead is to implement solutions, standardize processes, and create optimal conditions for developers.

1. The Role of a Tech Lead

Short description:

Today, I want to talk to you about the role of tech lead in a lean software company. As a tech lead, you have the responsibility to define project architecture, help team members, build trust with clients, and drive the project towards success. However, it's important to understand that the role of a tech lead is not just a senior developer. I made this mistake on my first project and it had costly consequences. Let me share my experience with you. On a Greenfield e-commerce platform project, I was constantly interrupted by other developers seeking help. Due to my misunderstanding of the role, I focused on solving immediate issues rather than addressing the root cause. This led to a cycle of firefighting and eventually burnout.

Today, I want to talk to you about the role of tech lead. You may already have some impressions of the role, both positive and negative. Perhaps you're a developer aspiring to take the next step, or you've recently been promoted and you're finding your feet in the role, or perhaps you've been a tech lead for years. I want to share what I see to be an underrepresented perspective within the industry, and hopefully you can gain some value from that.

That is what it means to be a tech lead in a lean software company. My name is James, and I've been working as a tech lead for the past two years now, building full-stack web and mobile applications at Theodo.uk, which is a lean software consultancy. But actually, I joined Theodo as a developer, so this was me, not this. And consequently, I built a picture of what it meant to be tech lead by paying attention to the tech leads that I had had over the years.

There were a few things that I watched them do. They defined the project architecture and cleared up any difficult technical uncertainty. They helped me when I was stuck. They were always the person to get me out of a sticky situation. They managed to build up really good trust with our clients, and they were also able to drive the project as a whole towards success. And so essentially, I saw the tech lead as a senior developer, a person with the technical experience to solve any technical issue that might arise, rather than an entirely different role within the team. And this was a fundamental misunderstanding of the role that was very costly for me personally.

On my first project as a brand-new tech lead, I was working internationally with a large management consultancy, and we were traveling to see our clients every two weeks or so on-site, building a Greenfield e-commerce platform to sell photovoltaic cells to be installed on private properties. So let's see how this misconception that tech leads are essentially senior developers affected my daily work. I'd pick up a ticket and start coding. After all, I'm a developer, so I should be working on tickets. Often this could be something quite complex. For example, we were working on some pretty unique React components that allowed a user to select their roof on a map and see a visual representation of their solar panels that would be installed on their roof. Then a problem would interrupt my flow, and this was usually a developer asking for help with something.

Perhaps one of the developers was struggling to handle a data coming directly from our CMS. After some time debugging, in the end it turned out that someone had made a change to the data type in Contentful without updating the TypeScript types on the front end, and this had caused a bug. So we updated TypeScript and we fixed the bug. But now I'm behind with my own work. So the components that I'm building are core to our flow, so I hurry back to coding and try and get back in the zone after switching contexts. However, because I only addressed the symptoms, the problem reoccurs, and two weeks later we've got another bug because someone else made a change to Contentful without updating TypeScript. As a result, after about six months on the project, I realized I was starting to burn out. We call this the cycle of firefighting.

2. The Role of a Tech Lead (Continued)

Short description:

From the outside, it seemed like we were a highly functional team, pushing new features daily. However, I was working harder and not smarter. After a pivotal interaction with the CEO, I learned about the mentor model of management. I was struggling because I was trying to do two jobs: developer and tech lead. The mentor model distinguishes between makers and managers, with tech leads as the managers who create and maintain the conditions for the team's success. This shift in perspective made me realize I was seeing everything through the lens of a developer, not a tech lead.

Sure, from the outside it seems like we were a highly functional team, and our clients were really happy. We were pushing new features on a daily basis, and I was keeping the developers afloat. But the effort was a lot, and I was definitely working harder and not smarter.

Fortunately, I've got a number of mentors at work to help me grow into the tech lead role, and they help me clarify a mentor model of what I should be aiming for. So after this low point, I actually had a pivotal interaction, which reframed my understanding of what it means to be tech lead.

During a company-wide training, the CEO offhandedly asked the managers to raise their hands, and she was making a point that was geared towards them, and I didn't raise my hand. So she looked around the room, a bit confused, and noticed me. She said, come on, James. Why isn't your hand up? Of course you're a manager. You're a tech lead. The problem was I didn't see myself as a manager. To me, that seemed like a dirty word. I thought that manager was someone who coordinates the work within their team, but doesn't actually do the work themselves. And it turns out that our CEO had a completely different understanding of what the word manager should be.

After that training, through discussion with her and others, I learned about the mentor model of management that we use in our group. The reason that I was struggling with this cycle of firefighting and burnout was because I was trying to do two jobs. On the one hand, I was struggling to be a developer getting my tickets done, because I could be interrupted at any point in the day, needing to jump in, help out with tickets of the developers, which interrupted my own development flow. On the other hand, because I was always behind with my development, I neglected some of the responsibilities of the tech lead in order to play catch up with my tickets. And this meant that the team ran into some problems over and over, and it was a constant uphill battle to stay at our team velocity as the project went on.

So here's the mentor model that we use at work. We can split jobs into two categories. Those are the maker and the manager. The maker directly creates the product or service that brings the customer value, while on the other hand, we have the manager, who creates and maintains the conditions for the makers to deliver that value effortlessly. And this is very precisely worded. It's about creating the holistic conditions for a high performing team to grow, and making sure that all of the inputs that your team needs to succeed are there. It's about success of the team, rather than focusing on your own contributions within the team. And maintaining those conditions where people really enjoy working on your projects, because they can see that the effort that they put in is directly proportional to the outputs of their work, where they're not held back by those daily hindrances of poor devX or small problems. This isn't an easy job at all, especially when there are external factors to consider. So in the context of technical roles at our company, we can see how tech lead and dev fit into this mentor model, with the developers as the makers within the team, and the tech leads as the managers. And this was the main reframe that made me realize I was seeing everything through the perspective of the developer, rather than through the framing of a tech lead.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

A Framework for Managing Technical Debt
TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Principles for Scaling Frontend Application Development
React Summit 2023React Summit 2023
26 min
Principles for Scaling Frontend Application Development
Top Content
Watch video: Principles for Scaling Frontend Application Development
This Talk discusses scaling front-end applications through principles such as tearing down barriers, sharing code in a monorepo, and making it easy to delete code. It also emphasizes incremental migration, embracing lack of knowledge, and eliminating systematic complexity. The Talk highlights the use of automation in code migration and the importance of removing barriers to enable smoother code migration.
Fighting Technical Debt With Continuous Refactoring
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
Watch video: Fighting Technical Debt With Continuous Refactoring
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.
Building High-Performing Cross-Cultural Teams
React Day Berlin 2022React Day Berlin 2022
25 min
Building High-Performing Cross-Cultural Teams
The Talk discusses the importance of effective communication and collaboration in cross-cultural teams. It emphasizes the impact of culture on communication and performance evaluation. The speaker highlights the differences between low-context and high-context communication styles and the need to understand cultural nuances. It also explores the challenges of giving feedback in multicultural teams and suggests ways to improve communication and create a feedback culture. The influence of language on communication and the importance of transparency and honesty in feedback are also discussed.
Scale Your React App without Micro-frontends
React Summit 2022React Summit 2022
21 min
Scale Your React App without Micro-frontends
This Talk discusses scaling a React app without micro-frontend and the challenges of a growing codebase. Annex is introduced as a tool for smart rebuilds and computation caching. The importance of libraries in organizing code and promoting clean architecture is emphasized. The use of caching, NxCloud, and incremental build for optimization is explored. Updating dependencies and utilizing profiling tools are suggested for further performance improvements. Splitting the app into libraries and the benefits of a build system like NX are highlighted.
A Quick and Complete Guide to Measuring Your Tech Debt and Using the Results
TechLead Conference 2023TechLead Conference 2023
27 min
A Quick and Complete Guide to Measuring Your Tech Debt and Using the Results
Watch video: A Quick and Complete Guide to Measuring Your Tech Debt and Using the Results
This Talk discusses the measurement and interpretation of tech lead, focusing on tech debt. Tech debt is a tool to temporarily speed up development but can have negative consequences if not managed properly. Various tech debt metrics, including heuristic metrics and second-tier metrics, can help identify and manage tech debt. Tech debt interest is crucial for measuring the impact of tech debt and allows for prioritization. It is important to collect and analyze tech debt metrics to ensure software and team health.

Workshops on related topic

From Engineer to Leader: A Workshop for First-Time Tech Leaders
TechLead Conference 2024TechLead Conference 2024
144 min
From Engineer to Leader: A Workshop for First-Time Tech Leaders
Workshop
Andrew Murphy
Andrew Murphy
Transitioning from an individual contributor role to a leadership position, especially in the fast-paced tech industry, is hugely challenging. Most new leaders don't receive any training at all in the first 10 years of their new responsibilities.Our comprehensive workshop is designed to assist new and emerging tech leaders in understanding their new roles and gaining the skills to make them confident, happy and effective leaders.
Managers Are From Mars, Devs Are From Venus
TechLead Conference 2024TechLead Conference 2024
111 min
Managers Are From Mars, Devs Are From Venus
Workshop
Mo Khazali
Mo Khazali
A Developer’s Guide to Communicating, Convincing, and Collaborating Effectively With Stakeholders
It’s a tale as old as time - collaboration between developers and business stakeholders has long been a challenge, with a lack of clear communication often leaving both sides frustrated. The best developers can deeply understand their business counterparts’ needs, effectively communicate technical strategy without losing the non-technical crowd, and convince the business to make the right decisions. Working at a consultancy, I’ve both failed and succeeded in architecting and “selling” technical visions, learning many lessons along the way.Whether you work at a product company, are a consultant/freelancer, or want to venture beyond just being a developer, the ability to convince and clearly communicate with stakeholders can set you apart in the tech industry. This becomes even more important with the rise of GenAI and the increasingly competitive developer market, as problem-solving and effective communication are key to positioning yourself.In this workshop, I’ll share real-world examples, both good and bad, and guide you through putting the theory into practice through dojos.
Out of the Frying Pan, Into the Fire: A Manager's Guide to Helping New Developers Thrive
TechLead Conference 2024TechLead Conference 2024
35 min
Out of the Frying Pan, Into the Fire: A Manager's Guide to Helping New Developers Thrive
Workshop
Andrew Coleburn
Andrew Coleburn
Onboarding to a new project can be difficult, no matter your background and experience. But it can be especially challenging for new developers straight out of school or a coding bootcamp. Drawing on personal experience as a bootcamp grad and JavaScript consultant, this talk will discuss tips and strategies for managers to help the new developers on their teams get their bearings in an unfamiliar codebase, so they can make more of an impact, faster!