This is my first time having to deal with is apparently incompetent behavior as a Lead Dev (note: I am NOT in a superior/management position). Am I being too critical? What actions should I take to address the situation?
I'm Lead Developer for a small startup in the tech industry. I was quickly promoted after I joined the company because I have relatively high code output and have good communication skills.
We recently hired another guy to be "senior developer" and a support to me. Supposedly he has been in the industry three times longer than I have. Unfortunately, there are a bunch of issues with him, including:
His output is ludicrously low. He only committed code on 2 days last month, during which I know he was not on vacation, and his commits totaled 9 poorly written lines of Ruby which I had to fix because he misused Ruby functions. This is from a self-described "Rails engineer". In fact, his commits wouldn't run because they caused errors in Ruby. One of his mistakes was using square brackets on a method instead of parentheses. In fact, none of the code he's written has been anything beyond very, very basic, beginner level stuff. The problem is, the only way you'd notice his low output is by logging into our Bitbucket account and viewing commit history, and I'm the only one who's done that. It's now the 17th of this month and he's only committed code on 2 days of this month, despite having a number of detailed tasks I outlined for him to work on.
His communication/professional skills are extremely lacking. He routinely skips our tri-weekly online standups meetings without notice—even if he explicitly RSVP'ed. He once stood me up to an in-person meeting with no notice and apparently didn't think it was a big enough deal to make any sort of amends later.
He doesn't seem to be very information-retentive. I have to repeat myself multiple times to him, and he still fails to remember anything I say. I repeatedly told him the names of our Development and Master branches in VCS (which are non-standard) and he continually forgot them. It's like he doesn't take any notes whatsoever. I finally ended up having to rename our Git branches and update all our deploy pipelines because I realized he would never stop asking me which branch he was supposed to be branching off of.
He simply doesn't listen. In one case, I explicitly told him on numerous occasions how to make a certain query to get the correct data in a certain controller. I copy-pasted the necessary SQL query in our Slack channel for him to use. Later that day, he opens a PR (one of 5 sub-10-lines-of-code he's made in 4 months) and turns out he's used the very SQL query I told him NOT to use because it would result in returning the incorrect response. It's like everything I say goes in one ear and out the other.
He never shows any conscious response to anything I say. When I comment on his PR's, he tells me he fixed the PR and committed the changes. I review his changes and find he hasn't even attempted to address half of my comments.
This guy touts himself as a "senior dev", but the quality of his code, his communication skills, listening skills, etc. don't tell the same story. I just don't get it. Nothing he has contributed has been the least bit impressive.
He's always talking about "that PR that he's going to open tomorrow" and then never does. He's constantly moving from task to task without ever actually doing one to completion.
I've tried for a long time to be patient with him, and constantly given him the benefit of the doubt. But after 3 or 4 months, whenever he opens his mouth I find that I just can't take him seriously.
I have kindly told him that before he opens a PR, he actually needs to, at the very least, run the code in the browser and see if any Ruby or JS errors come up. In my opinion, anyone who pushes code without even testing it at the most basic level shouldn't be calling themselves a senior dev. His response when I suggested he test his code first? A "thumbs up" emoji (we're a remote team).
He's even asked some truly bizarre questions like, "How can I connect my development environment directly to the production server?"
What's worse, our client is kind of in the dark about the dev team's performance. They don't really pay much attention to things like commits, pull requests, etc. This new guy is a great talker and drops lots of technology terms during our meetings, so the client thinks he's actually doing stuff, but I'm the one privy to his actual output.
After a conversation with the CEO of my company where I laid all this out to him, he did seem concerned. But after he interfaced with our client, he told me that they seem "happy" with the new guy. In contrast, he also said that he knows the client tends to be rather ignorant of what's actually going on in development, so they might not ever notice if anything was amiss. As I said, I'm the only one who's viewing our commit history.
Am I right to be concerned with the performance of our new senior dev? Or am I being too type-A and too critical? Are senior devs actually expected to write code, or is their only job to talk during meetings.
I really just need some validation that I'm thinking about this situation correctly and not being overly critical. If I weren't Lead Dev, I wouldn't be so concerned about it.