What makes a great engineering culture?
Edmond Lau
@edmondlau
www.theeffectiveengineer.com
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
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
Interviewed 500+ people
- Many engineers from strong engineering companies
- Google, Facebook, Palantir, Amazon, Dropbox, Apple, etc.
“A good culture attracts and keeps the kind of people
that helps your company become successful.”
-- Andy Parkinson, greatcompanies.io
What is one thing you liked and one thing you
disliked about the engineering culture at X?
10 elements of a great engineering culture
01 Optimize for iteration speed
Continuous Deployment
Quora released code 40-50 times a day.
Developer productivity tools
- Continuous deployment
- Continuous integration testing
- Faster compile and build times
- Incremental reloads for web servers
Avoid organizational bottlenecks
- Google's weekly search UI review
- Empower team leads to make decisions
- Define clear channels for quick feedback
"Commit, explode, recover. "
-- Bill Walsh, former 49ers coach

Image Credit: http://www.flickr.com/photos/nostri-imago/4439637126/
02 Develop high code quality through code reviews
Higher code quality lets you iterate faster
- easier to reason about code
- quicker to modify
- less susceptible to bugs
Fix broken windows
Modelling is important

Image Credit: Broken Window, elizjoy
03 Push relentlessly toward automation
Automation is extremely high-leverage
- Invest in automated testing.
- Automatically handle failures, restart services.
- Automatically scale up services at peak traffic.
"Optimize for minimal
operational burden."
-- Mike Krieger
Instagram co-founder
Grew Instagram to over 40M
users with 13-person team
04 Build the right software abstractions
"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
Compounding benefits of abstractions
Google - MapReduce, Bigtable, Protocol Buffers
Facebook - Thrift, Hive
Quora - Webnode, Livenode
05 Build an open and respectful work environment
“Writing software is
a team sport.”
-- Brian Fitzpatrick and
Ben Collins-Sussman, Team Geek
06 Build shared ownership of code
Keep the bus factor > 1
Image Credit: Wikimedia Commons ICCE Illinois School Bus
07 Embrace failure and accountability
annual award “to the
individual who breaks
flickr.com in the most
spectacular way”
Image Credit: Dylan Couper, dvinfo.net
08 Allot 20% time
Promote experimentation
- Google - 20% time
- Ooyala - hackathons
- Quora - offroad weeks
- Facebook, Atlassian, Dropbox
Image Credit: Tempest, http://tempest.deviantart.com/
09 Build a culture of continuous improvement
Grow reusable knowledge
- Invest in onboarding and mentoring
- Encourage tech talks and document design discussions
- Write codelabs
10 Make hiring a priority
"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
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
Q &A
- edmondlau@alum.mit.edu
- @edmondlau
- My upcoming book: www.theeffectiveengineer.com/book

What Makes a Great Engineering Culture?

  • 1.
    What makes agreat engineering culture? Edmond Lau @edmondlau www.theeffectiveengineer.com
  • 2.
    About me - Formerengineering 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.
    Growing the teamat Quora - Helped grow company from 12 to almost 70 - Started mentoring & onboarding programs for new engineers - Developed interview guidelines and training sessions
  • 4.
    Interviewed 500+ people -Many engineers from strong engineering companies - Google, Facebook, Palantir, Amazon, Dropbox, Apple, etc.
  • 5.
    “A good cultureattracts and keeps the kind of people that helps your company become successful.” -- Andy Parkinson, greatcompanies.io
  • 6.
    What is onething you liked and one thing you disliked about the engineering culture at X?
  • 7.
    10 elements ofa great engineering culture
  • 8.
    01 Optimize foriteration speed
  • 9.
    Continuous Deployment Quora releasedcode 40-50 times a day.
  • 10.
    Developer productivity tools -Continuous deployment - Continuous integration testing - Faster compile and build times - Incremental reloads for web servers
  • 11.
    Avoid organizational bottlenecks -Google's weekly search UI review - Empower team leads to make decisions - Define clear channels for quick feedback
  • 12.
    "Commit, explode, recover." -- Bill Walsh, former 49ers coach Image Credit: http://www.flickr.com/photos/nostri-imago/4439637126/
  • 13.
    02 Develop highcode quality through code reviews
  • 14.
    Higher code qualitylets you iterate faster - easier to reason about code - quicker to modify - less susceptible to bugs
  • 15.
    Fix broken windows Modellingis important Image Credit: Broken Window, elizjoy
  • 16.
    03 Push relentlesslytoward automation
  • 17.
    Automation is extremelyhigh-leverage - Invest in automated testing. - Automatically handle failures, restart services. - Automatically scale up services at peak traffic.
  • 18.
    "Optimize for minimal operationalburden." -- Mike Krieger Instagram co-founder Grew Instagram to over 40M users with 13-person team
  • 19.
    04 Build theright software abstractions
  • 20.
    "Pick the rightones, 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.
    Compounding benefits ofabstractions Google - MapReduce, Bigtable, Protocol Buffers Facebook - Thrift, Hive Quora - Webnode, Livenode
  • 22.
    05 Build anopen and respectful work environment
  • 23.
    “Writing software is ateam sport.” -- Brian Fitzpatrick and Ben Collins-Sussman, Team Geek
  • 24.
    06 Build sharedownership of code
  • 25.
    Keep the busfactor > 1 Image Credit: Wikimedia Commons ICCE Illinois School Bus
  • 26.
    07 Embrace failureand accountability
  • 27.
    annual award “tothe individual who breaks flickr.com in the most spectacular way” Image Credit: Dylan Couper, dvinfo.net
  • 28.
  • 29.
    Promote experimentation - Google- 20% time - Ooyala - hackathons - Quora - offroad weeks - Facebook, Atlassian, Dropbox Image Credit: Tempest, http://tempest.deviantart.com/
  • 30.
    09 Build aculture of continuous improvement
  • 31.
    Grow reusable knowledge -Invest in onboarding and mentoring - Encourage tech talks and document design discussions - Write codelabs
  • 32.
    10 Make hiringa priority
  • 33.
    "I figured Googlewould 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.
    Build a greatengineering 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.
    Q &A - [email protected] -@edmondlau - My upcoming book: www.theeffectiveengineer.com/book