Tuesday, April 14, 2020

Technical Team Leader

A software technical team leader's main responsibility is to make the team better, because that will result in highest efficiency due to each member becoming a better version of themselves. Examples of duties of a techlead:
  • Review/refactor design and documentation that the team produces. See Scrum sprints.
  • Review code, optimize/refactor for comprehensibility, speed, memory and safety. This will keep you up to date with the code.
    • Evaluate and select code analysis tools.
    • Evaluate tutorials and point team members to them.
    • Use stack instead of heap.
    • Solve difficult technical challenges that are beyond the capabilities of a team member.
  • Assist in solving difficult problems. Since you have been continuously reviewing design and code, you won't need extra acclimation time.
  • Review issue definitions and refactor for comprehensibility.
  • Review commits to repository (commits should be multiple times a day, not once a week)
  • Write simulators/emulators for external hardware and software components
  • Write initial versions of build scripts. Scripts will be maintained by juniors.
  • Write initial versions of setup scripts that makes setting a development environment as simple as a single mouse click.  Scripts will be maintained by juniors.
  • Find ways to decrease build times, create tutorials.
    • Disable antivirus
    • Use Linux instead of Windows.
    • Precompiled headers
  • Optimize IDE settings, create tutorials.
    • Shortcuts
    • Folder view
    • Output directory = bin
Notice that the list does not contain product work because fulfilling the above would take a lot of time. Product development consists mostly of repetitive/boring work that a junior can handle with guidance of a senior. By freeing the techlead from those chores and making him a team mentor and solver of only hard problems, you improve productivity of everyone.

No comments: