Transcript
Page 2: What Makes a Great Engineering Culture?

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

Page 3: What Makes a Great Engineering Culture?

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

Page 4: What Makes a Great Engineering Culture?

Interviewed 500+ people- Many engineers from strong engineering companies- Google, Facebook, Palantir, Amazon, Dropbox, Apple, etc.

Page 5: What Makes a Great Engineering Culture?

“A good culture attracts and keeps the kind of people that helps your company become successful.”

-- Andy Parkinson, greatcompanies.io

Page 6: What Makes a Great Engineering Culture?

What is one thing you liked and one thing you disliked about the engineering culture at X?

Page 7: What Makes a Great Engineering Culture?

10 elements of a great engineering culture

Page 8: What Makes a Great Engineering Culture?

01 Optimize for iteration speed

Page 9: What Makes a Great Engineering Culture?

Continuous DeploymentQuora released code 40-50 times a day.

Page 10: What Makes a Great Engineering Culture?

Developer productivity tools- Continuous deployment- Continuous integration testing- Faster compile and build times- Incremental reloads for web servers

Page 11: What Makes a Great Engineering Culture?

Avoid organizational bottlenecks- Google's weekly search UI review- Empower team leads to make decisions- Define clear channels for quick feedback

Page 12: What Makes a Great Engineering Culture?

"Commit, explode, recover. "-- Bill Walsh, former 49ers coach

Image Credit: http://www.flickr.com/photos/nostri-imago/4439637126/

Page 13: What Makes a Great Engineering Culture?

02 Develop high code quality through code reviews

Page 14: What Makes a Great Engineering Culture?

Higher code quality lets you iterate faster- easier to reason about code- quicker to modify- less susceptible to bugs

Page 15: What Makes a Great Engineering Culture?

Modelling is important

Fix broken windows

Image Credit: Broken Window, elizjoy

Page 16: What Makes a Great Engineering Culture?

03 Push relentlessly toward automation

Page 17: What Makes a Great Engineering Culture?

Automation is extremely high-leverage- Invest in automated testing.- Automatically handle failures, restart services.- Automatically scale up services at peak traffic.

Page 18: What Makes a Great Engineering Culture?

"Optimize for minimal operational burden."-- Mike KriegerInstagram co-founder

Grew Instagram to over 40M users with 13-person team

Page 19: What Makes a Great Engineering Culture?

04 Build the right software abstractions

Page 20: What Makes a Great Engineering Culture?

"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

Page 21: What Makes a Great Engineering Culture?

Compounding benefits of abstractionsGoogle - MapReduce, Bigtable, Protocol BuffersFacebook - Thrift, HiveQuora - Webnode, Livenode

Page 22: What Makes a Great Engineering Culture?

05 Build an open and respectful work environment

Page 23: What Makes a Great Engineering Culture?

“Writing software is a team sport.”-- Brian Fitzpatrick andBen Collins-Sussman, Team Geek

Page 24: What Makes a Great Engineering Culture?

06 Build shared ownership of code

Page 25: What Makes a Great Engineering Culture?

Keep the bus factor > 1

Image Credit: Wikimedia Commons ICCE Illinois School Bus

Page 26: What Makes a Great Engineering Culture?

07 Embrace failure and accountability

Page 27: What Makes a Great Engineering Culture?

annual award “to the individual who breaks flickr.com in the most spectacular way”

Image Credit: Dylan Couper, dvinfo.net

Page 28: What Makes a Great Engineering Culture?

08 Allot 20% time

Page 29: What Makes a Great Engineering Culture?

Promote experimentation- Google - 20% time- Ooyala - hackathons- Quora - offroad weeks- Facebook, Atlassian, Dropbox

Image Credit: Tempest, http://tempest.deviantart.com/

Page 30: What Makes a Great Engineering Culture?

09 Build a culture of continuous improvement

Page 31: What Makes a Great Engineering Culture?

Grow reusable knowledge- Invest in onboarding and mentoring- Encourage tech talks and document design discussions- Write codelabs

Page 32: What Makes a Great Engineering Culture?

10 Make hiring a priority

Page 33: What Makes a Great Engineering Culture?

"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

Page 34: What Makes a Great Engineering Culture?

1 Iteration speed2 Code quality3 Automation4 Abstraction5 Respect

Build a great engineering culture

6 Shared ownership 7 Accountability 8 20% Time 9 Learning10 Hiring