5 ms·
Ask HN: What are some companies that value quality code?
Hi HN,
(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.
- austincheney 5y agoDefine quality... 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.
- curiousEagle 5y agoSome examples of "quality engineering practices" would be in my mind: - Believes most business logic doesn't belong in models/controllers - Understands the importance of naming things (classes, variables, etc.) well - Writes tests, even if not fully TDD - Intelligently applies SOLID engineering principles ^^ this type of thing. I think the books "Code Complete" [0] and "Practical Object-Oriented Design: An Agile Primer Using Ruby" [1] embody a lot of what I'm looking for, if you're familiar with them. [0] https://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670 https://www.amazon.com/Code-Complete-Practical-Handbook-Cons... [1] https://www.poodr.com/ https://www.poodr.com/ Edit: Formatting
- austincheney 5y agoThose are all highly subjective criteria. If you are going to define quality I would do so in a way that is universally clear and immediately repeatable. Examples: * Page load achieved in 0.5 seconds * All variables are explicitly typed, if in a loosely typed language. * Does not use conventions X, Y, Z * Defect resolutions will not be accepted without corresponding test automation coverage * All type interfaces will be explicitly documented in markdown language immediately prior to the interface definition. Another way to think about this is if you cannot automate your quality definitions they aren't that important, because you will almost certainly not enforce them.
- jppope 5y agoI'm going to avoid the direct question to answer the "between the lines" question... 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.
- curiousEagle 5y agoYes, networking has never been my forte. What are your top 3 suggestions for building the type of network you're thinking of? I have LinkedIn, a blog, etc. but I'm guessing that's not it. Really appreciate it! I will take you up on that.
- gregjor 5y agoYou’ve been working full-time for seven or eight years, at several companies. Unless those were all very small companies you should have been exposed to quite a few colleagues already, programmers and otherwise. You build a network by establishing and maintaining relationships, and engaging with people who don’t do exactly what you do, or have exactly the same values. Some of my best professional leads came from friends and former co-working in marketing, sales, management.
- jppope 5y agoGo to places repeatedly where people who are like you go and talk to them. Meetups are an example. I've personally had great luck with where I live (neighbors) and rec sports (softball, volleyball, etc). Online there are chat groups for specific technologies that can sometimes work out... but just emailing people that you think are doing cool work has always been great for me.
- joebob42 5y agoSo the company I'm at does an excellent job on this, in my view. 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.
- jka 5y agoMore questions to hopefully help you determine when you've found what you're looking for: 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?
- jimmyvalmer 5y ago
- faangiq 5y agoNo company values quality code. Companies value money. Code monkeys are just a barrier or stepping stone to money.
- gregjor 5y agoYou’re not describing or defining quality. I’ll refer you to Zen and the Art of Motorcycle Maintenance for a real inquiry into what quality might mean. 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.