Learning from Giants #4
A definition of standing on the shoulders of giants, Napkin maths in software, Google's code review guidelines, Airbnb's data protection platforms, and Design systems and component libs.
👋 Hi, this is Mathias with your weekly drop of the 1% best, most actionable, and timeless resources to grow as an engineering or product leader. Handpicked from the best authors and companies.
Did a friend send this to you? Subscribe to get these weekly drops directly in your inbox. Read the archive for even more great content. Also: I share these articles daily on LinkedIn.
Everything you need to know about Style Guides, Design Systems, and Component Libraries
🎨 Design systems (or lack thereof) can make or break a product!
It's not the 2000s anymore. Being online isn't enough to be successful. You need a beautiful, consistent product Combine that with a fabulous ProductHunt launch strategy, and you've got a 2020s product success 🎉.
Yet new issues arise a few months or years after launch as the team scales.
"You start to notice the buttons in one part of the site are slightly different than everywhere else. One team decides to build a feature that another team has (unknowingly) already completed. Communication breakdowns happen. Consistency is lost."
"To prevent this issue from happening, or to fix the existing lack of consistency in your products, you need three things:
Style Guide
Component Library
Design System”
📗 Lee Robinson's Everything I Know About Style Guides, Design Systems, and Component Libraries will help you understand what these concepts mean and then get started on your path to UX/UI consistency. Even if you're not a design system newbie, the second part will teach you a thing or two. Lee lists the questions you must answer and provides the proper tooling and resources to go even further.
PS: If you're a start-up, I would advise starting with an open-source component library (see Lee's list at the end of the article). Most of them have support for custom themes, so you can make it yours and start solving customer problems immediately.
Napkin Math and First Principles thinking in Software Engineering
"First-principles thinking is one of the best ways to reverse-engineer complicated problems." Farnam Street.
It's also the best way to think for yourself and build an opinion.
Elon Musk himself is the most vocal proponent of reasoning from first principles. He says that thinking is what led him to create SpaceX.
But!
As software and product people, accumulating abstraction layers has led us to believe in magic frameworks rather than first principles. And when faced with a performance or systems architecture problem, when magic doesn't do anymore, we're left helpless!
"The goal of this project is to collect software, numbers, and techniques to quickly estimate the expected performance of systems from first-principles."
"How quickly can you read 1 GB of memory? How much storage cost should you expect to pay for logging for an application with 100,000 RPS?"
📗 Simon Eskildsen's Napkin Math's goal is to help you answer these questions in seconds, not days, using first-principles thinking and reference numbers. File system, memory, network, all these use atomic operations under the hood that you can often estimate. We always have dozens of solutions to our software problems, but only a few make sense. Napkin math can help you rule out most of them based on a quick calculus. Additionally, comparing your napkin math to a real-world situation can help you identify opportunities, like SpaceX's rocket cost, or gaps in your mental model.
If you want concrete examples, Simon has a blog with tens of real-world software problems investigated and solved using napkin math. A must-read.
Also: Simon’s napkin math blog posts.
Google’s Code Review Guide for Developers
"There is no such thing as "perfect" code—there is only better code."
A 2018 study found that the overall median latency for the entire code review process is under 4 hours at Google. Five times quicker than previous studies at AMD, Microsoft. How do they do it?
The answer deserves its own post, but in short:
Smaller changes
High expectations and a high quality and consistency bar
Only one reviewer approval is required (most of the time)
A super detailed Code Review Developer Guide
And lucky us, it's open-source!
📗 Google's Code Review Developer Guide is the most comprehensive and straightforward guide to code reviews you will find online. It covers everything from submitting a change for review to managing expectations, timing, what to review, how to request changes... Here are a few golden quotes to get you to read it:
"If it's too hard for you to read the code and this is slowing down the review, then you should let the developer know that and wait for them to clarify it before you try to review it. At Google, we hire great software engineers, and you are one of them. If you can't understand the code, it's very likely that other developers won't either. "
"If you ask a developer to explain a piece of code that you don't understand, that should usually result in them rewriting the code more clearly. [...] Explanations written only in the code review tool are not helpful to future code readers."
“If you previously had fairly lax code reviews and you switch to having strict reviews, some developers will complain very loudly. Improving the speed of your code reviews usually causes these complaints to fade away."
How Airbnb Automated their Data Protection Processes company-wide
As an engineer at <BigCo>, you are tasked with ensuring the company complies with data protection policies and internal security requirements.
You could regularly audit each team and teach them to comply. But this won't scale.
"We decided to build a data protection platform to enable and empower Airbnb to protect data in compliance with global regulations and security requirements."
Sensitive data and secrets can leak everywhere, even when you're careful. What's one in a million when you have billions of operations and thousands of data stores?
First, you need a comprehensive inventory of data stores:
"We built a scalable data classification system that continuously scans and classifies our data assets to determine what type of data is stored within them."
Then only can you automate protecting it:
"Based on the understanding of the data, the Data Protection Platform strives to automate its protection or enables and notifies teams across the company to protect it. This automation focuses on a few key areas: data discovery, prevention of sensitive data leakages, and data encryption."
📗 Airbnb's Automating Data Protection at Scale is a three-article series detailing how the team in charge built a standalone data protection system. Elizabeth Nammour describes the challenges, explains why these systems exist, and is specific enough to give insight into how her team solved the problem. If you're reading this, I would love a part 4 about the impact: numbers and stories about what the system caught!
What Standing on the Shoulders of Giants is and how it can be a Superpower
And no: the answer is not “a newsletter” ;).
Engineers' number one pitfall is thinking ideas come solely from their genius minds.
The more senior you get, the more context switching, coaching, and meetings fill your days. You have to optimize and cut to keep a healthy work-life balance. That's when many people cut reading, technical watch, and anything not directly related to their current task.
But what do the best inventors have in common?
"They mastered the best of what other people had already figured out, then made that expertise their own."
We call that Standing on the shoulders of giants.
"Creativity is just connecting things. When you ask creative people how they did something, they feel a little guilty because they didn't really do it. They just saw something. It seemed obvious to them after a while; that's because they were able to connect experiences they've had and synthesize new things." Steve Jobs
📗 Farnam Street's Standing on the Shoulders of Giants introduces a concept I cannot help but mention almost daily. It does so in a simple, documented, and inspiring way. And to add a personal note, once you discover the power of thinking this way, you can't go back.
"Standing on the shoulders of giants is a necessary part of creativity, innovation, and development. It doesn't make what you do less valuable. Embrace it."