Open rogerxu opened 5 years ago
The most important are sincere empathy, crystal clear communication, and technical excellence.
View each team member as a human being first, and a talented contributor second. Humans need relationships built on compassion and cooperation. It is the Tech Lead’s job to foster such an environment, and such environments are engendered through an attitude of service.
The Tech Lead’s job is not to micromanage, but to be a service leader, which is to say they are there to support their team, to serve them as though they worked for them (not the other way around).
The Tech Lead is responsible for communicating their project’s status to other departments in two forms:
A great Tech Lead knows how to break a project into meaningful and easily digestible tasks (digestible means about three days scope).
The Tech Lead must take time to thoroughly review the project’s specifications and do their best to break down the specification into trackable tasks with a scope of 1–5 days of work (outside Code Review / QA), and an optimal timeline of 3 days.
Each issue (or 1–5 day task) must clearly point to the portion of the specification the issue addresses and to the concerned areas of codebase (if they exist).
Milestones deadlines are hard to estimate, but we asks that the Tech Lead do their best to place a realistic date on them. This constraint might seem limiting at first, but we treat deadlines more as focal points (with mitigation strategies) than immovable dead-lines.
The Tech Lead should organize one ~30-minute project meeting per week, preferably at the week’s start and early in the day, whose agenda looks like the following:
Every engineer is asked to report their on-track
/ off-track
status each day to #status-frontend
or #status-backend
accordingly, and it is on the Tech Lead to confirm those daily.
The general rule is a team will include three members, including the Tech Lead.
An Action Team might contain seven members, including a Tech Lead who can divide the team into two groups (of three) and focus each group on parallel tasks within the feature’s overall scope. It is then up to the Tech Lead to create a single Team Lead for each group and hold them accountable for their group’s work.
There are two ways of designing a team.
We ask that the Tech Lead optimize for feature efficiency where possible.
Instead of precise estimates, give your best guesstimate for a given task and multiply it times four, especially if that task involves uncovering an unknown.
Be sure to identify which tasks are associated with discovery (finding unknowns), and which have more concrete definitions.
Just treat the 80% point in your project as the halfway marker.
When you estimate deadlines, set a date for code completion so that QA can have time to discover any bugs or UX issues.
On delivery, plan to leave some time to fix any immediate bugs before starting new milestones. The amount of time can vary based on the deliverable’s complexity, and a week is usually a good window.
While the scope of a feature might require months and months of work, its versioned milestones should aim for six-week timelines, including QA, so each milestone is code complete around four weeks.
A six-month project’s major Milestones may then look like this:
Do not branch off of feature-branches
. Tech Leads should aim to have their team commit their feature-branches
directly to dev
rather than to another feature-branch
that is kept up-to-date with dev
. Long-lived feature-branches
often introduce code dependencies and other programming patterns that require cherry-picking and other hard-to-keep-in-sync-with-other-branches issues. Instead, the Tech Lead should place their project behind a Feature Flag and continually merge it with dev
.
We encourage all of our engineers to push code every day (if possible), and to prevent a new feature from stepping on the toes of our users, we suggest Tech Leads place those new features behind a “Feature Flag” that can be toggled.
There might be a case for a long-lived branch to which other branches commit. And by “might”, we mean maybe 1% of the time where we must refactor a critical, widely-used portion of our infrastructure. So, basically never. Please inform the entire team, your product manager, and your engineering manager of your intent.
The Effective Tech Lead is a 100x Engineer – Hacker Noon
leadership/tech_lead.md at master · webflow/leadership