At the company I currently work at we have "tech lead" (lead dev) as a role within a project: it is not in your function description. As you grow as a developer you will take on this role again-and-again in ever larger projects, it helps devs to grow.
I've copied the section below from our wiki, to show what we consider to be part of this role. I'm interested to hear what anyone thinks of it.
# What is expected of a lead developer?
* Technically in charge of the developer capacity within the project team
* Works in close cooperation with the PM and is crucial in technical meetings with client.
* Explains technical choices
* Recognizes when client wishes (tend to) go out of scope
* Facilitates efficient software development within the team
* Involves other parties when needed (i.e. ask designers for input when needed, etc.)
* Also develops prominent parts
* Understands the technical architecture
* Assesses (judges) any design-input for being complete and realistic (a check-list exists for this)
* Oversees software quality: has decent knowledge of all used technologies
* Knows best practices (i.e. w.r.t. security, documentation, testing, SEO)
* Verifies and then moves post-its from "verify" to "done" (except his own)
* Escalates to PM/AM whenever he/she foresees planning goals may not be met
* Can estimate the time it takes for his/her team to complete common tasks
* Possibly: technically architect the software at stake (for technically challenging projects we have an architect role)
* Possibly: supply time estimations for the project planning
* Chooses the tools and technologies used for the project (within the lines the architect has set)
* Allocate tasks over the team members, detailing the planning
* Takes the lead in translating requirements to tasks (Post-Its)
* Can deploy the project
* Knows the processes of our company
* Identify process improvements and speak them through with PMs/ AMs/ head of technology
* Applies the final checklist (and improves upon the list when possible)
As a "tech lead" I think this is a great list of expectations. I don't allocate tasks on an individual basis, but I may suggest an individual dev work a track of features. I also work with devs from other companies who work with our products and APIs. I like to think I have a tactical view of the problem space while my VP or CTO works strategy.
Very useful list and I kind of like the idea of having "tech lead" be a project-based role, rather than your job description. It will definitely force more accountability.
I've copied the section below from our wiki, to show what we consider to be part of this role. I'm interested to hear what anyone thinks of it.
# What is expected of a lead developer?
* Technically in charge of the developer capacity within the project team
* Works in close cooperation with the PM and is crucial in technical meetings with client.
* Facilitates efficient software development within the team* Involves other parties when needed (i.e. ask designers for input when needed, etc.)
* Also develops prominent parts
* Understands the technical architecture
* Assesses (judges) any design-input for being complete and realistic (a check-list exists for this)
* Oversees software quality: has decent knowledge of all used technologies
* Knows best practices (i.e. w.r.t. security, documentation, testing, SEO)
* Verifies and then moves post-its from "verify" to "done" (except his own)
* Escalates to PM/AM whenever he/she foresees planning goals may not be met
* Can estimate the time it takes for his/her team to complete common tasks
* Possibly: technically architect the software at stake (for technically challenging projects we have an architect role)
* Possibly: supply time estimations for the project planning
* Chooses the tools and technologies used for the project (within the lines the architect has set)
* Allocate tasks over the team members, detailing the planning
* Takes the lead in translating requirements to tasks (Post-Its)
* Can deploy the project
* Knows the processes of our company