Ask HN: Advice for a new and inexperienced tech lead?

766 points by Voxoff ↗ HN
I'm only a mid-level developer. I've been offered a position as a tech lead with the aim of building a team. What advice would you give a new, inexperienced, and ambitious tech lead?

Thank you HN

258 comments

[ 4.4 ms ] story [ 277 ms ] thread
Your role will probably change drastically. Keep an open mind and be ready to learn a lot of stuff that is not only writing code.
Read at least the first few chapters of Camille Fournier’s The Manager’s Path.
+1 to this. I read this book when I was new to management but found myself wishing I had read it earlier in my career. At least 50% of the book is really about the tech lead ladder. The topics on the management career path which much less concrete and flushed out IMHO. But the sections on technical leadership were really good.
Another good book to read: Radical Candor
+1

I'm not a manager and I found a lot of value in this. I now ask my manager and my peers for immediate feedback anytime I lead a meeting. I've also adopted the habit of providing unsolicited feedback.

Read "7 Habits of Highly Effective People"
Why is this being downvoted?

I haven't read the book, but it has 5 stars on Amazon.

So what's wrong with the book that multiple people downvoted the suggestion?

The Manager Tools podcast is a good guide to learn management skills.
Empathy. Definitely practice empathy. Hacking brains is a lot more difficult compared to hacking code.
Focus on results, transparency, trust, iteration
A good leader doesn't compete with others- they bring out the best in others.

They assume the best of others.

They lead by example.

They are a facilitate as much as they delegate, and they don't lose sight of the fact that you can't lead from the trenches.

A good leader remains objective when it's hard to do so, and doesn't take it personally when somebody disagrees with them.

A good leader is kind, humble, and willing to help.

A good leader doesn't back down from using a firm approach when it's needed.

A good leader doesn't apologize for doing things that have to be done (discipline, firing etc).

> A good leader doesn't compete with others

Agreed. Unless a leader is taking the responsibility for a failure (which they should!), the leader should never say "I". When talking about a success it should focus on the team, and is okay to point out individuals who did great work.

I cringe every time I see a lead/leader present team work and say "I" over and over.

I think it's okay to use the plural "We" for both successes and failures, even as a tech lead.
Sometimes a firing is a failure of the leader. Recognize that. All people have the ability to drive 110% on anything. It is the leaders job to find that spark and ignite it in his employees. A firing is a failure to do this and is sometimes necessary.
>All people have the ability to drive 110% on anything.

I don't believe this statement... I generally assume and believe the best in people but after years of working at large tech firms... some people are literally there to put in minimum effort needed to not get fired. Some people are actually even worse and will actively drive away the high performers with negativity and nothing you do or say will change their opinion.

Yeah these people exist. But even these people have something that will drive them.

I'm not saying that you have to find the spark or that even everyone has the ability to find it. Sometimes, the challenge is so great that it's just not worth it or beyond your abilities.

But it's still there for everyone. If you're really really good, you can find out what it is for most people and trigger it.

>Sometimes, the challenge is so great that it's just not worth it or beyond your abilities.

Yeahhh. Sometimes, as you try ever harder to enable someone to succeed, you eventually realize you're becoming their therapist. Sometimes, you realize that enabling this one person to succeed would involve neglecting everyone else. Sometimes the necessary acceptance, equanimity, and nurturing are of such an absurd degree that it looks like special treatment, or indulgence, to any third party.

> you can't lead from the trenches

Not sure why this analogy is applied to software development. The best managers I've had lead from the trenches where we all work.

It's not a matter of workload, it's a matter of perspective.
It's a myth that it's not possible to maintain a holistic perspective that melds both the trenches and the command tent behind the lines. The best technical leaders I've worked with were the best because of precisely this: the ability to contextualize trench level decisions within command center level perspectives and vice versa.
You seem to already have it, but admit what you don't know, and don't be coy about it. You will learn from those below you as much as from those above you.
Read everything you can from Camille Fournier and consider attending (or at least watching all you can) the next LeadDev conference closest to you.
Few things I would like to say:

