Ask HN: How do I lead a team in whom I have no confidence?

81 points by toqti ↗ HN
I'm lead on a small team of web developers.

The other members consist of:

A Maverick who insists they know what they are doing but clearly don't and won't admit it. Going so far as to add concepts to the code that don't belong (or work for that matter), applying shiny new ideas from stackoverflow that bog down the system where a simple line will suffice.

Hour long tasks for them take a whol work week because of back and forth with PR comments.

The other member is a copy paster who will grab anything from anywhere (old projects, the web) and paste it in and expect something to happen (it doesn't).

I'm going on vacation and all PR's require my approval. I dread the mess I will have to sift through when I get back, could push the project back weeks.

What can I do in this situation?

I'm sure there are many thoughts going through your mind regarding the team and perhaps my lack of managment skills but I am only lead on the project, I don't manage people.

My boss trusts my judgement and is aware of the situation but he is not technical enough to take over the code reviews.

Is there a possible solution to this without adversely affecting the porject?

Thanks

102 comments

[ 0.23 ms ] story [ 169 ms ] thread
Walk away
"If you're the smartest person in the room, you're in the wrong room."
This advice can't used by everyone as there will be a smartest person in any room.
Yes, a good team is one in which members are all intelligent in different domains. For example I’m very good at coding HTML buttons and some of my coworkers are much better at selling them.
This is the right answer. Life's too short, especially when it's not your company.
Do everything yourself to show them how things should be done.
I think you have to set a good example of what you expect from everyone to do or assign some tasks to them and regularly do meetings to assess every progress that the team makes.
Oh god. I'm afraid to say this sounds kind of...hopeless. I don't think it's a lack of management ability on your end. It's that it sounds like they don't even have good intentions. If they had good intentions, you could at least work with them to improve their skills. But if they don't or have some ego issues, what can you do? That's not really in your power to fix.

Can you find new team members? And in the meantime, perhaps do more coding yourself?

I'm doing as much coding as I can but the project management stuff takes time. I'm keeping the critical system coding for myself.

Can't find a new team, manager says this is it and no time/budget to get others.

You're right there is nothing I can do. I'm thinking of keeping the project locked down until I come back. They can still make feature branches in the mean time.

Give your subordinates clear and specific written instructions, eg: "Don't use x technique here, it is unnecessary.". You are the lead, part of your job is to overrule people sometimes.

If they ignore you, or fight with you, that is a different problem.

What this could be is a teaching moment, or series of them, depending on how cooperative or not the team members are.

I get fought and ignored a lot of the time. Hence the back and forth on the PRs. They'd rather show off some cool thing they saw on stackoverflow, having no idea what it does, than learn to do it properly.
Since you don't own the business but are an employee yourself you don't have to shoulder all responsibility for the business' bad decision.

If you can't fix things on your own, escalate the problem. Document and share with the team and upwards the consequences of your vacation:

1. You are not reachable during vacation 2. If they choose to deploy and break production, they need to firefight themselves 3. The team is not resilient since you're obviously the single point of failure.

Tell your boss what everyone knows: This team sucks and it's the boss's fault for building a shitty team. This is a classic pattern, where you have a team in full dysfunction with a lead who is not empowered and a boss who is not aware.

It is not acceptable to divide the leadership that way. You either need the ability to hire/fire and fix that team, or you have to quit.

The Maverick is a bad actor. The copy-paster is a bad actor. The boss is a bad actor. Is it easier to turn this tide or get a better job?
It's always easier to drop everything and find better pastures when shit gets hard and/or bad.

But is it best for your long-term growth? If you're already in a difficult place mentally, it probably is best to leave. But if you're in a good place generally, and up for a challenge, you learn a ton more when you go from hard/bad to easy/good, and those skills are very sought after in the market place.

So if you can gain those skills, I'd go for doing just that. But again, that's not for everyone.

Thank you, I am being as positive as I can!
I can tell, and this is a familiar situation to me. It's hard to remember what a good environment is like when you have been exposed to dysfunction for a long time. I advocate good organizational health, and I can't do that independently if I stay in bad organizations for too long.
Framed another way: is it better for your long term growth to work with colleagues who can teach you new skills, or to try to wrangle a dysfunctional team?

IMO it depends on what you want to learn. If you want to develop your technical skills, it's definitely good to go somewhere that you're not the best dev in the room. Wrangling a team is more management / soft skills.

> is it better for your long term growth to work with colleagues who can teach you new skills, or to try to wrangle a dysfunctional team?

Good point, although I'd consider "wrangle a dysfunctional team" as a skill, granted the team is only dysfunctional because of good management, not if they are inherently bad programmers, too big egos or whatever.

> IMO it depends on what you want to learn

Yeah, that's a good point. That nuance in my comment was missing to thanks for adding that.

How is the boss a bad actor? The OP is being relied on by the boss because the boss admitted he trusts the OP and cannot judge technical talent.

If the CEO of a small company hires bad programmers, then brings in a CTO, and the CTO complains about the team it's no longer the CEO's fault. The lead seems to be listened to.

The boss is a bad actor because they have delegated leadership duties without any authority to make necessary changes. The boss is not able to judge technical talent.
That's not how I read the post. It seemed like he was given authority and is wrestling with how to deploy it.
I did not read that he was given authority to alter the team composition. I hope I'm just wrong, because that's a poor circumstance.
>You either need the ability to hire/fire and fix that team, or you have to quit.

Giving responsibility without the associated authority and power is way too common. If your situation is what I just mentioned, you have only 2 options: either put up with it or quit.

How does task assignment work in the team. Does your manager assign tasks to individuals in the team, do you assign tasks or are you running a more agile style where the developers choose which task they'll work on next?

If it's either of the first two then you could always find them some tasks that they're more likely to get right and make sure they're the ones worked on while you're away.

Compromise a bit, give more detailed guidance than usual for a reduced number of tasks while you're away, accept that the result won't be up to your usual standards and might need to be revisited later. Can anyone else pop their head in to offer guidance while you're away even informally. While you're on vacation use the headspace to plan how to make things better for next year.
You should be transparent about what you do not appreciate (e.g. randomly copying code from unknown sources). About back and forth PR comments, just sit next to them (or call, if remote). I rarely leave a lot comments on pull requests, if the issues is not simple.

Also you should be upfront with the management about the quality of the developers.

In the end I suppose it's more about being afraid yourself of confrontation. There is absolutely no reasons to dread your work (pull request or anything else)

Share your evidance-based expectations with your director/manager. If you surprise them with failure or delays that you knew were likely, it'll be your fault. On the other hand, if you deliver ahead of a previously-broadcast delay because you manage to improve on this situation, you'll be (rightly) recognized for effective leadership.

As for strategies to do that: consider (provisionally) lowering the overall code quality standard, as your team is clearly not up to yours. This is an important practical concession when working with average engineers -- otherwise you'll have an effective bus number of 1.

This seems pretty straight forward, reject the PR's with detailed responses until they are of acceptable quality. Doing so might slow momentum with the project in the short term but should overall make everything faster. Just be clear about WHY you are rejecting the PR's and the quality you expect.
If I was in that situation I would take the time to plan out in as fine detail as possible a task list for each day for each person. There are several benefits to doing this:

- They know exactly what needs to be done and are expected to do, so even the Maverick is placed on a leash.

- You are probably going to return to a mess anyway, but this way you (and your boss) have the task lists to point to as evidence when reprimanding or even removing people from the team down the line.

- You're covering yourself if the project does get delayed. You did everything you could to help the team while you weren't there.

Your boss may not be technical, but if he has these task lists for each person and you sit down and go through them with him before you leave, he can do daily checks to keep them on track.

Finally, switch off and enjoy your vacation. There is nothing you can do while you are away and probably a lot you will have to do when you return, so throw yourself into the break and enjoy it as much as possible.

With a side benefit of demotivating both staff so much they'll probably leave as well. Very clever!
Wouldn't be a huge loss to be honest.
If a team is in a messy state or firefighting mode, an authoritarian and micro-managery leadership style can work very well, and even be appreciated by the team.
Nah, you sort out free spirits and free thinkers and leave behind cooperate bedrock bureacrat coders. But then again, this is the reason why we have startup culture, cause this works so well, the grinders have to pay to get innovation externally.
> I am only lead on the project, I don't manage people.

responsibility without power

>My boss trusts my judgement

looks like classic "delegation", ie. the boss delegated responsibility while kept the power (you only fall for such "delegation" the first 5-10 years in the industry).

One can guess who is going to get ultimately blame assigned :)

