Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

What Makes a Great Engineering Culture?

One of my favorite interview questions that I ask engineering candidates is to tell me about one thing they liked and one thing they disliked about the engineering culture at their previous company. I’ve interviewed over 500 people – many of them from top tech companies like Facebook, Google, Amazon, Palantir, and Dropbox – and over time, this interview question has given me a sense of what good engineers look for and what they’re trying to avoid. Reflecting back on the interview responses and on my own experiences from the past seven years working across Google, Ooyala, and Quora, I’ve distilled ten things that a team can do to build a good engineering culture.

  • Login to see the comments

What Makes a Great Engineering Culture?

  1. 1. What makes a great engineering culture? Edmond Lau @edmondlau
  2. 2. About me - Former engineering lead of user growth at Quora - Led teams at Ooyala and worked on Google search - Writing a book on how to be an effective software engineer
  3. 3. Growing the team at Quora - Helped grow company from 12 to almost 70 - Started mentoring & onboarding programs for new engineers - Developed interview guidelines and training sessions
  4. 4. Interviewed 500+ people - Many engineers from strong engineering companies - Google, Facebook, Palantir, Amazon, Dropbox, Apple, etc.
  5. 5. “A good culture attracts and keeps the kind of people that helps your company become successful.” -- Andy Parkinson,
  6. 6. What is one thing you liked and one thing you disliked about the engineering culture at X?
  7. 7. 10 elements of a great engineering culture
  8. 8. 01 Optimize for iteration speed
  9. 9. Continuous Deployment Quora released code 40-50 times a day.
  10. 10. Developer productivity tools - Continuous deployment - Continuous integration testing - Faster compile and build times - Incremental reloads for web servers
  11. 11. Avoid organizational bottlenecks - Google's weekly search UI review - Empower team leads to make decisions - Define clear channels for quick feedback
  12. 12. "Commit, explode, recover. " -- Bill Walsh, former 49ers coach Image Credit:
  13. 13. 02 Develop high code quality through code reviews
  14. 14. Higher code quality lets you iterate faster - easier to reason about code - quicker to modify - less susceptible to bugs
  15. 15. Fix broken windows Modelling is important Image Credit: Broken Window, elizjoy
  16. 16. 03 Push relentlessly toward automation
  17. 17. Automation is extremely high-leverage - Invest in automated testing. - Automatically handle failures, restart services. - Automatically scale up services at peak traffic.
  18. 18. "Optimize for minimal operational burden." -- Mike Krieger Instagram co-founder Grew Instagram to over 40M users with 13-person team
  19. 19. 04 Build the right software abstractions
  20. 20. "Pick the right ones, and programming will flow naturally from design... Pick the wrong ones, and ... even the simplest of changes will be hard to make." -- MIT Professor Daniel Jackson, Software Abstractions
  21. 21. Compounding benefits of abstractions Google - MapReduce, Bigtable, Protocol Buffers Facebook - Thrift, Hive Quora - Webnode, Livenode
  22. 22. 05 Build an open and respectful work environment
  23. 23. “Writing software is a team sport.” -- Brian Fitzpatrick and Ben Collins-Sussman, Team Geek
  24. 24. 06 Build shared ownership of code
  25. 25. Keep the bus factor > 1 Image Credit: Wikimedia Commons ICCE Illinois School Bus
  26. 26. 07 Embrace failure and accountability
  27. 27. annual award “to the individual who breaks in the most spectacular way” Image Credit: Dylan Couper,
  28. 28. 08 Allot 20% time
  29. 29. Promote experimentation - Google - 20% time - Ooyala - hackathons - Quora - offroad weeks - Facebook, Atlassian, Dropbox Image Credit: Tempest,
  30. 30. 09 Build a culture of continuous improvement
  31. 31. Grow reusable knowledge - Invest in onboarding and mentoring - Encourage tech talks and document design discussions - Write codelabs
  32. 32. 10 Make hiring a priority
  33. 33. "I figured Google would be better [than AltaVista] because I knew more of the people there, and they seemed like they were more technically savvy." -- Jeff Dean, Google Fellow, in Steven Levy's In the Plex
  34. 34. Build a great engineering culture 1 Iteration speed 2 Code quality 3 Automation 4 Abstraction 5 Respect 6 Shared ownership 7 Accountability 8 20% Time 9 Learning 10 Hiring
  35. 35. Q &A - - @edmondlau - My upcoming book: