I recently started at an early stage startup as one of two founding engineers. They wanted us to be “adults” essentially: be responsible, take ownership, and do your jobs. I’ve been killing it, everyone has been thanking me for my work, literally.
Startups are chaos, but our code quality has been poor (and I’ve been the one fixing it), so I asked to be the head of engineering. They said yes :)
First act of business was to figure out what’s going on with an engineer. I’ve committed over 10k lines of code and he has done… wait for it… 500. There’s been discussion around it, but I was asked to meet with him and figure out why his pull request has been taking weeks.
And the story begins.
I asked if he had any questions about my comments on his code. He said he’d like to know which comments are important, so he can focus on them and deliver. All of them.
But I’ve been working on it for so long. Yup.
So what’s most important? All of it. Follow our practices / standards. But they have changed! Okay, pick any of the ways we’ve written our code, even if it’s not the most up to date and follow it.
But what should I focus on? Following our practices / standards. But every time I push changes you say something is wrong. Yes. The first time your solution wasn’t what any of us were expecting. Then I asked you to follow standards, you started to, but would implement them differently than anyone else has. We might have a good reason to differ, but you need to explain why. Working like this is too difficult. Having standards isn’t practical.
Oh, okay. Go to McDonalds and make a Big Mac with chicken, because you feel like it. See how that works out for you.
So anyway, lets go over the comments I left. I said xyz because reason. Okay. Here I said this because x. What? Where are you? At the top. I can’t find it, what file? At the top, the second comment. Where? Okay, I’ll share my screen.
So why should I change this? Because it’s wrong. You should be coercing instead of checking for null, because we know it’s not null. That’s not wrong. Yes it is. We are trying to fix incorrect type inference, it’s not possible to be null, so adding code to “fix it” is wrong.
Okay, we know code will be wrong, we can fix it later. Sure, but why push code we know is wrong? I’d like to know what the top issues are so I can focus on them. They are still following our standards and practices. We aren’t getting anywhere, we are going in circles. Thank you for your time.
I wanted to jump.
Mind you, he asked me to review his code again the other day. I added some very detailed explications for him that night, to hold his hand and said all set. Let me know if you have any questions or want to sync up tomorrow. He messages my boss at like 2 PM and says I didn’t respond. Come to find out, I didn’t hit a button to send. Okay, so why not say HEY MAN IM CONFUSED, I DON’T SEE YOUR COMMENTS! Nope. Complain to my boss. But now I know why.
He’s a fraud. I looked at his history and he has been programming for like 15 years and rarely stayed at a place more than a year. Sus. To top that off… they are all (with one exception) trash companies – absolutely useless no one nothing companies. Odd? Hmmmm….
He like tech no doubt, but he can’t make it. There’s no way. I didn’t even know this tech coming in and have written over 15k lines, he’s still at 500 and he claimed he did.
To recap: It’s my fault he can’t follow a pattern. It’s my fault he doesn’t know the language. It’s my fault he keeps not following the patterns. It’s my fault he writes code that’s incorrect. It’s my fault he didn’t ask questions. It’s my fault he has to learn the patterns. And it’s my fault he writes solutions that a junior engineer could do a better job at.
And that’s why I will be taking over hiring for engineering soon as well.