(Using a throwaway account for reasons that are hopefully obvious.)
Feeling very burned out with my current role. Long story short, I'm on a small team where no one seems to care about (or maybe even understand?) code quality. I frequently get chastised in PRs for refactoring logic from multiple controllers into service classes, one of the senior devs says he doesn't want to adopt the repository pattern because he likes how convenient it is to just be able to type ModelName.save, and I'm constantly explaining or even defending things like single-responsibility and other basic SOLID concepts.
To be clear, 100% behind the fact that these principles can be badly abused, mis-used, mis-applied, etc, but we're not talking about that here. We're talking "suggesting 'hey maybe we shouldn't keep sticking business logic in controllers' gets greeted by crickets" level of cluelessness/ambivalence/whatever here.
I've been in the industry full-time since 2014, and I've worked at several places where my colleagues genuinely valued and had management support for delivering high-quality code and using good engineering practices, so I know they exist. It's just a sea of job boards out there and, so far, I've found that you never really know what you're getting into until you actually work at a place.
So what are some places that you know of that legitimately have a culture of delivering quality code by a deadline? Any recommendations would be greatly appreciated as I think it's time for me to make a change.
You should work at a company with people that value the same things that you do, and fit your personality. You won't get that by just applying to jobs, interviewing and taking the first thing that comes your way.
I'd recommend building a network to accomplish the things that you want. It doesn't immediately pay off, but it will eventually solve your problem.
Feel free to DM me on twitter (same username), we have open headcount if you're in a hurry, or we can talk networking.
You’re asking about companies that value the same “good engineering practices” you agree with or consider “good.” Companies exist to make money. Generally the only quality of code that concerns a company is how well it delivers business value. That priority may or may not align with your idea of good code. In my experience sometimes business value and what I think of as good code align, and sometimes they don’t.
Concerns about code quality usually matter at the team level, not the company (management) level. So really you’re asking how to find a team with values aligned with yours in regards to writing code. Finding a team you enjoy working with, in a company that allows the team to deliver business value without crushing constaints, will require some research on your part. Connections through developers who share your values and concerns will probably work best.
But!
Other than being well tested and understandable, code quality is defined as being aligned with whatever our internal standards happen to be and being well suited to purpose. If you showed up with a big refactoring cl, you'd have to be pretty darn convincing that this was enough better than what we had before to justify the change costs.
Code quality is definitely important, but I think there is sometimes a tendency to treat it as holy and not subject to pragmatism. A given amount of code quality is only worth it if it's worth it, and that can be subjective and situation dependent.
In the deadline-based environments you've worked in, what has provided you with reassurance about the quality of the code?
Is it your own assessment of the code, and/or the techniques you discovered by reading it, and/or the culture surrounding defect resolution?
Most developers seem to view quality as them not writing any code at all, which implies downloading everything off NPM (or some other package manager). My opinion on that differs, which is why its important to define what you mean by quality.