It will no longer be about you. It will all be about your team. Make sure you create a great team, nurture them, train them, teach them how to think critically (in doing so yourself).

Ask your team to write out everything they plan to do before they actually do it. Reason with them on what they wrote and what approach decisions they plan to take. Teach them to think long term. Writing before actually doing the task helps get a lot of clarity to them and also helps you in assessing what they were planning to build. (It also makes for a great log of what we did and why we did it. This will be the product documentation for your entire product tomorrow.)

Treat your team like your family. Do not stress them out with too much work. Be respectful of their time and effort. Give them breaks post completion of major tasks. Every second that you let them rest and breathe is a second you have invested in the future. They will recharge and put their best in the next task.

You have a tough job of standing up for the right long-term tech decisions. Stay loyal to your product. Work for your product - not your company. Take tough tech decisions that will stand for the long term stability and robustness of your product. But occasionally make allowance for your business team too.

Sometimes your teammates might shy away from a big daunting challenge - step in and work side by side with them to tackle it. But do this infrequently.

There is a lot to add to the above list but in general the idea is to help your teammates grow, help them think critically, stand for your product - make the tough calls.

All the best!

The pre-formatted text is really hard to read.
It will no longer be about you. It will all be about your team. Make sure you create a great team, nurture them, train them, teach them how to think critically (in doing so yourself).

Ask your team to write our everything they plan to do before they actually do it. Reason with them on what they wrote and what approach decisions they plan to take. Teach them to think long term. Writing before actually doing the task helps get a lot of clarity to them and also helps you in accessing what they were planning to build

Treat your team like your family. Do not stress them out with too much work. Give them breaks post completion of major tasks. Every second that you let them rest and breathe is a second you have invested in the future. They will recharge and put their best in the next task.

You have a tough job of standing up for the right long-term tech decisions. Stay loyal to your product. Work for your product - not your company. Take tough tech decisions that will stand for the long term stability and robustness of your product. But occasionally make allowance or your business team too.

Sometimes your teammates might shy away from a big daunting challenge - step in and work side by side with them to tackle it. But do this infrequently.

Srry about that. Just updated it to regular text.
I would say you need to stand up for your users not your product. A gorgeous code base that doesn't do what your users want doesn't help anyone.
I don’t know.

It is important to listen to your users, but not necessarily do what your user’s want.

Especially in the context of the user’s role.

Adding a thousand requested features also has its drawbacks.

It's definitely a balance. I should have phrased it as "make sure the product satisfies your users needs" rather than their wants. And this isn't to say you should add a thousand features, but I do believe it's important that tech leads goals line up to users, not only to the technical excellence of the code. You can't make good decisions on technical improvements or debt reduction without balancing users needs. It's easy to build a straw man example that is on the extreme end to demonstrate this, so I won't do that. The day-to-day is more nuanced.
As a tech lead, you bother about building the features that the business has identified - and building it in the best way possible, thinking long term about the product. While as a business decision maker, you focus on what your users want - else you will be out of business fairly quickly.
Tech lead is responsible for maintainable code, somewhat anticipating changes in business, so tech lead is a Jedi :)
They go hand in hand unless you plan to quit within a year and leave someone else to clean it up.
This is more or less my definition of the term "product engineering".

The one caveat is to be sure to also think about your team members as "users" of the code base.

Agree. I much prefer the term ‘product engineer’ to all previous titles. It shouldn’t be a cargo-cult switch where everyone starts calling themselves one, but it is by far the best title as a guiding principle to what we are meant to be doing.

Also, I think we are going to see further evolution in the software industry where the current middle-mgmt layers get wiped out. You are either contributing directly to the product - and you can easily measure that - or, you need to get out of the way.

DevOps is a drive to reduce the number of vertical organisational ‘layers’, ProductEngineering would be a drive to reduce the number of horizontal organisational layers.

IMHO.

