I am thinking about finding a position at another company. But I am concerned about how to find something suitable. I am considering moving because I would like to work and learn at a company that practices better code quality: better separations of concerns, better testing. I've learned recently that code quality corresponds closely not only to speed of development, developer happiness, but, also stress. I don't know though how I would know about code quality from the interview process. I can imagine maybe asking multiple engineers from the company what they think during the interview process. Maybe ask engineers that I've worked with before from the company. Also, some companies may be reputable like Google. Or maybe some famous engineers work there like ThoughtWorks.
I am currently a Staff Engineer at a company, and I've worked for almost 6 years there. I've also been promoted at the company. I think there are factors that are important for me that keep me there. A flexible vacation policy that is actually flexible as I've usually taken about 5 weeks off a year, commitment to remote work, flexibility to set time off during workdays. On the other hand, even though I am one of the top committers to our code repository, I am not sure if I am getting credit for that here.
One thing that worked really well was that I started at this company when engineering was around 30-40 people. That meant work time was stable unlike an early startup, but the company was at an early enough stage that I really got to know a large portion of the code base, over multiple functional areas, before the code base kept growing and new teams were formed.
Regarding programming language / framework, I would prefer Scala. I also would like to learn ZIO. But I think that's secondary to the factor regarding code quality.
Could you give me advice as to how to search for jobs given the different factors that I've listed?
Assuming you mean objective measures of code quality that effect the business, and not personal preferences or dogma of the week.
I think that it can be difficult to get a sense of code quality in interviews for a variety of reasons:
If you're applying to a very large company, you can probably get some sense from posts on Blind and talking to people on Taro (although it is often team dependant). However, I will be assuming this information isn't available online.
So, I think your best chance is trying to tease out some other qualities that tend to correlate with high code quality during interviews. Some factors that come to mind are:
The list isn't exhaustive, but you can use your experience to think of what other factors correlate with high code quality and think of questions to ask to get this information. You can also get some of this information checking out Glassdoor reviews, employee and ex-employee LinkedIn info, and company resources like blogs, twitter posts, etc. However, many of the metrics only loosely correlate (I can think of good arguments against any of the factors I listed), and peoples answers can always be incorrect, so at best you can make an educated guess.
Thank you! Your points about CI/CD, company culture, and bugs seem spot on. I recently read that the time the code can be shipped to production also correlates to high quality, so I plan to ask about that.
I also realized that some job listings may explicitly list holding to a high code standard as a requirement or preference. Seeing high code standards as a requirement may also be a good sign.
I don't know though how I would know about code quality from the interview process. I can imagine maybe asking multiple engineers from the company what they think during the interview process.
Generally, the code quality at your FAANG companies and unicorn startups (or on the path to unicorn status) will have higher code quality because they pay more which attracts a higher caliber of software engineer. They need to have the higher code standards to move faster and reduce incidents. There will usually be platform teams who are responsible for ensuring the code quality is high.
A flexible vacation policy that is actually flexible as I've usually taken about 5 weeks off a year, commitment to remote work, flexibility to set time off during workdays.
There are a lot of startups that have unlimited PTO and remote work and still pay well. One exercise might be to look at the top paying startups in levels.fyi, and work backwards to see which companies have unlimited PTO and remote work.
You should check out open Netflix roles (https://www.jointaro.com/jobs/netflix/) because there are some teams that operate as completely remote teams.
But I think that's secondary to the factor regarding code quality.
If code quality is a big priority, you could try to pitch some code quality projects in your current role. This could help give you a leg up for applying and interviewing at other companies. It sounds like you don't necessarily want to be the one responsible for code quality, but if code quality is so important to you, maybe it's worth considering stepping into a platform role to help out.
There is a pretty linear correlation between company prestige/pay and code quality. Code quality is a defining trait of top engineers, and the more prestigious a tech company, the more top engineers it'll have. It's not some mystery why FAANG towers above everyone else - Because they pay more than 90% of the market, they'll get the top 10% engineers.
My advice is to reverse interview engineers while you're job searching. In behavioral interviews in particular, you'll generally get an opportunity to ask them some questions. You can ask some pretty pointed ones about code quality:
I talk more about the incredibly intricate mechanics behind code quality in my course: Level Up Your Code Quality As A Software Engineer
You can also see how much they care about code quality from how well they proctor the interview, even data structures and algorithms (LeetCode) ones. If they're pushing you for edge case coverage and detailed solution analyses (trade-offs), that's a good sign they truly care about code quality.
Thank you! I didn't think about asking these kinds of questions.
And thank you for the code quality course! I took it already and found it helpful!