DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Please enter at least three characters to search
Refcards Trend Reports
Events Video Library
Refcards
Trend Reports

Events

View Events Video Library

Zones

Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

The software you build is only as secure as the code that powers it. Learn how malicious code creeps into your software supply chain.

Apache Cassandra combines the benefits of major NoSQL databases to support data management needs not covered by traditional RDBMS vendors.

Generative AI has transformed nearly every industry. How can you leverage GenAI to improve your productivity and efficiency?

Modernize your data layer. Learn how to design cloud-native database architectures to meet the evolving demands of AI and GenAI workloads.

Related

  • The Top 3 Challenges Facing Engineering Leaders Today—And How to Overcome Them
  • Advice to My Younger Self as a Software Engineer
  • Personal Branding for Software Engineers: Why It Matters and How to Start Today
  • Ten Questions About Staff Plus Engineers When It Comes to Technical Career Development

Trending

  • AI-Based Threat Detection in Cloud Security
  • How Kubernetes Cluster Sizing Affects Performance and Cost Efficiency in Cloud Deployments
  • Mastering Advanced Traffic Management in Multi-Cloud Kubernetes: Scaling With Multiple Istio Ingress Gateways
  • Mastering Fluent Bit: Installing and Configuring Fluent Bit on Kubernetes (Part 3)
  1. DZone
  2. Culture and Methodologies
  3. Career Development
  4. Lessons Learned From Programming at Google With Hyrum Wright and Titus Winters

Lessons Learned From Programming at Google With Hyrum Wright and Titus Winters

In this interview, listen to Google senior staff engineers discuss their careers and give advice on how to run your software engineering team.

By 
Dan Lines user avatar
Dan Lines
DZone Core CORE ·
Sep. 20, 22 · Interview
Likes (1)
Comment
Save
Tweet
Share
5.1K Views

Join the DZone community and get the full member experience.

Join For Free

Today, we are releasing the full interview of one of our favorite episodes: Dan’s 2021 conversation with engineers-turned-authors, Hyrum Wright and Titus Winters.

Dev interrupted on DZone image

As two of the most senior staff engineers at Google, both guests brought a deep understanding of software engineering to the show: Hyrum is semi-famous as the "Hyrum" of Hyrum's Law, while Titus is responsible for managing 250 million lines of code.

In their brilliant book Software Engineering at Google: Lessons Learned from Programming Over Time, Hyrum and Titus explore the engineering practices that make one of the largest codebases in the world sustainable and healthy.

Episode Highlights

  • (1:37) Google's strategic goal with its codebase
  • (5:09) How the 'Flamingo book' came to be
  • (8:01) The role of time in relation to software
  • (10:35) Hyrum's Law
  • (15:23) What is the real goal of software engineering?
  • (17:47) Problems of scale at Google
  • (23:24) Consumption of sublinear resources
  • (28:18) When shifting left is a bad thing
  • (30:25) Science of trade-offs
  • (37:00) Constraints are your friend, not your enemy
  • (42:46) Hire good people first, good programmers second

Episode Excerpts

Software Engineering Is Not Technical - It’s a People Problem

Hyrum: The more I've learned as I've been doing software engineering for however many years, right? Is that this is actually not a technical problem. Software engineering is not a technical problem. And we all love the technology. We love to argue about everything from what's the latest web framework to how many cache misses am I going to have if I use those instructions of that instruction? We love to have those discussions. But the fundamental problems in software engineering is in almost every discipline known to mankind, personkind, is the people problem, right? The interactions between people, the communication. How do you help people? How do you encourage people? How do you get them to do the best thing they want to do? I want people to be great and do the best they can, not because they love Google or they love me or whatever, but because it makes them happy and they want to do their thing. And I can help them do that as a leader in my organization and whatever else. And that will produce better software in the long term. We take more effort in the short term, but it will produce much better results and solve better problems more efficiently in the longest time-space that we're looking at. And that's why I think culture is such an important part of building a successful organization.

Software Decision Making: Can I Undo This?

Dan: A lot of our listeners are having to make these decisions and trade-offs, like, every single day. As a software engineer, you're making decisions. Do either of you have any tips of what questions you might want to ask yourself in determining should I do this thing around technical debt or not?

Titus: I think the most important piece, especially as we get more experience in our careers. A lot of people come around to the idea that it is much more important to make a decision that you can undo. I'm much less concerned with, is this necessarily the right decision? So as much as what are the stakes here? IF we make this decision and it's wrong, can we undo it? That's very important. I find most of the questions that I ask to the more junior people and my teams are mostly about, I'm just checking your work and looking at your reasoning, and I'm perfectly willing to trust you to make those decisions, so long as we have the ability to change our mind. If additional information comes up, that shows that oh, no, we're wrong. Okay, let's be honest about that. Let's move on. And I think that honesty ties a lot into the trade-offs and decision-making equation. It is far too easy for people to get caught up in, I'm going to argue that I'm right and I'm going to base my worth and my career stakes on, yes, I did this thing, and I was right. And that's really not engineering. It's really not rational. That's something else, and when we can build a culture around, yup, okay. Screwed that up, let's go fix it. Everyone learns, and that accelerates. It's the question of are you optimizing for yourself in the short term or for the team in the long term? And that turns out to be real important, too.

Additional Video and Interact

Video

While you’re here, check out this video from our YouTube channel.

Interact

Want to know how engineers at Slack and Stripe connect their dev teams’ work to the business bottom line? Or how do team leads at Shopify and CircleCI keep elite cycle time while minimizing dev burnout and maximizing retention? These are just two of the topics we’ll tackle at Interact on October 25th. A free, virtual, community-driven engineering leadership conference, Interact is a one-day event featuring over 25 of the most respected minds in development, all selected by the thousands of engineering leaders in the Dev Interrupted community. 

Engineer Engineering IT Software Software engineer Software engineering Google (verb) tech debt Wright (ADL) Data Types

Published at DZone with permission of Dan Lines, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • The Top 3 Challenges Facing Engineering Leaders Today—And How to Overcome Them
  • Advice to My Younger Self as a Software Engineer
  • Personal Branding for Software Engineers: Why It Matters and How to Start Today
  • Ten Questions About Staff Plus Engineers When It Comes to Technical Career Development

Partner Resources

×

Comments
Oops! Something Went Wrong

The likes didn't load as expected. Please refresh the page and try again.

ABOUT US

  • About DZone
  • Support and feedback
  • Community research
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Core Program
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 100
  • Nashville, TN 37211
  • support@dzone.com

Let's be friends:

Likes
There are no likes...yet! 👀
Be the first to like this post!
It looks like you're not logged in.
Sign in to see who liked this post!