If one defines gorgeousness as ease of grok, then gorgeousness directly contributes to the wellbeing of users through maximizing the technology's ability to quickly and effectively adapt to their needs as they arise. Agreed that it's a secondary concern to fulfilling the featureset.
I don't think "ease of grok" is the sense the original commentor meant :)
Could definitely be true! I personally have a hard time imagining how code could be pleasing to the eyeballs by any other metric than how easy it is to understand.

IMO a clever one-liner or a hyper optimal routine that takes minutes of staring to decode isn't gorgeous, but you're certainly right that many would disagree with that. IMHO this philosophy runs directly contradictory to the one in which leaders empower those around them.

A gorgeous codebase is not a product without relevant users to consume it.
In my opinion they are the same.

If you stand up for your product, you are standing up for your users, or your clients if that's a less ambiguous term.

For some teams, for example a lot of teams in Google and Facebook, the end-users are often different from the Product's clients; the client of Google's Chrome is Google's empire. The programmer that added the X-Client-Data header undoubtedly improved the product, at least short-term-business-wise, while actively harming it for end-users. Someday end-users may leave if they continue to erode trust, but for now it's a boon for the Product.

Edit: Please don't work on those products. Please develop products that respect people. If you develop trust, and actively respect people; I posit that a lot of people will opt-in to reasonable analytics, and even advertising. If many don't now, they might when the dust settles.

If you find yourself teaching your team take a step back.

The best managers build super star teams and gives the teams ownership and autonomy. You are in a good position if the team is teaching you, not the other way around.

Try to build a team made up of people technically superior to you. And give them ownership, this is key. It is not just about finding engineers who take ownership. It’s about giving engineers ownership and getting out of their way.

(comment deleted)
This is exactly what I'm experiencing with my boss and I love that!
That depends on what tech lead role means in OP's context. It might me a team lead, in which case you are right, or something like coding architect which is usually one of the most senior members of the team with additional soft skills. Such person is expected to teach others.
I think every organisation has people of different aptitudes, intrinsic motivation and interests. Building a team of superstars is meaningless. It's the management version of "make it better" or "it doesn't work" type feedbacks that don't give any necessary insights to actually do it. Building a team of people technically superior to you? In what way. Does your devops guy need to be an expert in language design?

On the subject of teaching your team you're right however. Instead aim to create an environment that fosters sharing. In my team I created a weekly tech share which the team does on rotation. It's been great for harmonising the team.

>I think every organisation has people of different aptitudes, intrinsic motivation and interests. Building a team of superstars is meaningless. It's the management version of "make it better" or "it doesn't work" type feedbacks that don't give any necessary insights to actually do it. Building a team of people technically superior to you? In what way. Does your devops guy need to be an expert in language design?

I'm just talking about the ideal you should strive for. Given the opportunity this is what you should try to do. Of course like many ideals, you rarely have the ability or resources to fully implement the ideal.

Building a team of collaborators with a baseline of technical aptitude and a willingness to learn is what most people should strive for.
Agreed 100%. I'm talking about above the baseline; the ideal. We are just talking about different aspects of the same thing.

In order to approach the ideal you must have intrinsic knowledge of the baseline as well. Good point.

>Building a team of collaborators with a baseline of technical aptitude and a willingness to learn is what most people should strive for.

What I meant to say is, your philosophy of building teams is for inferior managers. People who cannot perform above the baseline.

Normal and high performing managers always strive for hitting something above the baseline. Not to be insulting, but logically if you think this way than you must be inferior. Just speaking out of pure logic, no malice intended.

This does not apply in all circumstances. My jump into tech lead came as the old tech lead (15+ years xp) and young superstar(~4 years with wisdom beyond his years) departed from it.

The replacements were a developer just coming off a PIP and a new graduate with zero industry experience, having not interned. I still kept the focus on developing the team as much as possible but the candle needed to be burned on both ends: taking on a large majority of implementation whilst quietly fixing mistakes made as to not shake growing confidence were commonplace throughout the first 6 months.

