← Back to Roles
Be technically adept yourself
- You can’t teach someone something you don’t know
- Be very comfortable developing a complete full stack application by yourself
- Know how to learn
- You can (and should) trust your teammates to figure out how to make something you don’t know yourself, but you shouldn’t have to depend on them
- Have a very good grasp on what good/bad code is, why something is good/bad, and fundamental software design principles and their tradeoffs
Engineering design
- Technical Architecture
- System design/DB schema/API structure/Integration with frontend
- Ideally your entire team will be involved with this as you facilitate the process, but the tech lead is ultimately responsible
- Project Implementation Scoping
- Understand the limitations of your team’s capabilities and your project’s development timeline
- Given an example product, you should be able to understand fundamentally how it works, be able to dissect and analyze the implementation details, and have a rough idea on what tools you will need
- Plan how to break down tasks
- Keep the project’s future in mind (sustainable, scalable, customizable, etc.)
- Deciding on yourTech Stack
Team growth
- Code Reviews
- Perhaps the best source of growth for team members
- Be very strict, while also accounting for time and development priorities
- Pair programming (especially to help devs with less experience)
Code!
- Setup boilerplate/app structure/etc.
- A team member can do these things if they want to learn, but their responsibility/priority should be to design and develop features that they can “own”
- High level glue
- Help team members integrate their features with the rest of the app