>Is there a possible solution to this without adversely affecting the project?

With only 2 people it is actually much simpler to do their job for them. Just send them on a long trip - like some very important future architectural R&D without any need to commit anything in the near term. Doing very important architectural thing they also may get promoted so you wouldn't have to deal with their code :) Best course of action though - just leave this project or this company.

Normally I'd start with the PR comments, since this can be improved the quickest (a month or so) with strong coaching, and will give your team better velocity.

But since your team consists solely of a maverick and a copy-paster, you're in trouble. Normally you'd fire the copy-paster and mentor the maverick (or fire him too if his ego is too big to handle).

Getting into a situation where you have to be the one to approve all PRs is a bad sign, because it shows that you have no trust in the team members. Regardless of the validity of your reasons, this is not good because you become a bottleneck.

Another option would be to look elsewhere.

Make a tag where code is before you go out of office, for emergency restore.

I'd make it clear that everyone is responsible that their own changes work, regardless of what came into the system before it, there are no excuses.

Forbid merge commits (because that's more complex than they can handle).

When a dev wants to submit their code, they have to rebase it first, tough luck, and they have to get it to work again, if anything breaks, their own stuff or what came before, it's their problem, they fix it before submitting.

All tests must pass before code is submitted.

If someone must drive standups while you're away, pick the least technically competent person for that job, because they will then spend some time not doing damage and you don't want the hotshot maverick setting the direction.

Go enjoy your holiday.

Go figure why I'm not in management ;)

You can't fix the team, at least, not in the short term.

You say your boss is aware of the situation. Make sure this is formally documented.

Ultimately, if management are aware that this team doesn't function well but won't do anything about it, find another role.

With limited knowledge about the project and the team, here are my two cents: project management.

For example, ask your team to break down the tasks and provide a schedule for each task, and try to help them follow the schedule. If a task is taking way too long, ask them to break down it again. Remember to ask them to explain why they plan it like that.

Make sure you and your team have enough communication so you all know what need to do and what NOT to do. If your teammate is doing thing that is not in the scope, discuss with them and make the decision whether to support them or ask them to follow your request.

Rinse and repeat.

The only solution is to train your team. Put them in workshops and try to find out with what they are struggling the most. You cannot do it yourself at some point, the workload will be too much. There is no 10x developer outside of quick prototyping, especially if you are also managing people or projects and do software maintenance.

Very often work gets slow when goals are not precisely defined and developers have to improvise on the requirements. Micro-managing is bad but maybe their responsibilities need to be a bit stricter at first. With experience the railings can be removed.

Some suggest hire and fire, but if you don't put an effort into training you very likely will not find highly qualified developers or you have to pay extra.

Some people like the challenge of fixing dysfunctional teams like this. It’s the core difference between ‘leadership’ and ‘managing’. If that’s something that interests you, check out stuff like David Marquet’s book, but from personal experience also set some sort of timebox (3 months) on on when to reassess and see where things are at and if you want to continue.
I don’t agree with all these comments saying fire people or quit or whatever. These days I try give people the opportunity to develop, give honest feedback and if the results aren’t happening then reconsider things.

Is there anyone else in the organisation who you trust that could cover code reviews for a week? When you get back your boss will have two voices stating clearly that the team is not up to scratch.

Then your boss needs to start performance reviewing the engineers more closely with your input and make it very clear what behaviours need to change and see those behaviour changes or they need to reconsider their position.

Management is hard and your boss might not be up to the job(I only say this based on where the team is currently at), if your not seeing the results you want, then it’s time to reconsider your own position.

Life's too short: have an honest conversation with your boss about it. If he's receptive => implement the changes you agree on, if he's deflective => look for a new job
Work on building up the skills they are missing, whether its technical or soft skills? Being a lead sometimes means you have to prioritize team growth/output over your own for the medium to long term.

If you're in a startup that needs to produce a product yesterday then you may need to walk away as the company hired wrong, but if you are in charge of just a team in a company then its time to grow them.

When I have been in this situation the first step I take is to articulate where I want my team members to be, then deciding on the plan to get them there. It is an easy trap to fall into, to just complain about the current talent you have, but that will just build resentment and not create any improvement.

You should define what behaviors you want them to exhibit first. Then build a plan on how to get them from where they are, to where you want them to be, then start working with them to implement that plan.

Your 2 major possible impediments are going to be

1) having a boss who wants no change to the situation, in case you have been set up to fail and should look for a new job

