Ask HN: How do I lead a team in whom I have no confidence?
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 ] threadCan you find new team members? And in the meantime, perhaps do more coding yourself?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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.
- 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.
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.
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.
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 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.
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.
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.
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.
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.
Other possibility since you’re obviously just sharing one side of the story is you yourself don’t understand their code.
- 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.