Almost all the responses here talk about impostor syndrome or being mediocre. But maybe OP is really bad. Like really, really bad. I know that is possible because I'm a very bad developer myself, I know it's possible to be a bad developer (not mediocre) for years on. We still deliver, we work on very small teams or in places where we are the only developer, so nobody notice the mess your solutions are. They work. But you know they are bad, no tests, no best practices, not even consistency between code.
My point is: I hope some advice acknowledge that maybe OP is correct about his real skills.
> But you know they are bad, no tests, no best practices, not even consistency between code.
The question is: Why do you get away with writing bad code?
That's as much your fault as it is your manager's or the product owner's. My advice, therefore, would be to go find a job where you're held accountable and where you get pushed (to learn how to) to deliver quality work.
I myself am working for an IT consulting firm that predominantly hires math/physics graduates fresh out of school. And while they're usually very smart, they typically lack programming experience and might be rather bad coders. When they start. After one or two months of extensive training (both on and off the job) and a ton of advice by their colleagues, they're usually much better already. Years later they will be among the best coders under the sun because that's what our firm – and especially our clients – demand from them.
If your code is unintelligible, has no comments, cannot be maintained by anyone, has poor style, no tests, generic variable names, copy pasted code all over but solves the problem, it’s not good enough and should very much incur a code reviews with things to fix before it’s merged. That doesn’t depend on the reviewers mood either, it’s down to best practices and company standards.
I currently work at a place where “it solves the problem, ship it” is the norm. Codebases are 1–10 years old (depending on the project). It’s a living nightmare. No one knows how anything works, making trivial changes take weeks and will break something else, turnover is very high because life is too short to put up with such a low code quality and quality of life... I don’t recommend this approach of “if it solves the problem it’s good enough” unless you want to be unable to hire, kmrrtain your staff, and have a miserable work environment with constant fires everywhere.
reply