Skip to content

Instantly share code, notes, and snippets.

@samoshkin
Last active October 31, 2023 10:09
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save samoshkin/73af7ade23c99d9d64b4cba9661ad61d to your computer and use it in GitHub Desktop.
Save samoshkin/73af7ade23c99d9d64b4cba9661ad61d to your computer and use it in GitHub Desktop.
Tech Lead role and responsibilities

What I mean by "Tech Lead" role and responsibilities

  1. It's the person who is responsible for the technical quality of the project. For example, the Team agrees to adhere to a particular level of quality (e.g no linter errors, no failing tests, naming conventions, Git branching model, release cycles, modular structure, software design practices and principles). The Tech Lead is the person who detects violations of our quality policy, communicates it to team members, and explains what should be improved.

  2. Tech Lead has a high-level vision of the project architecture, and also aware of low-level details and nuances, by being involved in everyday development activities.

  3. Tech lead spends 80% of his time in development activities. Otherwise, he will lose the technical feeling of the project, and become a "Сферический конь в вакууме". In the same way, Tech Lead is not limited only to tech debt or infrastructure-related tasks, he works on regular product features, same to other Team members. Otherwise he will lose the feeling of the project from a business viewpoint. Losing either of these aspects - technical or business - is unacceptable for the Tech Lead.

  4. Tech Lead contributes to a high-level or medium-level software design. It means splitting the feature into software modules (packages, classes, services, e.g. it might happen on different "zoom level") with each module having its own responsibility, clear interface (aka API) and a clear communication paths between other modules/components. Tech Lead splits the feature into technical-oriented sub-tasks, and passes them over to team members. Implementation details of each module/component are less relevant than the high-level decomposition and modularization, and are managed by team members.

  5. Tech Leads is aware of pain points, technical issues, tech debt (e.g lack of Continuous Integration, lack of Testing, lack of modularity, entangled project structure, etc). Tech Lead is the person who owns the Tech Debt. He has a vision of what is the next issue to address, what is the level of urgency, and has a technical solution/vision on how to address those issues.

  6. Tech Leads is the referee to pick up the right solution, in case when two or more team members have different vision, each having different arguments, and they cannot reach a consensus on picking up the solution.

  7. Tech Lead along with C-level management, System Architect and Tech/Team Leads from other teams contributes to and takes critical system-level technical decisions (e.g. pick a particular technology in favor or another, e.g. common shared database or a messaging solution, choose a particular cloud provider, agree on cross-team components and their interfaces, e.g GRPC shared service).

  8. Also, Tech Lead can take technical decisions or pick technologies on its own for medium-level things, that are limited to a scope of his Team only (choose the testing library and testing approach, choose the approach of how to run local environment in Docker Compose or MiniKube, choose logging and error tracking solution, decide how to split and decouple UI and backend parts of code).

  9. Tech Lead mentors and helps teammates (if they are open for such help), skills them up, shares his knowledge, and motivates/helps the team to grow in terms of hard skills. Tech Lead teaches by his own personal example.

  10. Tech Lead has wide and extensive knowledge in areas not directly related to the current tech stack and has a fundamental knowledge base of programming topics in general. For example, given you current tech stack is MERN. Tech Lead is a person, who is also aware of: software design principles and practices, programming paradigms (OOP, FP), SDLC approaches, CI/CD, infrastructure, devops skills to some extent, maybe has proficiency in a completely different language or stack (e.g. Python, .NET), Testing, Operating systems, Networking, Cloud solutions and virtualization, concurrency and parallelism, data structures and algorithms, compilers and interpreters, security aspects, and more.

  11. "Tech Lead" is not equal to "React developer", "Tech Lead" is not equal to "Node developer", "Tech Lead" is not even equal to "Fullstack React + Node developer". "Tech Lead" must be a "Software Engineer" in the first place. The particular technology or tech stack is the secondary aspect. If tomorrow we decide to switch from MongoDB to PostgreSQL, or even to move from Node to Python - the Tech Lead can still apply 60% of his knowledge and just catch up with new technologies. Sure, switching from Python to Node or vice versa is a very difficult challenge, but for the Tech Lead it's just a matter of time available to spend learning and practicing the new stuff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment