Notes from "21 Lessons from 14 Years at Google"
Notes from articles “21 Lessons from 14 Years at Google” and “14 More Lessons from 14 years at Google”.
Points summarised mostly with ChatGPT for easy recap, I grouped them in themes.
Delivery
- The best engineers are obsessed with solving user problems. – Value comes from deeply understanding users and their pain points, rather than from technology for technology’s sake. [I.1]
- Bias towards action. Ship. You can edit a bad page, but you can’t edit a blank one. – Early delivery and iteration beat endless perfectionism. [I.3]
- Focus on what you can control. Ignore what you can’t. – Effective engineers concentrate their energy on areas they can influence. [I.10]
- When a measure becomes a target, it stops measuring. – Metrics degrade when they become targets instead of insights. [I.15]
- Process exists to reduce uncertainty, not to create paper trails. – Good process clarifies coordination, bad process just adds overhead. [I.19]
- Eventually, time becomes worth more than money. Act accordingly. – Prioritizing personal and professional time becomes critical with experience. [I.20]
- There are no shortcuts, but there is compounding. – Deliberate practice and reflection compound into meaningful career progress. [I.21]
- The best engineers pick the right problems to solve. – Saying yes selectively protects focus on the most impactful work. [II.1]
- “We should” is not a plan. “On Tuesday, I will” is a plan. – Converting intentions into specific actions drives progress. [II.3]
- Slow code is sometimes a symptom. Slow decisions are always a problem. – Delays are often caused by unclear decision rights or context gaps. [II.4]
- AI makes drafts cheap. Taste becomes expensive. – With AI generating drafts easily, human judgment in choosing the best options becomes the key skill. [II.13]
Teamwork
- Being right is cheap. Getting to right together is the real work. – Alignment with others on goals and solutions matters more than winning technical arguments. [I.2]
- Your code doesn’t advocate for you. People do. – Influence and reputation come from relationships and visibility, not just code. [I.6]
- Most “slow” teams are actually misaligned teams. – Misalignment and unclear priorities slow progress more than technical issues. [I.9]
- The work that makes other work possible is priceless – and invisible. – Glue work like docs and onboarding is crucial, even if rarely celebrated. [I.13]
- Your network outlasts every job you’ll ever have. – Long-term relationships deliver opportunities beyond any single role. [I.17]
- When you add a team, you add edges, not just nodes. – More people introduce communication complexity unless ownership and interfaces are clear. [II.11]
- Trust is a latency optimization for teams. – High trust accelerates decisions and reduces coordination overhead. [II.14]
Communication
- Clarity is seniority. Cleverness is overhead. – Clear code and communication reduce risk and improve team effectiveness. [I.4]
- Writing forces clarity. The fastest way to learn something better is to try teaching it. – Teaching and documenting concepts deepens understanding. [I.12]
- If you win every debate, you’re probably accumulating silent resistance. – Real alignment requires integrating others’ perspectives, not just winning arguments. [I.14]
- Admitting what you don’t know creates more safety than pretending you do. – Vulnerability encourages learning and psychological safety. [I.16]
- If you can’t say what decision you’re asking for, you’re not ready for the meeting. – Meetings should start with a defined decision ask to avoid aimless discussion. [II.2]
- You can’t “communication” your way out of a bad interface between teams. – Structural boundaries matter more than more meetings or messages. [II.6]
- The best escalation comes with a proposal. – Presenting options and recommendations earns trust and accelerates decisions. [II.7]
- Small PRs are kindness. Especially if the PR is AI generated. – Incremental changes improve reviewability and team velocity. [II.10]
Systems
- Novelty is a loan you repay in outages, hiring, and cognitive overhead. – New or exotic tech brings hidden operational costs. [I.5]
- The best code is the code you never had to write. – Avoiding unnecessary code simplifies systems and reduces long-term maintenance. [I.7]
- At scale, even your bugs have users. – Bugs become dependencies at scale and require careful handling. [I.8]
- Abstractions don’t remove complexity. They move it to the day you’re on call. – Abstractions shift complexity rather than eliminate it. [I.11]
- Most performance wins come from removing work, not adding cleverness. – Eliminating unnecessary tasks often yields more impact than optimization. [I.18]
- Reliability is a product feature. Treat it like one. – System reliability deserves the same planning and resourcing as other features. [II.5]
- Avoid hero culture. Build systems that don’t require heroes. – Sustainable systems reduce reliance on individual heroics. [II.8]
- Make observability part of the feature. – Built-in telemetry and visibility are essential for real-world reliability and iteration. [II.9]
- The migration is never just a migration. – Technical migrations involve negotiation, human effort, and long-tail compatibility work. [II.12]