Towards the end of our involvement in our product I’m proud to say that both developers had outgrew their ranks and delegation and trust came without thought. I was pretty close to burnout by the end of that year if I’m honest with myself though and my own career progression has without doubt stalled due to it

(comment deleted)
I'm talking about an ideal to strive for, so of course this is rare.

If you want to do management long term and manage bigger and bigger teams without burning out this is what you need to strive for and ultimately impliment aspects of this if you can't impliment it fully.

For bigger teams you even need people with superior management skill sets in order to delegate.

> I was pretty close to burnout by the end of that year if I’m honest with myself though and my own career progression has without doubt stalled due to it

Sounds like you had a tough time but empowered the team to succeed. Maybe with some personal cost to yourself.

How would you approach the situation knowing what you know now? What would you do differently?

Respectfully disagree on the "write it out first" advice. I'd argue "think it out first" or "talk it out first" is sufficient.

I found while scaling my team tended to bury themselves in miles of docs that really did not serve the customer or the company. A janky kind of working prototype of a solution is worth a ton more than a well thought out doc.

If you have remote teammates or may have any in the future (i.e. if your company allows remote engineers), a culture of writing things down is imperative.
Consider that a successful product will be maintained for years. It is highly likely that a people will come and go. Documenting already running code will inherently have less priority (both in the eyes of upper management an developers- the temptation to jump on the next project is huge). So if you don't start documenting first- odds are you never will.
My team has a rule- if it's not in writing at a permalink it doesn't exist.

A simple 2-3 line github issue is often enough. what and why.

I disagree with this. Writing a set of "technical objectives" that say how a thing will work takes an hour at most and it helps you think through it better than a conversation. It also helps you pass information to QA. If someone asks what the thing does, you can just send them the link. Ultimately, taking an hour to write it down pays dividends later on.
I would like to disagree here. Got into a team which has working prototype but not a single word on document. Which makes this hard to follow up with prototype.

Being tech lead in current position, I am stressing "document-first" approch it is either for client or tech team.

This is about as comprehensive as you can get in terms of what really matters in a good tech lead broken down into a few paragraphs. Who needs a book?! :)
Thank you!! I'm moving into a tech lead role as well only managing 2 people, but I need these cheat sheets.
I like the part about writing things down. There is a lot of mental organization that needs to happen when you write it down. It also forces you to make decisions.. which is also hard.
At my current company (small startup) I wanted to convince people to talk through the issues and write things down or write down at least something. Think of user stories, requirements, personas, product vision, company vision, sprint goals.

In my opinion, writing things down helps to clarify your thinking and lets others understand how you think. It also reduces the risk of the devs implementing something that doesn't fix the users' issue.

They think writing things down is overhead, too much "process", too much time. What they (IMO) don't see is that discussing requirements, assumptions before developing a feature (or even prioritizing a feature) helps to establish a common understanding of the issue and the proposed solution.

Finding a way to show them might be difficult, but rewarding.

(unsolicited advice) What I've learned in working on that skill; avoid coming from a position of supremacy, and rely on actions/results to communicate most of the message. Also, a lot of acceptance and patience.

I like to write a lot of pseudo code before real code, gradually digging down into lower level implementation details, so as to not waste time worrying about syntax while making higher level decisions. However, it's taken me a long time to develop what I have of that skill; to feel out the different layers decisions will be made, then write pseudocode with the intent of eeking out and resolving most of them.

Doing so, things end up feeling more like trade-offs than compromises.

Good luck!

The only time I write anything with a pen and paper now a days, for the most part, is when I do 1:1s and check ins with my team. No computers for me. If I need to schedule something it comes after. The team member gets my full attention, no phones, Slack, email, or anything getting in the way.
A related aspect of organization and making decisions is meetings.

Meetings, other than 1 on 1 meetings/collaborations, are best for making decisions, NOT for sharing information.

Information sharing relevant to the decisions to be made should happen before the meeting via group emails (or possibly through a software tool like Jira) with questions and responses. Written information is easier to reference, quicker to search through, and can be multiprocessed in that multiple people can share information or ask questions simultaneously. If additional information is needed after the fact, you can email after the meeting.

