I’ve recently taken on a new job as a full-stack developer. In the past I’ve delivered fully completed projects without too much fuss.
I’ve also taken on legacy projects and been able to dive in and solve major bugs in old legacy code that other developers at those companies have been unable to solve.
The new job uses .NET on the backend and VueJS on the frontend. I’m not a pro at .NET but I’m familiar with the design patterns and I can read the code and understand it, and I’ve been able to make contributions in the weeks I’ve been here. Other than engineering themselves into a special kind of microservice hell, the code is workable.
The front-end code is infuriating. I’ve never seen anything so fragmented and modularized, and I don’t mean in a good way. I’ve never run into any project that I couldn’t work with until now. It’s only Javascript, I should be able to grasp what they have going on, but there are several problems that stump me:
1. They always use the most terse and clever syntax possible; without any comments or documents, I’m having a hell of a hard time figuring out what they were thinking when some code was written.
2. The frontend guys are somewhat hostile. If I ask a question, it’s always “simple” or “easy” and I get a terse answer that doesn’t really take the details into consideration. I feel like they don’t want me around and it’s nigh impossible to get someone to actually jump on a screenshare and pair on something.
3. DRY is a religion here, to the point where everything is fragmented to hell. I have a hard time explaining but I feel like there’s a tradeoff where things can be split apart into their own modules to a degree that becomes counter-productive. Am I wrong about that?
In a nutshell, am I a bad programmer? Am I an asshole? Am I just getting old? Time to quit? Feeling burned out already and I need to figure something out.
This is why engineering leadership is crucial. You need an architect who's been burned by convoluted code before, who can push for objective measures of code quality and simplicity and (true) modularity (not just DRY-style thoughtless consolidation).
But we've seen a race to the bottom lately. Everyone is trying to do more with only junior developers, or senior developers who code like junior developers (just 3x faster and more convoluted).
And if you're at a startup, congratulations, your coworkers have all worked at other startups previously, where the determining factor as to wether the company succeeded or not was mostly on the business side (product/market fit) and they never got to see an unchecked engineering team slowly cripple a company from the inside.