| At my startup there is a three person programming team. There is one team member who has been working here for about a year - I'll call him Rob - who is very competent, but has had issues that I think stem from laziness. The most experienced programmer on Rob's team has complained to me that Rob will take 3-5x longer to finish a task because he lacks the work ethic to get it done sooner, and he has also complained numerous times (including once on the public team Slack channel) that Rob often pushes buggy or sloppy code to production with the hopes that someone else will clean it up for him. I was skeptical of this claim at first (a lot of the stuff Rob's worked on was experimental in nature and hard to efficiently track) but after paying closer attention, I now agree completely with this team member's complaints. The only discussion I have had with Rob so far about this came during his performance review at the beginning of the year. At the time I didn't quite appreciate the extent of the issue and told him very generally that he excelled with the big picture but needed to needed to be more detail oriented. So although Rob's team member has called him publicly I don't think Rob even remotely realizes how poorly he stands. This startup is small (8 people) and very close knit, so I'm worried that if I simply let him go it would come out of left field and hurt the morale of the rest of the company (with the obvious exception of Rob's disgruntled team member). If the issue was simply him pushing buggy code live I would sit down and discuss the issue with Rob and make clear that this is not appropriate and needs to be changed. However the issue seems far deeper than that, and he has already lost the confidence of the best programmer on the team. The only time I've had to deal with a poor performer was a much more cut and dry situation, so I feel a lot of uncertainty right now for such an important decision. So Hacker News, what do you think I should do? |
If the lead programmer complains about the new process, make it as minimum a burden as possible, and make code quality the focus of the process. The lead programmer and the third programmer can review each others' changes, and Rob will need one of them to review his changes, which might improve communication between them, and make Rob look better.
Rob may be stuck not knowing what to do, or unmotivated because he does not see a future in his work. If this is possible, then give Rob work which directly impacts customers (internal or external), even future customers not yet realized.
If Rob is working on something which doesn't impact customers in the form of a product or service, this may be demotivating, and he may not know what to do next. Even if he's told what to do, if he doesn't see it having any real impact on the customer product or service, then he may be demotivated and may not be able to prioritize his work correctly.
Rob needs feedback, whether in the form of code reviews, direct communication, or in the form of comparing his work against customer requirements. If the requirements are unclear to him, or he cannot mentally connect his work to customer requirements, he may be stuck or unmotivated, even if he's very bright and has been assigned specific tasks.