what makes a great engineering culture?

35
What makes a great engineering culture? Edmond Lau @edmondlau www.theeffectiveengineer.com

Upload: edmond-lau

Post on 17-Jun-2015

836 views

Category:

Technology


1 download

DESCRIPTION

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. http://www.theeffectiveengineer.com/blog/what-makes-a-good-engineering-culture

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