8

Looking for company with good code quality

Profile picture
Staff Software Engineer at Taro Community2 months ago

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?

255
5

Discussion

(5 comments)
  • 11
    Profile picture
    Mid-Level Software Engineer at Series B Startup
    2 months ago

    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:

    1. The person doing the interviewers may not be the person qualified (in terms of context, skills, or both) to gauge quality.
    2. Just as the candidate tends to put the best first forward, so does the interviewer. That means they may be reluctant to say negative things, especially about the codebase, or they may focus on only citing the high quality aspects and not the low quality aspects.

    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:

    1. Voluntary dev employee turnover: If the codebase is worse it is more likely for engineers to leave, so asking about the percentage of engineers that voluntarily leave. If it's significantly higher vs lower compared other companies you have a good indicator there.
    2. CI/CD processes: If they have good test coverage in-code, integration tests, and end-to-end tests, simple and reliable deployment process, etc. it is more likely the code is high quality. So, ask what processes they have, code coverage, etc.
    3. QA processes: If they invest in QA, they are likely to invest in high quality code as well. So, ask about the ratio of QA to devs and if the QA team is mostly manual, automation engineers, etc. If the dev team is also responsible for QA, ask what percentage of time the dev team usually devotes to the QA tasks.
    4. Delta between deadlines and when products ship: A product may ship fast because the team duct tapes things together, or it may ship fast because the codebase is easy to work with. So, I don't think time to launch is a good metric, but there ability to plan for a launch may be. So ask about how often they ship things and how often the successful launch is close to the estimated launch.
    5. Monitoring: Similare to CI/CD. If they invest in good monitoring, it is likely they invest in quality code as well.
    6. Bugs: If there are a lot of regressions it is likely the overall codebase is low quality, and if there is a lot of bugs from new features it is likely deadlines or planning is lacklustre. So, ask about how much time is spent during regular work on bugs, how much time is spent cleaning up new features, and how big the bug backlog is.
    7. Interviewing process: There's the saying, how you done one thing is how you do everything. If the interview process is disorganized, ineffective, etc. there's a good chance other parts of the company are, like codebase.
    8. Staffing: If a company has a surplus of engineers relative to the work, it's easier to devote time to good code quality. So if they have a lot of engineers relative to the product complexity, recently got funding, have a product that prints money, etc, they have the time to keep a codebase cleaner. Companies tend to brag about this sort of thing, so you should be able to get information on this without asking.
    9. Engineer Skill: Higher quality engineers to produce higher quality code. So stalk some future coworkers to see their experience on LinkedIn, GitHub, etc to see if they are high quality. This especially the case for the leaders, so it would be good to find out if the CTO, immediate managers, etc. have a technical background.
    10. Size of customer base: It's easier to cut corners of quality if you have less customers, since things like bugs and security vulnerabilities have a much smaller negative impact. So, ask about how many users there are for the specific product and how scaling is handled.
    11. Company culture: What values a company totes, how they gauge employee performance, what the leaders are like, and what they prioritize is a good way to see what they care about. This is most subjective but I think the best way to immediately find companies with low code quality based on profiling. Is the CEO posting non-sense AI hype on Twitter? Is employee screen-recording software mandatory? Are performance metrics of employees a top priority?

    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.

    • 1
      Profile picture
      Staff Software Engineer [OP]
      Taro Community
      2 months ago

      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.

  • 4
    Profile picture
    Eng @ Taro
    2 months ago

    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.

  • 3
    Profile picture
    Tech Lead @ Robinhood, Meta, Course Hero
    12 days ago

    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:

    1. How fast do engineers review code in your team? - Code review culture is one of the top indicators of code quality. Teams with low code quality don't care about it and therefore review code slowly. 1 day turnaround is the baseline for a top company IMHO.
    2. Hypothetically, what does your team do if it hits a deadline but needs more time for polish? - This explicitly frames velocity vs. quality. See which one they pick - Ideally they give a nuanced response balancing the two.

    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.

    • 1
      Profile picture
      Staff Software Engineer [OP]
      Taro Community
      12 days ago

      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!