📎 Webclip
Software Engineering - The Soft Parts
The post collects lessons from Addy Osmani’s first 10 years on Google Chrome and treats software engineering as a mix of technical skill, judgment, and collaboration. It emphasizes fundamentals, critical thinking, user empathy, communication, and choosing work that creates value rather than activity for its own sake.
It also covers seniority, mentoring, team trust, work-life balance, technical debt, and how large organizations should break down complex efforts. Across these themes, the post argues for clear decisions, careful estimates, and a mindset that scales through others.
Reading notes#
- Experience grows by combining techniques from different projects and using first principles to break problems into smaller parts.
- Technical mastery is shown by shipping value efficiently and avoiding work that does not help the team or company.
- Critical thinking means questioning whether the right problem is being solved, checking root causes, and testing conclusions against evidence.
- Fundamentals stay transferable across languages and stacks, while implementation details are more local to the project.
- Better decisions come from understanding both macro concepts and micro tools, including when a tool should not be used.
- Good engineering starts from the user experience and works backward to the technology needed.
- The best software comes from engineers who understand user pain points and do not hinder people’s work.
- It is often better to choose boring, well-understood technology that fits the use case than to chase hype.
- New projects and side projects can be a safe place to learn new technology by doing.
- Writing about what you learn helps reveal gaps in your understanding and deepens learning.
- Senior engineers do not need to know everything; admitting uncertainty and mistakes helps teams work better.
- Caretaking a project means sharing knowledge so it can stay healthy after staffing or role changes.
- T-shaped engineers combine depth in one area with broad awareness of the other skills needed to build products.
- Learning a new language works best when you build something tangible and gain first-hand experience.
- For complex systems, write code that is specific to the problem but only as generic as needed.
- Deep modules hide complexity behind a clear interface, lowering the cost for other developers.
- In legacy systems, distinguish between code that should remain and code that should be removed.
- On green-field projects, experimentation, iteration, and failing fast help validate ideas early.
- A definition of done helps estimate work, plan development, and avoid later revisions.
- Large releases are safer when broken into phased rollouts.
- Debugging should be systematic, starting with error messages and stack traces.
- Design docs help teams reach agreement, capture trade-offs, and support future engineers.
- Communication should be tailored to the audience, with the right level of detail for business, management, or decision-makers.
- Kindness, positive feedback, and respectful behavior strengthen teams.
- Saying no helps avoid overcommitment, delays, and unclear boundaries.
- Leaders should be open to hearing junior engineers, asking questions, and changing views when evidence changes.
- Records after meetings reduce confusion and help preserve commitments.
- Good faith means staying calm, asking questions, and not assuming bad intent in multi-team discussions.
- Seniority involves making decisions under uncertainty, thinking strategically, and setting direction for others.
- Leaders scale their effectiveness by coaching, delegating, and helping teams solve problems themselves.
- Imposter syndrome is common, but admitting mistakes and seeking guidance can help people keep learning.
- Mentoring works best when people are guided to discover answers themselves, with enough information to stay on track.
- Trust, shared context, and business understanding make teams more effective.
- Work-life balance matters because collaboration overload, bad estimates, technical debt, and burnout all reduce effectiveness.