Going into a meeting about building a feature or product for example, you should know the constraints on that, and be able to weigh them in making the decision. When is it due? Who is available to work on it, who will test it, who will maintain it, and who is it for? What aspects/functions are necessary, and what are merely desirable? What resources are available? Why is the feature being added? How might it be constructed?

Finally, be ruthless about moving forward in meetings to get to decisions. If a couple of people agree on something, and begin to quibble over the details? Ask if anybody is opposed to that general idea or has a better one to offer. If not you have made that decision, and can decide on the details, but if so, the detail discussion is premature. It's quite probably also premature if you haven't decided who is going to work on it; the point is you want to nail down the higher level decisions, not get lost in the weeds.

Amazon just assumes that nobody will read the prep material and reserves a block of time at the beginning (as long as 90m IME) for silent reading and markup. Seemed to work pretty well.
I think your advice is great for tech leads at big companies, but for tech leads at startups, I have to disagree with the point about "Work for your product - not your company."

At a startup, the business objective has to come first and the engineering team has to keep the bigger picture in mind. "Long-term stability and robustness" won't matter if your company is dead. Build for the short-term and build fast while you are figuring out product-market fit. Move fast and break things.

I see where you’re going, but I think the advice still sticks.

If you’re at a startup, your product is your business.

The point about not hesitating to move fast is the biggest difference between startups and mature companies.

Depends if the product is a key profit center. If your startup is making a product and it's not a profit center, it might get binned, it might get pivoted, it might postponed. The advice is great, just don't die on a shortsighted engineering hill when the decision come from emotional attachment to your work rather than what's best for the companies positioning and financial health. You can always put that love and energy into a new/pivoting of the product.
> If you’re at a startup, your product is your business.

Your product is whatever you end up with after the long tenuous period of being startup, which often evolves/pivots drastically over time. Your product is your ability to execute.

The problem is if you're at a startup you probably don't know what your product is, because you don't know who your customers are.

My last startup died because we committed too hard to the product and the business model, which while innovative and one that I still believe could have succeeded - we utterly failed because we didn't understand our customers and we didn't pivot fast enough, ran out of runway and then everyone but the founders got laid off. Waiting on hearing about the equity.

If I may function as the devil's advocate - One can read the above as a claim that because you didn't have a good business guy engineers should have worked faster? Would a faster product iteration worked if the business acumen would still have been missing?
I don't think the argument is that engineers should work faster. It's that they should be willing to skip some of the stuff you would normally say is good practice in order to ship features super agile and make any necessary pivot easier.
It wasn't a lack of features so much as a lack of talking to people that had purchasing discretion. Never focus on users in B2B, focus on people who have the ability to approve a purchase order.
It might have. Part of it was arrogance and bad advice from VCs, not lack of business acumen. There was a rejection for industry practice because we were different and doing something different, but it wasn't actually different and couldn't monetize because we focused on users that couldn't pay us real money, while working in an industry that doesn't value innovation.
As a tech lead at a midsize company (~300 employees) I have to agree with this. There seems to be a strong tendency among tech teams to always push back on everything that business wants. We need to remember that we’re on the same team.
That only works if tech team is evaluated and measured with the same objectives as business teams.

I've heard so many times "think of bigger picture".. but when we did the tech team got kicked down - as we didn't achieve our own objectives because we sacrificed them for "bigger picture".

I agree with you that you have to work for the company objectives.

I think at a start-up the correct decision early on is to take on a bunch of tech debt, but then pay it down as the horizon of the company expands.

Early on, you need to iterate fast on a few key flows and make a product that people want, but once you get product market fit, things like scalability and reliability start mattering a lot more and you need to pay down the debt.

The issue comes when the company's objective is actually to build a reliable, stable, long term product, but it is still in startup mindset of "ship this feature by yesterday at all costs", and expects the rest to come for free.

This isn't universally true. It only applies to a segment of "pioneering" startups. It will hurt a startup otherwise.

