The Effective Software Engineer How ICs at Every Level Can Leverage AI, Prioritize High-Value Work, and Lead Beyond Their Role ADDY OSMANI
The software engineering landscape is constantly evolving, and the demands on engineers intensify with each technological and methodological shift. In such an environment, being a good coder isn’t enough—true effectiveness goes beyond technical skills. This book is designed as a guide for individual contributors who want to level up to meet the challenges of a changing industry. Author Addy Osmani offers a trove of actionable insights, real-world examples, practical frameworks, and pragmatic advice drawn from years of experience (and plenty of mistakes) in the software industry. You’ll learn the fundamental skills every effective engineer needs, as well as the strategic thinking and leadership that distinguishes senior and staff engineers. The Effective Software Engineer is a perennial resource for those who are committed to the ongoing process of learning, adapting, and striving to make a meaningful difference. • Connect your work to the overall goals of your team and organization • Identify the most important tasks and avoid distractions • Work effectively with your team, stakeholders, and users • Navigate the evolving technology landscape, including AI tools, while focusing on uniquely human contributions • Tackle complex challenges and make sound technical choices • Stay relevant and adapt to change through continuous learning and growth • Balance code quality with delivery speed while managing technical debt strategically Addy Osmani has been an engineering leader at Google for 14 years, improving the developer and user experience for billions of users. He is a passionate author of several books. SOF T WARE DEVELOPMENT “Don’t just do things, do the right things: use this practical guide to grow your skills as an engineer. The concrete steps and practical examples in this book make it a useful companion to help you increase your impact as a software engineer.” — Lena Reinhard, VP of engineering, leadership coach, and founder The Effective Software Engineer How ICs at Every Level Can Leverage AI, Prioritize High-Value Work, and Lead Beyond Their Role ISBN: 979-8-341-63817-4 US $39.99 CAN $49.99 The Effective Softw a re Eng ineer
Praise for The Effective Software Engineer Don’t just do things, do the right things: use this practical guide to grow your skills and impact as an engineer. The concrete steps and practical examples in this book make it a useful companion to help you increase your impact as a software engineer. —Lena Reinhard, VP engineering, leadership and executive coach, founder Osmani transforms the vague notion of “effectiveness” into concrete, action- able strategies. Essential reading for mid-level engineers wondering why their good work isn’t translating into career advancement. —Teal Bauer, founder and MD, Starsong Consulting Many engineers struggle to understand how to have an impact. This book gives a map with many practical tools to help engineers increase their impact and grow in their careers. —Patrick Kua, founder of the Tech Lead Academy The book empowers every IC to think bigger, lead with influence, and elevate their technical journey. A must read! —Akanksha Gupta, software development manager, AWS—Amazon A concise guide that serves as a reminder of how individual contributors can direct their time and energy more intentionally. —Shawna Martell, principal engineer, Imprint
(This page has no text content)
The Effective Software Engineer How ICs at Every Level Can Leverage AI, Prioritize High-Value Work, and Lead Beyond Their Role Addy Osmani
979-8-341-63817-4 [LSI] The Effective Software Engineer by Addy Osmani Copyright © 2026 Addy Osmani. All rights reserved. Published by O’Reilly Media, Inc., 141 Stony Circle, Suite 195, Santa Rosa, CA 95401. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (https://oreilly.com). For more information, contact our corporate/institutional sales department: 800-998-9938 or corporate@oreilly.com. Acquisitions Editor: David Michelson Development Editor: Melissa Potter Production Editor: Katherine Tozer Copyeditor: Liz Wheeler Proofreader: Laura K. Miller Indexer: BIM Creatives, LLC Cover Designer: Susan Thompson Cover Illustrator: Susan Thompson Interior Designer: Monica Kamsvaag February 2026: First Edition Revision History for the First Edition 2026-02-11: First Release See https://oreilly.com/catalog/errata.csp?isbn=9798341638174 for release details. The O’Reilly logo is a registered trademark of O’Reilly Media, Inc. The Effective Software Engi- neer, the cover image, and related trade dress are trademarks of O’Reilly Media, Inc. The views expressed in this work are those of the author and do not represent the publisher’s views. While the publisher and the author have used good faith efforts to ensure that the information and instructions contained in this work are accurate, the publisher and the author disclaim all responsibility for errors or omissions, including without limitation responsibility for damages resulting from the use of or reliance on this work. Use of the information and instructions contained in this work is at your own risk. If any code samples or other technology this work contains or describes is subject to open source licenses or the intellectual property rights of others, it is your responsibility to ensure that your use thereof complies with such licenses and/or rights.
Contents | Preface vii 1 | The Foundations of Effectiveness 1 2 | Understanding the Fundamentals (Junior to Mid-Level Focus) 19 3 | Technical Depth Versus Breadth (Senior+ Focus) 29 4 | Collaboration and Cross-Functional Influence 39 5 | Anti-Patterns That Limit Individual Contributor Effectiveness 47 6 | Career Growth and Leveling Up 73 7 | Leadership as an Individual Contributor 87 8 | Strategic Thinking for Engineers 97 9 | Avoiding Burnout and Sustaining Long-Term Success 107 10 | Team-Level Effectiveness Anti-Patterns 117 11 | Thriving in Modern Work Environments 151 v
12 | The Future of Individual Contributors 167 13 | Practical AI for Effective Software Engineers 175 | A Closing Note on Craft and Humanity 229 | Index 235 vi | CONTENTS
Preface In software engineering, understanding the difference between efficiency and effectiveness is crucial. As management consultant Peter Drucker famously said, “Efficiency is doing things right; effectiveness is doing the right things.” Ideally, you want to excel at both. This book, The Effective Software Engineer, is designed to help individual contributors (ICs) at all levels maximize their impact and effectiveness, not just their output. We often get caught up in the details of coding, focusing on speed and ele- gance. However, true effectiveness goes beyond technical skills. It means under- standing the bigger picture, prioritizing valuable tasks, collaborating smoothly, and making decisions that align with business goals. This book is a collection of my years of experience in the software industry, filled with lessons and practical advice. It’s intended to be a resource you can revisit throughout your career, providing guidance as you grow. We’ll explore the fundamental skills every effective engineer needs, as well as the strategic thinking and leadership that distinguishes senior and staff engi- neers. We’ll also explore the nuances of team dynamics and the necessity of continuous learning, showing you how to thrive in various environments, includ- ing remote settings. This book is for any software engineer looking to advance their career or thrive in a new role after a promotion. Whether you’re a junior engineer just starting out or a seasoned tech lead, I hope it provides valuable insights and actionable strategies to enhance your effectiveness and impact in software development. vii
Becoming More than Just “Efficient” Efficient engineers do things right. Effective engineers do the right things. Ideally, do the right things right. This principle, echoing Peter Drucker’s wisdom, captures where true expertise lies, and that’s the journey we’ll explore together. Let’s be honest. As software engineers, we’re often obsessed with efficiency. We tweak our integrated development environments (IDEs), learn the latest keyboard shortcuts, and strive to write concise, elegant code. We pride ourselves on doing things right. And that’s important. Nobody wants to work with messy, buggy, or incomprehensible code. Efficiency is table stakes. Note When we say “efficient code” in the context of code quality, we typically mean code that performs well computationally. In this book, we’re using “efficient” more broadly to describe engineers who work productively—this distinction matters to avoid confusion. But efficiency, on its own, isn’t enough. You can be the fastest, most techni- cally brilliant coder on the planet, churning out perfectly optimized lines of code at a breakneck pace...and still be completely ineffective. How? By building the wrong thing. This book is about effectiveness, and the distinction is crucial. Think about it. Have you ever poured your heart and soul into a project, meticulously crafting every feature, only to have it shelved? Or maybe you built a feature that perfectly matched the initial specs, but nobody used it? Sometimes the initial requirements (which are often better viewed as a starting point for collaboration rather than fixed specifications) changed, or the market shifted, or perhaps the initial problem wasn’t even the real problem. Even when you’ve deliv- ered effectively on the requirements given to you, the ultimate outcome can still fall short. That’s the sting of ineffectiveness. More than a scheduling issue, this drains the creative energy and potential required to drive real results. While not every ineffective outcome is within your control—sometimes projects are shelved due to top-down organizational decisions—understanding what effectiveness means helps you navigate these situations better. viii | PREFACE
What Is Effectiveness, Anyway? Defining “effectiveness” in software engineering can be surprisingly tricky. It’s more nuanced, more contextual, and, frankly, more human than simple metrics. At its core, effectiveness is about delivering value. It is about maximizing positive outcomes. It’s about ensuring that your efforts, your skills, and your time are directed toward the things that actually matter to your team, your company, and, ultimately, your users. This applies whether you’re building customer-facing features, maintaining internal tools and platforms, or supporting infrastructure. This value can manifest in many ways: Solving the right problem This might seem obvious, but it’s astonishing how often we get caught up in the how without fully understanding the why. Effective engineers dig deep to understand the underlying need, the root cause, and the desired outcome. They ask “why” thoughtfully—not to be obstructive or overly skeptical, but to ensure everyone is aligned on the problem being solved. Delivering impactful work Not all work is created equal. Some efforts have a massive impact on user engagement, revenue, or strategic goals. Others...don’t. Effective engineers can (with the help of their team and stakeholders) prioritize and focus on the work that will move the needle. Creating sustainable solutions Effectiveness isn’t just about the short term. It’s about building solutions that are maintainable, scalable, and adaptable—what we often call engi- neering excellence. A quick hack might seem efficient in the moment, but if it creates a mountain of technical debt, it’s ultimately ineffective. This doesn’t mean over-engineering everything; it means finding the right balance between speed and sustainability for your context. Collaborating well Software engineering is rarely a solo endeavor. Effective individual contrib- utors are also strong team members. They communicate clearly, share knowledge, and contribute to a positive and productive team environment. Optimizing the environment As engineers grow in their roles, effectiveness can also mean improv- ing the broader engineering environment—removing bottlenecks and PREFACE | ix
optimizing inputs for the team. In practice, this might mean streamlin- ing build pipelines, improving continuous integration/continuous delivery or deployment (CI/CD) reliability, or contributing to internal developer platforms that make everyone more productive. Many organizations now invest in “platform engineering” teams specifically to accelerate software delivery and improve developer experience. This becomes more relevant as you advance, though it’s less of an expectation for junior engineers still building their foundational skills. These principles form the core of an effective engineer’s mindset. They guide you to not only solve technical problems, but to solve the right technical problems in a sustainable and collaborative way, which is the central theme we will explore. The “Right Things Right” Spectrum The phrase “do the right things right” isn’t a binary switch. It’s a spectrum, a continuous balancing act. Let’s break it down with some examples: Doing the wrong things wrong This is the worst-case scenario. You’re not only building something nobody needs, but you’re also doing it poorly. For example, building a complex feature that users never asked for, with buggy implementation and no tests. This is where projects go to die. Doing the wrong things right This is the “polished turd” scenario. You’ve built something beautifully, but it’s fundamentally useless. For instance, spending three months build- ing a perfectly architected microservice for a feature that user research shows nobody wants. This is often the result of poor communication, lack of user research, or chasing shiny new technologies without a clear purpose. Doing the right things wrong This is where things get interesting. You’re addressing a real need, but your execution is flawed. Maybe the code is buggy, the architecture is unsustainable, or the user experience is clunky. This category also includes the “ship it fast and iterate” philosophy—sometimes the “wrong” execution is actually the right strategic choice when speed to market matters more than perfection. You’ll learn from real-world usage and improve iteratively. x | PREFACE
The good news is, this is fixable! Improving your technical skills and processes can move you toward the ideal. Doing the right things right This is the sweet spot. You’re delivering valuable, high-quality solutions that meet the needs of your users and your organization. This is where you want to be. This book will provide you with tools, techniques, and mindsets to move you consistently toward that sweet spot—doing the right things right. It will be less about how to write a perfect for loop and more about, for instance, determining when you need a for loop at all. Why This Book, and Why Now? The software engineering landscape is constantly evolving. New technologies emerge, methodologies shift, and the demands on engineers continue to grow. In this environment, being just a good coder isn’t enough. You need to be a strategic thinker and an effective problem solver. This book is designed to be a practical guide for individual contributors who want to level up their impact. It’s not a theoretical treatise; it’s a collection of actionable insights, real-world examples, and pragmatic advice drawn from years of experience (and plenty of mistakes!) in the software industry. What You’ll Find Inside We’ll cover a range of topics, all focused on helping you become a more effective engineer: Understanding the bigger picture How to connect your work to the overall goals of your team and organiza- tion. Prioritization and focus How to identify the most important tasks and avoid getting bogged down in distractions. Communication and collaboration How to work effectively with your team, stakeholders, and users. Problem solving and decision making How to approach complex challenges and make sound technical choices. PREFACE | xi
Continuous learning and growth How to stay relevant and adapt to the ever-changing world of software. Long-term value How to balance quality with pragmatism and avoid accumulating technical debt. Resources and templates The companion website provides practical templates, frameworks, and resources referenced throughout the book to help you apply the concepts immediately. This book is a starting point, not a destination. Effectiveness is a journey, not a checklist. It’s a continuous process of learning, adapting, and striving to make a meaningful difference. Let’s begin. Conventions Used in This Book The following typographical conventions are used in this book: Italic Indicates new terms, URLs, email addresses, filenames, and file exten- sions. Constant width Used for program listings, as well as within paragraphs to refer to program elements such as variable or function names, databases, data types, envi- ronment variables, statements, and keywords. O’Reilly Online Learning For more than 40 years, O’Reilly Media has provided tech- nology and business training, knowledge, and insight to help companies succeed. Our unique network of experts and innovators share their knowledge and expertise through books, articles, and our online learning platform. O’Reilly’s online learning platform gives you on-demand access to live training courses, in-depth learning paths, interactive coding environments, and a vast collection of text and video from O’Reilly and 200+ other publishers. For more information, visit https://oreilly.com. xii | PREFACE
How to Contact Us Please address comments and questions concerning this book to the publisher: O’Reilly Media, Inc. 141 Stony Circle, Suite 195 Santa Rosa, CA 95401 800-889-8969 (in the United States or Canada) 707-827-7019 (international or local) 707-829-0104 (fax) support@oreilly.com https://oreilly.com/about/contact.html We have a web page for this book, where we list errata and any addi- tional information. You can access this page at https://oreil.ly/the-effective-software- engineer. For news and information about our books and courses, visit https:// oreilly.com. Find us on LinkedIn: https://linkedin.com/company/oreilly-media. Watch us on YouTube: https://youtube.com/oreillymedia. Acknowledgments With special thanks to Stephen Covey, Daniel Clifford, Jeff Dean, Titus Winters, Hyrum Wright, Ben Collins-Sussman, Sarah Drasner, Fernando Loizides, Malte Ubl, Timothy Jordan, Richard Seroter and the many engineering leaders who inspire me. PREFACE | xiii
(This page has no text content)
The Foundations of Effectiveness Software engineering isn’t just about writing code; it’s about delivering value that matters. In an industry where technical competency is sometimes measured by features shipped, tickets closed, or even by lines of code written (an especially problematic metric, though still used in some organizations), the most impactful engineers distinguish themselves through a fundamentally different approach. They focus relentlessly on solving the right problems and achieving meaningful outcomes, rather than simply maximizing their visible output. This distinction between effectiveness and efficiency represents one of the most crucial mindset shifts that separates good engineers from exceptional ones. While “productivity” is often used to describe raw output (shipping code quickly), this book focuses on effectiveness—achieving meaningful results, not just com- pleting tasks. Throughout this book, we’ll explore how this foundational principle applies to every aspect of an individual contributor’s career, from writing main- tainable code to leading cross-functional initiatives. But first, we must establish what effectiveness truly means and why it matters more than raw output. The journey toward becoming an effective engineer begins with understand- ing that our role extends far beyond the technical act of programming. We go beyond simple problem-solving to act as strategic drivers of organizational success. This chapter will provide the conceptual framework that underlies all subsequent chapters, establishing the mental models that effective engineers use to navigate complex decisions and prioritize their efforts. 1 | 1
Outcomes Versus Outputs: Solve the Right Problem The software industry has a measurement problem. We often celebrate engineers who deliver quickly and frequently—those who close the most tickets, ship the most features, or even contribute the most code. While velocity and consistent delivery are valuable, these metrics capture activity rather than actual impact, fundamentally missing what matters most: whether that work creates meaning- ful value. Peter Drucker articulated this principle decades ago when he observed that “there is nothing so useless as doing efficiently that which should not be done at all.” In software-engineering terms, you could implement a perfectly architected, thoroughly tested feature that solves a problem no user actually has. Despite the technical excellence, such work contributes minimal value to the organization or its customers. To put this principle into practice, we must first learn to distinguish between the work we do (outputs) and the results we create (outcomes). While outputs are the tangible deliverables (code, features, documentation), outcomes are the changes in user behavior, business metrics, or system capabilities that result from those outputs. This section will explore this crucial distinction through three lenses: defining what a true outcome looks like, examining real-world examples of impact, and outlining the skills required to consistently align techni- cal work with genuine needs. UNDERSTANDING TRUE OUTCOMES Dan North, the originator of behavior-driven development, emphasized this dis- tinction between outputs and outcomes when he noted that “the goal of software development is not to produce stuff, the goal of software development is to impact the business in some way.” This perspective reframes every engineering decision through the lens of business and user value. Effective engineers consistently ask themselves these fundamental questions before, during, and after their work: Before starting Is this the right problem to solve? What evidence suggests this problem matters to users or the business? How does this align with our broader strategic objectives? (While you’ll often collaborate with product manag- ers [PMs], designers, and other stakeholders who own these questions, 2 | THE EFFECTIVE SOFTWARE ENGINEER
understanding the answers helps you be more effective in your implemen- tation and helps you identify potential concerns early.) During execution How can I validate that this solution addresses the core problem? What’s the minimum viable approach that will provide meaningful feedback? After completion How will I know this work was successful? What metrics or user behaviors should change as a result? This outcome-focused approach requires engineers to develop comfort with ambiguity and to actively seek context beyond their immediate technical tasks. It means regularly engaging in cross-functional collaboration with product man- agers, designers, customer support teams, and even end users to understand the broader ecosystem their code operates within. The goal isn’t to second-guess every decision, but to ensure you understand the “why” behind the work so you can make better technical choices and raise concerns when appropriate. THE SPECTRUM OF ENGINEERING IMPACT Consider four engineers working on different aspects of an ecommerce platform: engineer A spends three weeks building a sophisticated recommendation algo- rithm that improves product suggestions by 12%. However, after checking with product analytics, they discover the feature is buried deep in the user interface where few customers discover it. Despite the technical achievement, conversion rates remain unchanged. (Note: This could have been directed by leadership or product, but the lack of usage validation still makes it ineffective work.) Engineer B notices that the checkout process times out frequently during peak traffic periods, causing cart abandonment. They spend two days implement- ing a simple queue system that reduces timeout errors by 85%. Revenue from completed purchases increases measurably within the first week. Engineer C identifies that customer support receives hundreds of tickets about users forgetting their passwords. Rather than building a more complex password recovery system, they implement one-click sign-in via existing social media accounts. Support ticket volume drops by 40%, and user satisfaction scores improve significantly. Engineer D observes that the deployment pipeline is slow and unreliable, causing delays for the entire team. Though there’s no direct user request for this maintenance work, they refactor the build process and add better caching. THE FOUNDATIONS OF EFFECTIVENESS | 3
Deployment time drops from 45 minutes to 8 minutes, and the team can ship fixes and features much faster, ultimately improving their ability to respond to user needs. This illustrates how high-impact work doesn’t always come from explicit customer requests—sometimes operational excellence and infrastructure improvements deliver tremendous value. Each engineer demonstrated technical competence, but their impact varied dramatically. Engineers B, C, and D focused on observable problems with meas- urable consequences—whether user-facing or internal. Engineer A, while techni- cally sophisticated, worked on something that didn’t reflect actual usage patterns. The key takeaway is that effectiveness isn’t determined by the complexity of the code, but by the value of the outcome. Engineers B, C, and D were more effective because they delivered simpler solutions that had a direct and measurable posi- tive impact. Connecting Your Code to User Sentiment A major challenge for individual contributors (ICs) is understanding the real-world impact of their work. While not yet common practice at many organizations, AI has the potential to bridge this gap by analyzing qualita- tive user feedback at scale. After you ship a feature or a fix, an AI model could be pointed at sources like support tickets, app store reviews, or social media mentions related to that feature. Important caveat: Before using AI tools to analyze any company or customer data, always check your organization’s data privacy policy and get proper approvals. Uploading proprietary or customer information to unapproved AI services could expose your company to significant risk and potentially violate confidentiality agreements or data protection regulations. In organizations with the proper infrastructure in place, AI can per- form sentiment analysis to answer questions like: “After the v2.1 release, did user sentiment regarding the checkout flow improve?” or “What are the most common frustration keywords associated with the new dash- board?” This automates the tedious task of sifting through hundreds of user comments, providing a clear, data-driven link between your engi- neering output (the feature) and the business outcome (improved user satisfaction). This helps you and your team prioritize future work based on what truly matters to users. 4 | THE EFFECTIVE SOFTWARE ENGINEER
Comments 0
Loading comments...
Reply to Comment
Edit Comment