Ten Practices for Building a Strong Engineering Culture
The article outlines ten actionable strategies—optimizing iteration speed, relentless automation, building proper abstractions, rigorous code reviews, fostering respectful environments, shared code ownership, investing in automated testing, allocating 20% time, cultivating continuous learning, and hiring top talent—to create a thriving engineering culture.
One of my favorite interview questions for engineering candidates is to tell me the thing they liked most and the thing they liked least about the engineering culture at their previous company.
I have interviewed over 500 people—many from top tech companies like Facebook, Google, Amazon, Palantir, and Dropbox—and over time this question has taught me what great engineers look for and what they try to avoid.
Reflecting on interview answers and my seven years of experience at Google, Ooyala, and Quora, I have distilled ten things teams can do to build a good engineering culture.
1. Optimize Iteration Speed
Fast iteration boosts motivation and excitement. Bureaucratic and infrastructure obstacles when deploying code are common reasons engineers leave their current companies.
Organizationally, fast iteration means giving engineers and designers autonomy to make day‑to‑day decisions without seeking permission.
On the infrastructure side, it means building continuous deployment, high test coverage, fast unit tests, and incremental compilation/reload to reduce development time.
Team‑wise, fast iteration requires strong leaders who can coordinate and drive effort, making decisive commitments and reacting to results.
2. Relentlessly Push Automation
Automation and scripts for repetitive tasks free engineers to work on the product itself. Services should automatically restart on failure and scale quickly under peak load; manual patches are a tempting but risky short‑term trade‑off.
At Etsy, the motto “measure anything, measure everything” and support for open‑source monitoring tools (Graphite, StatsD) highlight that automation must be data‑driven and monitored.
3. Build the Right Software Abstractions
Choosing the correct abstractions leads to natural, simple code with small interfaces, making new features easier to add without massive refactoring.
“Choose the right abstractions and programming flows naturally from design; choose the wrong ones and programming becomes a series of unpleasant surprises.”
Simple, general abstractions such as MapReduce, SSTable, Protocol Buffers (Google) or Thrift, Scribe, Hive (Facebook) enable thousands of engineers to build scalable systems.
Keeping core abstractions simple and generic reduces the need for custom solutions and improves familiarity, reliability, and testing across the organization.
4. Foster a Code‑Review Culture Focused on High Quality
Maintaining a high‑quality codebase improves productivity. Peer pressure from knowing someone will review your code deters sloppy submissions, and reviews provide mutual learning opportunities.
Timely code reviews—pre‑commit or post‑commit—bring several benefits:
Increase accountability for reviewing code promptly.
Allow team members, especially newcomers, to model good review practices.
Accelerate the spread of best coding practices.
While large organizations like Google enforce pre‑commit reviews for all code, smaller teams can adopt lighter or post‑commit processes as appropriate.
5. Maintain a Respectful Work Environment
Mutual respect is the foundation of open communication. A respectful setting encourages debate, which leads to better ideas, while protecting individuals from personal attacks.
Recognizing that engineers specialize in different domains and respecting those differences is crucial for a healthy culture.
6. Establish Shared Ownership of Code
No single person should be the sole owner of any part of the codebase. Shared ownership reduces bus factor risk, allows engineers to contribute across areas, and enables rapid response to high‑priority goals.
Keeping the bus factor above one eases pressure on individual maintainers.
Shared ownership lets engineers contribute fresh insights even in areas where they are not deep experts.
It facilitates multiple team members collaborating on strategic initiatives.
7. Invest in Automated Testing
Unit‑test coverage and some integration testing are the only scalable way to manage large codebases without constantly breaking builds or products.
Automated testing gives confidence for large‑scale refactoring and protects against the fear of breaking code.
As teams grow, automated testing becomes a prerequisite for continuous deployment and helps new engineers understand the codebase.
8. Allocate 20% Time for Side Projects
Google’s original 20% time produced Gmail, Google News, Google Transit, and Google Suggest. Allowing engineers to spend a portion of their time on projects outside the roadmap fuels innovation.
Even without an official policy, engineers can carve out time for personal tools that improve productivity, as demonstrated at Ooyala, Atlassian, and Facebook.
9. Build a Culture of Learning and Continuous Improvement
Learning and embracing challenges leads to a “flow” state where engineers are fully engaged. Fast iteration provides immediate feedback, reinforcing learning.
Weekly tech talks, internal documentation, and mentorship programs ensure engineers acquire the core algorithms, systems, and product skills needed for success.
10. Hire the Best Talent
Hiring top engineers underpins all other principles. Hiring B‑level engineers makes it hard to respect them or trust their product intuition, while A‑level hires raise the overall bar.
Silicon Valley adage: “A‑players hire A‑players; B‑players hire C‑players.” Prioritizing hiring is essential for a thriving engineering organization.
Building a great engineering culture requires substantial effort, but the resulting work environment is well worth it.
Promotional Note
In addition, the IDCF DevOps Hackathon offers an end‑to‑end DevOps experience combining lean startup, agile development, and DevOps pipelines. It’s a rare 2021 public course with thousands of participants and five‑star recommendations—don’t miss it!
November 6‑7, Shenzhen venue. Teams and individuals can compete. This event happens once a year—act now!
DevOps
Share premium content and events on trends, applications, and practices in development efficiency, AI and related technologies. The IDCF International DevOps Coach Federation trains end‑to‑end development‑efficiency talent, linking high‑performance organizations and individuals to achieve excellence.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.