There are different types of startups. Not all startups are working on novel discoveries and exploring new frontiers. Zoom built a better video conferencing platform by not moving fast and breaking things.

Startups often only have 1 product, so the advice still holds true
I agree with your comment and particularly this part:

> It will no longer be about you. It will all be about your team. Make sure you create a great team, nurture them, train them, teach them how to think critically (in doing so yourself).

When I had a TL job, I basically relearned the word "team" during my very first weeks. It was an amazing experience.

Don't forget that each member of your team is a unique individual. Just like raising kids, there is not a one size fits all formmula. Get to know each member of your team on a personal level. This will go a long way in building trust and being able to lead them effectively.
Assume that, for the people on your team, work is a #4 or #5 priority. And there's nothing wrong with this, as long as they're giving you a solid 80-90% effort during working hours.

If you ask them to put work ahead of family or faith or rest, or if you somehow expect more than 100% effort from them, you're going to drive away the ones who have other options. And the reason they have other options is because they're the best ones.

I always say people have five productive hours per day. I ask they give me four of those on working days.

This applies to creative work: development, document writing, content production and similar. Meetings, sales, email and other types of interactions are less taxing.

Meetings, sales, email and other types of interactions are more taxing.
This is a personality characteristic. For me, meetings and sales are definitely a production that tax me enough. I want to quota how often I do them. (Sales, preferably never.) Some people get positively powered up by sales or meetings though.

I’ve even had medications turn meetings and such social interactions around for me. So I know it’s not a universal truth one or the other way.

I don't mean to downplay the effort of interaction-type tasks. It's the result of observing people around me. I know many people who are happily productive on sales for 12h workdays. I know no developer who's proud of code written on the 12th hour.
Don't assume that these sales people are so happy to work overtime. They probably rely on commission and/or need to hit that sales target. Sales teams are known for super-competitive, target-driven, and high-pressure culture. We software engineers have it easy in comparison.
The truth is that the "best ones" are often obsessed with their work and endure painful tradeoffs in their lives, for example their family lives, because of it.

People who do great work tend to think about their work all the time. No one thinks about their fourth priority all the time.

I've never met someone who consistently put in 10+ hour days and also was good at what they do.

I have observed an inverse correlation between consistent, unasked overtime and ability.

I'm talking about thinking, not sitting in an office.
I’d like to add to this. Not only should you not ask your team members to put work above their own personal well-being, you should actively be challenging people who are doing that unasked. Every company will have an occasional time when extra effort makes sense, but if you’ve got people who are consistently working 10 hour days, or doing work at weekends or on holiday, it’s your job to deal with that. Find out why they’re having to put in that extra effort, then fix it.

Often this will be a case of one person having all the knowledge of a specific thing and needing to pick up any bugs around it, sometimes it’ll be that they’ve been given a task they’re not equipped to do. Occasionally they’re just not very good. Those are the cases that are reasonably easy to deal with.

The worst cases are the true believers - people who are so bought into the company, or the work they’re doing, that they just want to be working every hour of the day. The temptation will be to shrug your shoulders and count yourself lucky that someone is willingly doing a bunch of extra work for free. Don’t let them do that, because otherwise they’re going to burn out at some point, at which point you’re stuck with a bitter wreck of a person dragging the rest of the team down, and also suddenly lost a massive chunk of productivity that was carrying projects.

This sort of thing is especially common in early stage startups, and I’ve on occasion had to go round the office kicking people out. On one occasion I had someone go on holiday but continue popping up and doing things, eventually I had IT disable all their accounts for work systems until they got back.

The other thing around this I’d suggest is not to let a culture of rewarding heroics to build up. You should see every case of someone having to work a 100 hour week as a failure, even if it meant the project got shipped on time, or whatever fire was burning got put out. Post-mortem it, and then fix the root cause.

I would advise you to not take the position. It would be a disaster in my opinion to attempt to be a tech lead without years of experience at the senior level. Your high level engineers will catch whiff of your lack of experience. Your mid and associate levels will not accelerate as fast as they could have, and you will feel over your head. You will essentially be Peter Principaling yourself.