2) an employee who accepted the job under certain terms that you are now changing. That is not their fault, but is one of those situations HR likes to describe as needing "managerial courage", where you either need to move the person on to their next role(most places this means shitcanning, but the moral choice is to tap your network and help them find a better suited role) or help them get with the program

The absolute worst choice is to just accept whats going on and let everyone deal with a shitty situation that breeds resentment until someone or everyone blows up and the whole team turns over.

Edit: I wrote that up somehow having glossed over your comment that you don't manage people and your boss isn't technical.

You have been set up to fail

If you have no control over people on a team but are responsible for their output you are the software equivalent of a supervisor at McDonalds. Either don't rock the boat and just collect a paycheck, or find a new job if it bothers you on a deep level. There is no solution to this situation. If your boss is not technical and already realized his deficiencies he would have empowered you. Being responsible for a team without the power to manage them means you are just a meat shield for the first time something goes wrong.

Why are you reviewing code that doesn’t work? At least set the basic expectation that the code has to work before you even look at it.

Other possibility since you’re obviously just sharing one side of the story is you yourself don’t understand their code.

Short term:

- Make sure only you can merge to main

- demand all PRs be small and focused so you can sort thru what they do while you're gone

- also demand descent test coverage

Medium term:

- build evidence proving the teams issues

- present to boss and hope they listen.

Long term:

Look for another job. From your other comments it sounds like their decisions have ensured failure.

Isn't that what the code review process is for? 40 comments come in the first time, then 20 and then 5. It is difficult to communicate with some people, yes, but areas such as code review exist for this very topic. If you don't like it, feel free to point it out.