If you are going to do it, read a ton of books. Minimum in my opinion are: 1. The Managers Path -- general advise 2. Coaching Habit -- for performing 1 on 1s 3. Extreme Ownership -- for building an effective culture that delivers results.

It won't be a disaster as long as they're humble and willing to learn.
My direct report is humble and most willing to learn. That doesn't mean they aren't at the end of the day still a very green associate developer with 7 months of experience so far. Any talks about reaching senior developer status any time soon would be a huge disservice to their development. We need to first talk about what being an exceptional associate developer looks like, transitioning to being a mid level developer.

You can't shortcut these things.

Really good coding/architecture skills or able to collaborate and seek opinion and input from others.

For me as long as people have one or the other I can work with it. I've often been in scenarios with people that aren't good and won't collaborate and THAT'S the hell.

Obviously both is best but the skill set is rare. I'll happily take someone that defers to me and trusts my judgement over the HELL. Its not ideal and doesn't result in the best outcomes but its still workable.

I think it depends on the context. if the organization is overall reasonably competent and the engineers turn out to be relatively low drama this can work out great.

some dev organizations I have use a rotating release shepherd osition (gatekeeper). it usually works out pretty well, and junior engineers get a taste of what its like to live on the other side. its perfectly functional for a senior engineer to mentor a junior manager.

the one thing that concerns me about this story is hiring. my first tech lead position they gave me some heads and I promptly hired two smart-talking bozos with years of experience that wasted my time for several months until thankfully one of them quit and I got up the courage to fire the other.

(comment deleted)
This except replace first paragraph with " Believe in Yourself ".
Speaking as a team lead, the most important thing is to know what your expected role is - are you a manager? Are you in charge? What does your boss expect of you, and what does he expect of your peers?

You succeed when your team succeeds... if they don't, then you don't.

In my case, I don't have any authority other than influence. That's ok, it also takes a lot of responsibility off my plate.

If you have authority over people, know that you can tell them what to do if you have to, but if you reach the point where that's all you can do, you've failed.

Knowing what's expected of you by whom is important regardless of your role. And also team success over personal success -- you have to be in some petty backstabbing nonsense for those things to not be tightly related.

I have a Lead title at work, but like you I don't have any authority over anyone. So I don't really have any advice for the OP, as it seems what "lead" means varies so much from company to company, and to me as soon as you get in the business of authority you really need to start thinking about management, not tech, to which I can only suggest read Deming.

I think my ideal model for 'tech lead' is something like how (I've heard, could not actually be the case) Bryan Cantrill at Joyent operated. Even when he was VP Eng, and later CTO, he still was involved in code, and generally engineers there both "led and were led" without very hard cut roles on that axis.

Listen. Protect the team.

Don't let ambition get in the way!

Remember that great teams are not necessarily homogeneous. This means you might need to tailor parts of your process around your team as opposed to trying to make your team fit the process. This also means that there is no perfect template for "developer", because of this you might want to consider a mix of creative, workhorse, meticulous, etc.
I found the hardest part of becoming a leader is trusting my own judgment, intuitions and decisions. The "Disney" quates for managers like "it's the team that succeeds" and "you don't accomplish tasks, you'r team does" led me to disregard my experience and allow engineers to dictate most of the design, which turned out rubbish. I knew better, had solid arguments for my design, yet I let the team proceed with an inferior solution in the spirit of enablement. The customer payed the price.
0. Find other TL mentors.

1. Remind yourself daily that the metrics you've used to gauge your own productivity or success until now do not apply. It's really hard. Resist the temptation to do non-TL things if it will affect your TL responsibilities.

2. Find other people who have more/broader experience than you do, and pay attention to the perspective they provide. There are many people who know more than most TLs but don't want the role themselves. You can help each other.

3. Remember that lead is as important as technical in your job title. Your role is to bring people to a place they're not already. Figure out what's missing in your project and/or your team members' skillsets. Those are the things that it's your job to address.

There’s great advice in the other comments already.

One additional resource I would recommend is https://devtomanager.com , which is a list of interviews with other developers on how their transition was like.

Good luck on your career move!

(comment deleted)
Sometimes this means a bunch of things. For clarity, are you supervising people on the team or mostly guiding the team's work on a specific product?

In addition to others' recommendations about reading "The Manager's Path" (this is a must-do! An excellent book) I would take a look at how the team makes technical decisions and make sure that's healthy, and also make sure you have an understanding of the core value your product is trying to deliver by talking with your Product Manager.

If you are the defacto Product manager, make sure you know what the business is trying to accomplish so you can build the right thing and prioritize appropriately.

The more I do this work, the more a clear, open, decisionmaking process and a clear understanding of the value increment power everything else. Context and a way to talk about it.

One other note: your job will change. Know that. Be OK with it.

Good luck!

I was in this exact position a few years ago! I led a group for a year and a half, with somewhat mixed success. We did some pretty great successes, but also some pretty embarrassing problems that were at least partially attributable to my inexperience. I learned a ton though! The below is my experience, and may or may not translate to yours, but believe me, it was learned the hard way.

Being a tech lead is only partly about the tech, and mostly about the lead. You'll ultimately succeed or fail based on your team.

Being an effective leader requires a completely different set of skills than being an effective engineer. This, as silly as it sounds now, took me by surprise. You may have a decade-plus of dev experience but still be starting from zero when it comes to people. (Or not; some people will be better equipped for this than others. I wasn't so much.)

Find a mentor. Someone you can be completely honest with, and who will be honest with you. Bonus points if they know your team well too -they'll see things that you won't.

You may have to be pretty intentional about finding out what's going on in your team. Once you're in a position of authority, people won't always feel free to tell you.

Share as much context with your team as you can. They'll be more motivated if they understand why their work is important and has value. Even if you understand this... people aren't mind readers. They don't know what's in your head.

Part of your job now is to be available to people. This may mean you don't get to actually work on the tech yourself as much (or at all). It may mean you get interrupted more. That's may or may not annoy you, but you need to make the best choices you can for your team now, not (just) for you.

Share success when you can. You may find yourself in situations where people attribute your team's success to you... and while that's not wrong (you're the lead after all) it's also a great opportunity to share credit with those in your team. It's worth so much to people when you do this.

People are not interchangeable, and treating them as if they invites trouble. You can have great people, who still have a hard time working together for whatever reason. Be aware of inter-team dynamics; they can sink you. (Situations like this are why it's great to have a mentor.)

It's important to keep a close eye on how things are going, but don't confuse that with micro-management. Your best people are going to want some autonomy, and it's best for everybody if you find a way to give it to them. If things aren't going so well your instinct may be to tighten your grip... not necessarily wrong, but consider that may come across as a lack of trust on your part.

Above all: think of your job as less about being in control (though you may be) and more about fostering an environment where your team can do your best work. Get them what they need, shield them from the crap, give them what opportunities you can. Don't be selfish or mean. Be kind, be empathatic.

Good luck.

The advice that I was given when I temporarily took a team lead position is to overcommunicate everything. Build good relationships with the people you report to and your peers and (hopefully) you can lean on them and ask questions as you learn and adapt to this new role
Great absolute clarity on what is expected of you by your manager. Tech lead roles have a mix of manager-light bits and your manager may have very specific ideas as to what the role ‘looks like’ or ‘feels like’. You need that info to succeed.
Absolutely this. There's a lot of nice talk in this thread about empowering and enabling your team - but in my experience, that's not what companies are hiring tech leads and managers for. They're hiring you to get stuff shipped!

So understand your own manager's approach to management, and make sure you're aligned with it. Recently I was in a job where my own "servant leadership" style clashed quite badly with my boss, who was much more focussed on management "driving delivery" of projects. It did not end well.

Don't assume what motivated you as an engineer applies to others.