The 38 Books Recommended to Me in the Past Few Months
Tags: recommendations, books, pm, seniordev
Published: 2022-11-28 02:39:14

---
title: The 38 Books Recommended to Me in the Past Few Months
published: true
description: These are the 38 books I was recommended to me in the past few months. These are books I have not read yet. This is not a ranking list. Just the title & description. If it's not listed, I may have read it already. 

tags: recommendations, books, pm, seniordev
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2022-11-28 01:18 +0000
---

Half a year ago, I was bumped from a senior developer to managing a team of developers. 
Unfamiliar with navigating this world, I asked around about books to help with that next level.

Rather than keep the list private, I elect to share them here. 

1. These are books I have not read yet.  
2. This is not a ranking list. Just the title + Description.
3. If it's not listed, I may have read it already. 
 
These are the 38 books I was recommended to me in the past few months.  

*I took the description from Amazon btw.*



## Technical Books 

* [A Philosophy of Software Design by John Ousterhout](#a-philosophy-of-software-design-by-john-ousterhout)
* [An Elegant Puzzle: Systems of Engineering Management by Will Larson](#an-elegant-puzzle-systems-of-engineering-management-by-will-larson)
* [Architecture of Open Source Applications by Robert Chansler, Russell Bryant & 8 more](#architecture-of-open-source-applications-by-robert-chansler-russell-bryant-amp-8-more)
* [Fundamentals of Software Architecture: An Engineering Approach by Mark Richards Neal Ford](#fundamentals-of-software-architecture-an-engineering-approach-by-mark-richards-neal-ford)
* [Code Complete (Developer Best Practices) by McConnell Steve](#code-complete-developer-best-practices-by-mcconnell-steve)
* [Code That Fits in Your Head : Heuristics for Software Engineering by Mark Seemann](#code-that-fits-in-your-head-heuristics-for-software-engineering-by-mark-seemann)
* [Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation by Jez Humble, David Farley](#continuous-delivery-reliable-software-releases-through-build-test-and-deployment-automation-by-jez-humble-david-farley)
* [Domain Driven Design Distilled by Vaughn Vernon](#domain-driven-design-distilled-by-vaughn-vernon)
* [Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# by Scott Wlaschin](#domain-modeling-made-functional-tackle-software-complexity-with-domaindriven-design-and-f-by-scott-wlaschin)
* [Five Lines of Code: How and When to Refactor by Christian Clausen](#five-lines-of-code-how-and-when-to-refactor-by-christian-clausen)
* [Software Engineering at Google: Lessons Learned from Programming Over Time by Titus Winters, Tom Manshreck, Hyrum Wright](#software-engineering-at-google-lessons-learned-from-programming-over-time-by-titus-winters-tom-manshreck-hyrum-wright)
* [Implementing Domain Driven Design by Vaughn Vernon](#implementing-domain-driven-design-by-vaughn-vernon)
* [Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy by Vlad Khononov](#learning-domaindriven-design-aligning-software-architecture-and-business-strategy-by-vlad-khononov)
* [Modern Software Engineering by David Farley](#modern-software-engineering-by-david-farley)
* [Operating Systems: Three Easy Pieces by Remzi H Arpaci-Dusseau, Andrea C Arpaci-Dusseau](#operating-systems-three-easy-pieces-by-remzi-h-arpacidusseau-andrea-c-arpacidusseau)
* [Site Reliability Engineering: How Google Runs Production Systems by Niall Richard Murphy, Betsy Beyer, Chris Jones, Jennifer Petoff](#site-reliability-engineering-how-google-runs-production-systems-by-niall-richard-murphy-betsy-beyer-chris-jones-jennifer-petoff)
* [Systems Performance by Brendan Gregg](#systems-performance-by-brendan-gregg)
* [The Architecture of Open Source Applications by Amy Brown, Greg Wilson](#the-architecture-of-open-source-applications-by-amy-brown-greg-wilson)
* [The Art of Readable Code: Simple and Practical Techniques for Writing Better Code by Dustin Boswell, Trevor Foucher](#the-art-of-readable-code-simple-and-practical-techniques-for-writing-better-code-by-dustin-boswell-trevor-foucher)
* [The Performance of Open Source Applications by Tavish Armstrong](#the-performance-of-open-source-applications-by-tavish-armstrong)
* [Web Scalability for Startup Engineers by Artur Ejsmont](#web-scalability-for-startup-engineers-by-artur-ejsmont)
* [Working Effectively with Legacy Code by Michael Feathers](#working-effectively-with-legacy-code-by-michael-feathers)


### 500 Lines or Less Paperback by Amy Brown, Michael DiBernardo 

> As we pointed out in The Architecture of Open Source Applications, architects look at thousands of buildings during their training, and study the critiques of many more. But most software developers only ever get to know a handful of programs well — usually programs they wrote themselves. This book provides you with the chance to study how 26 experienced programmers think when they are building something new. The programs you will read about in this book were all written from scratch to solve difficult problems. A web server, a pedometer, a Python interpreter, a web-based spreadsheet, and many more applications are written, in 500 lines of code or less, and described by their creators so that you can learn from their insights and their mistakes.

### A Philosophy of Software Design by John Ousterhout	

> This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly and cheaply.


### An Elegant Puzzle: Systems of Engineering Management by Will Larson 


> "There’s a saying that people don’t leave companies, they leave managers. Management is a key part of any organization, yet the discipline is often self-taught and unstructured. Getting to the good solutions for complex management challenges can make the difference between fulfillment and frustration for teams, and, ultimately, between the success and failure of companies.

> Will Larson’s An Elegant Puzzle focuses on the particular challenges of engineering management—from sizing teams to handling technical debt to performing succession planning—and provides a path to the good solutions. Drawing from his experience at Digg, Uber, and Stripe, Larson has developed a thoughtful approach to engineering management for leaders of all levels at companies of all sizes. An Elegant Puzzle balances structured principles and human-centric thinking to help any leader create more effective and rewarding organizations for engineers to thrive in."

### Architecture of Open Source Applications by Robert Chansler, Russell Bryant & 8 more  

> Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well — usually programs they wrote themselves — and never study the great programs of history. As a result, they repeat one another’s mistakes rather than building on one another’s successes. This book’s goal is to change that. In it, the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think.

### Fundamentals of Software Architecture: An Engineering Approach by Mark Richards  Neal Ford


> Salary surveys worldwide regularly place software architect in the top 10 best jobs, yet no real guide exists to help developers become architects. Until now. This book provides the first comprehensive overview of software architecture’s many aspects. Aspiring and existing architects alike will examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.

> Mark Richards and Neal Ford—hands-on practitioners who have taught software architecture classes professionally for years—focus on architecture principles that apply across all technology stacks. You’ll explore software architecture in a modern light, taking into account all the innovations of the past decade."

### Code Complete (Developer Best Practices) by McConnell Steve 

> "Widely considered one of the best practical guides to programming, Steve McConnell’s original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code.


### Code That Fits in Your Head : Heuristics for Software Engineering by Mark Seemann  

> Reflecting decades of experience helping software teams succeed, Mark Seemann guides you from zero (no code) to deployed features and shows how to maintain a good cruising speed as you add functionality, address cross-cutting concerns, troubleshoot, and optimize. You'll find valuable ideas, practices, and processes for key issues ranging from checklists to teamwork, encapsulation to decomposition, API design to unit testing.

### Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation by Jez Humble, David Farley 

> This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours― sometimes even minutes–no matter what the size of a project or the complexity of its code base.


### Domain Driven Design Distilled by Vaughn Vernon 

> Domain-Driven Design (DDD) software modeling delivers powerful results in practice, not just in theory, which is why developers worldwide are rapidly moving to adopt it. Now, for the first time, there’s an accessible guide to the basics of DDD: What it is, what problems it solves, how it works, and how to quickly gain value from it.

> Concise, readable, and actionable, Domain-Driven Design Distilled never buries you in detail–it focuses on what you need to know to get results. Vaughn Vernon, author of the best-selling Implementing Domain-Driven Design, draws on his twenty years of experience applying DDD principles to real-world situations. He is uniquely well-qualified to demystify its complexities, illuminate its subtleties, and help you solve the problems you might encounter.

### Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# by Scott Wlaschin


> You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these techniques to build software that is business-focused, flexible, and high quality.

> Domain-driven design is a well-established approach to designing software that ensures that domain experts and developers work together effectively to create high-quality software. This book is the first to combine DDD with techniques from statically typed functional programming. This book is perfect for newcomers to DDD or functional programming - all the techniques you need will be introduced and explained.

> Model a complex domain accurately using the F# type system, creating compilable code that is also readable documentation---ensuring that the code and design never get out of sync. Encode business rules in the design so that you have "compile-time unit tests," and eliminate many potential bugs by making illegal states unrepresentable. Assemble a series of small, testable functions into a complete use case, and compose these individual scenarios into a large-scale design. Discover why the combination of functional programming and DDD leads naturally to service-oriented and hexagonal architectures. Finally, create a functional domain model that works with traditional databases, NoSQL, and event stores, and safely expose your domain via a website or API.

### Five Lines of Code: How and When to Refactor by Christian Clausen

> Five Lines of Code teaches refactoring that's focused on concrete rules and getting any method down to five lines or less! There’s no jargon or tricky automated-testing skills required, just easy guidelines and patterns illustrated by detailed code samples. 

### Software Engineering at Google: Lessons Learned from Programming Over Time by Titus Winters, Tom Manshreck, Hyrum Wright 
	
> Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering.

> How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization.

### Implementing Domain Driven Design by Vaughn Vernon 


> Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools. Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations.

> Building on Eric Evans’ seminal book, Domain-Driven Design, the author presents practical DDD techniques through examples from familiar domains. Each principle is backed up by realistic Java examples–all applicable to C# developers–and all content is tied together by a single case study: the delivery of a large-scale Scrum-based SaaS system for a multitenant environment.

> The author takes you far beyond “DDD-lite” approaches that embrace DDD solely as a technical toolset, and shows you how to fully leverage DDD’s “strategic design patterns” using Bounded Context, Context Maps, and the Ubiquitous Language. Using these techniques and examples, you can reduce time to market and improve quality, as you build software that is more flexible, more scalable, and more tightly aligned to business goals.

### Learning Domain-Driven Design: Aligning Software Architecture and Business Strategy by Vlad Khononov 

> "Building software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but also need to understand the business domains behind the software. This practical book provides you with a set of core patterns, principles, and practices for analyzing business domains, understanding business strategy, and, most importantly, aligning software design with its business needs.

> Author Vlad Khononov shows you how these practices lead to robust implementation of business logic and help to future-proof software design and architecture. You'll examine the relationship between domain-driven design (DDD) and other methodologies to ensure you make architectural decisions that meet business requirements. You'll also explore the real-life story of implementing DDD in a startup company."


### Modern Software Engineering by David Farley	

> "In Modern Software Engineering, continuous delivery pioneer David Farley helps software professionals think about their work more effectively, manage it more successfully, and genuinely improve the quality of their applications, their lives, and the lives of their colleagues.

> Writing for programmers, managers, and technical leads at all levels of experience, Farley illuminates durable principles at the heart of effective software development. He distills the discipline into two core exercises: learning and exploration and managing complexity. For each, he defines principles that can help you improve everything from your mindset to the quality of your code, and describes approaches proven to promote success."

###  Operating Systems: Three Easy Pieces by Remzi H Arpaci-Dusseau, Andrea C Arpaci-Dusseau 

> OSTEP ("oh step"), or the "the comet book", represents the culmination of years of teaching intro to operating systems to both undergraduates and graduates at the University of Wisconsin-Madison Computer Sciences department for nearly 20 years.The book is organized around three concepts fundamental to OS construction: virtualization (of CPU and memory), concurrency (locks and condition variables), and persistence (disks, RAIDS, and file systems).The material, if combined with serious project work and homeworks, will lead students to a deeper understanding and appreciation of modern OSes.The authors, Remzi and Andrea Arpaci-Dusseau, are both professors of Computer Sciences at the University of Wisconsin-Madison. They have been doing research in computer systems for over 20 years, working together since their first graduate operating systems class at U.C. Berkeley in 1993.Since that time, they have published over 100 papers on the performance and reliability of many aspects of modern computer systems, with a special focus on file and storage systems. Their work has been recognized with numerous best-paper awards, and some of their innovations can be found in the Linux and BSD operating systems today.

### Site Reliability Engineering: How Google Runs Production Systems by Niall Richard Murphy, Betsy Beyer, Chris Jones, Jennifer Petoff

> At most technology companies, you'll reach Senior software engineer, the career level for software engineers, in five to eight years. At the career level, your company's career ladder won't require that you work towards the next promotion; being promoted further is an exception rather than expected. This is also when many engineers are first given an opportunity to move into engineering management. Over the past few years, we've seen a flurry of books unlocking the engineering management career path, like Camille Fournier's The Manager's Path, Julie Zhuo's The Making of a Manager, Lara Hogan's Resilient Management, and even my own An Elegant Puzzle. The engineering management career isn't an easy one, but there are maps available to help navigate it. What if you want to advance your career without becoming an engineering manager? The technical leadership path remains relatively undocumented, hard to navigate, and inconsistent across companies. Staff Engineer is your guide to building your career towards a Staff engineering role, receiving the title, and succeeding within the role.


### Systems Performance	by Brendan Gregg 

> Systems Performance, Second Edition, covers concepts, strategy, tools, and tuning for operating systems and applications, using Linux-based operating systems as the primary example. A deep understanding of these tools and techniques is critical for developers today. Implementing the strategies described in this thoroughly revised and updated edition can lead to a better end-user experience and lower costs, especially for cloud computing environments that charge by the OS instance.

> Systems performance expert and best-selling author Brendan Gregg summarizes relevant operating system, hardware, and application theory to quickly get professionals up to speed even if they have never analyzed performance before. Gregg then provides in-depth explanations of the latest tools and techniques, including extended BPF, and shows how to get the most out of cloud, web, and large-scale enterprise systems.


### The Architecture of Open Source Applications by Amy Brown, Greg Wilson 


> Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well — usually programs they wrote themselves — and never study the great programs of history. As a result, they repeat one another’s mistakes rather than building on one another’s successes. This book’s goal is to change that. In it, the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think.

### The Art of Readable Code: Simple and Practical Techniques for Writing Better Code by Dustin Boswell, Trevor Foucher 	

> As programmers, we’ve all seen source code that’s so ugly and buggy it makes our brain ache. Over the past five years, authors Dustin Boswell and Trevor Foucher have analyzed hundreds of examples of "bad code" (much of it their own) to determine why they’re bad and how they could be improved. Their conclusion? You need to write code that minimizes the time it would take someone else to understand it—even if that someone else is you.

This book focuses on basic principles and practical techniques you can apply every time you write code. Using easy-to-digest code examples from different languages, each chapter dives into a different aspect of coding, and demonstrates how you can make your code easy to understand.

### The Performance of Open Source Applications by Tavish Armstrong 

> In 1974, Donald Knuth wrote, "We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil." With computers available now that are millions of times faster than those available then, today's programmers have even less reason to worry about shaving cycles and saving bytes than those a generation ago. But "less" isn't "none": every once in a while, squeezing the last ounce of performance out of the machine really does matter.

> This book is written by over a dozen developers who have grappled with slow code, memory leaks, or uncontrollable latency in open source software. They share their mistakes and successes, and give the reader an over-the-shoulder view of how they approached their specific challenges. With examples from bioinformatics research code to web browsers, the solutions are as varied as the problems.

> This book will help junior and senior developers alike understand how their colleagues think about performance.

### Web Scalability for Startup Engineers by Artur Ejsmont


> Web Scalability for Startup Engineers shows engineers working at startups and small companies how to plan and implement a comprehensive scalability strategy. It presents broad and holistic view of infrastructure and architecture of a scalable web application. Successful startups often face the challenge of scalability, and the core concepts driving a scalable architecture are language and platform agnostic.

The book covers scalability of HTTP-based systems (websites, REST APIs, SaaS, and mobile application backends), starting with a high-level perspective before taking a deep dive into common challenges and issues. This approach builds a holistic view of the problem, helping you see the big picture, and then introduces different technologies and best practices for solving the problem at hand. The book is enriched with the author's real-world experience and expert advice, saving you precious time and effort by learning from others' mistakes and successes.

### Working Effectively with Legacy Code by Michael Feathers

This book provides programmers with the ability to cost effectively handlecommon legacy code problems without having to go through the hugelyexpensive task of rewriting all existing code. It describes a series of practicalstrategies that developers can employ to bring their existing softwareapplications under control. The author provides useful guidance about how touse these strategies when refactoring or making functional changes to codebases. One of the book's key points is that it teaches developers to write teststhat can be used to make sure they are not unintentionally changing theapplication as they optimize it. Examples are provided in Java, C++, and Csharp,and the book assumes that the reader has some knowledge of UMLnotation. Strategies using UML and code in C++ and Java primarily whilelanguage independent advice will be delivered in side bars and appendices forlanguage specific users.


## Management Books

* [Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations by Nicole Forsgren PhD, Jez Humble, Gene Kim](#accelerate-the-science-of-lean-software-and-devops-building-and-scaling-high-performing-technology-organizations-by-nicole-forsgren-phd-jez-humble-gene-kim)
* [RESILIENT MANAGEMENT by Lara Hogan](#resilient-management-by-lara-hogan)
* [Peopleware: Productive Projects and Teams by DeMarco Tom, Lister Tim](#peopleware-productive-projects-and-teams-by-demarco-tom-lister-tim)
* [Psychology of computer programming Paperback by mr. Gerald m Weinberg](#psychology-of-computer-programming-paperback-by-mr-gerald-m-weinberg)
* [Radical Candor: Be a Kick-Ass Boss Without Losing Your Humanity by Kim Scott](#radical-candor-be-a-kickass-boss-without-losing-your-humanity-by-kim-scott)
* [The Software Architect Elevator: Redefining the Architect's Role in the Digital Enterprise by Gregor Hohpe](#the-software-architect-elevator-redefining-the-architects-role-in-the-digital-enterprise-by-gregor-hohpe)
* [Staff Engineer: Leadership beyond the management track by Will Larson](#staff-engineer-leadership-beyond-the-management-track-by-will-larson)
* [Team Topologies: Organizing Business and Technology Teams for Fast Flow by Matthew Skelton, Manuel Pais](#team-topologies-organizing-business-and-technology-teams-for-fast-flow-by-matthew-skelton-manuel-pais)
* [The Making of a Manager: What to Do When Everyone Looks to You by Julie Zhuo](#the-making-of-a-manager-what-to-do-when-everyone-looks-to-you-by-julie-zhuo)
* [The Staff Engineer's Path by Tanya Reilly](#the-staff-engineers-path-by-tanya-reilly)
* [Grokking Simplicity: Taming complex software with functional thinking by Eric Normand](#grokking-simplicity-taming-complex-software-with-functional-thinking-by-eric-normand)
* [Rapid Development: Taming Wild Software Schedules by Steve McConnell](#rapid-development-taming-wild-software-schedules-by-steve-mcconnell)
* [Waltzing With Bears: Managing Risk on Software Projects by Tom DeMarco, Timothy Lister](#waltzing-with-bears-managing-risk-on-software-projects-by-tom-demarco-timothy-lister)
* [Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard](#release-it-design-and-deploy-productionready-software-by-michael-t-nygard)
* [The Art of Doing Science and Engineering: Learning to Learn by Richard W. Hamming](#the-art-of-doing-science-and-engineering-learning-to-learn-by-richard-w-hamming)

### Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations by Nicole Forsgren PhD, Jez Humble, Gene Kim

> How can we apply technology to drive business value? For years, we've been told that the performance of software delivery teams doesn't matter―that it can't provide a competitive advantage to our companies. Through four years of groundbreaking research to include data collected from the State of DevOps reports conducted with Puppet, Dr. Nicole Forsgren, Jez Humble, and Gene Kim set out to find a way to measure software delivery performance―and what drives it―using rigorous statistical methods. This book presents both the findings and the science behind that research, making the information accessible for readers to apply in their own organizations.
Readers will discover how to measure the performance of their teams, and what capabilities they should invest in to drive higher performance. This book is ideal for management at every level.

### RESILIENT MANAGEMENT by Lara Hogan

> Finding your bearings as a manager can feel overwhelming—but you don’t have to fake it to make it, and you don’t have to go it alone. Lara Hogan shares her recipe for supporting and leading a tech team—from developing your mentoring and coaching skills, to getting comfortable with having difficult conversations, to boosting trust among teammates—while staying grounded along the way.

### Peopleware: Productive Projects and Teams by DeMarco Tom, Lister Tim

> Few books in computing have had as profound an influence on software management as Peopleware. The unique insight of this longtime best seller is that the major issues of software development are human, not technical. They’re not easy issues; but solve them, and you’ll maximize your chances of success.

### Psychology of computer programming Paperback by mr. Gerald m Weinberg 

> This book has only one major purpose-to trigger the beginning of a new field of study: computer programming as a human activity, or, in short, the psychology of computer programming. All other goals are subservient to that one. For instance, I have tried to make the book interesting and nontechnical, insofar as is possible, so as to encourage the greatest number of people to read it: not just programmers, but programming managers and others connected with programming in the many ways we are connected with programming these days. What I am trying to accomplish is to have the reader say, upon finishing the book, "Yes, programming is not just a matter of hardware and software. I shall have to look at things in a new way from now on."

### Radical Candor: Be a Kick-Ass Boss Without Losing Your Humanity by Kim Scott

> Radical Candor has been embraced around the world by leaders of every stripe at companies of all sizes. Now a cultural touchstone, the concept has come to be applied to a wide range of human relationships.

> The idea is simple: You don't have to choose between being a pushover and a jerk. Using Radical Candor—avoiding the perils of Obnoxious Aggression, Manipulative Insincerity, and Ruinous Empathy—you can be kind and clear at the same time.

> Kim Scott was a highly successful leader at Google before decamping to Apple, where she developed and taught a management class. Since the original publication of Radical Candor in 2017, Scott has earned international fame with her vital approach to effective leadership and co-founded the Radical Candor executive education company, which helps companies put the book's philosophy into practice.

> Radical Candor is about caring personally and challenging directly, about soliciting criticism to improve your leadership and also providing guidance that helps others grow. It focuses on praise but doesn't shy away from criticism—to help you love your work and the people you work with."


### The Software Architect Elevator: Redefining the Architect's Role in the Digital Enterprise by Gregor Hohpe

> As the digital economy changes the rules of the game for enterprises, the role of software and IT architects is also transforming. Rather than focus on technical decisions alone, architects and senior technologists need to combine organizational and technical knowledge to effect change in their company’s structure and processes. To accomplish that, they need to connect the IT engine room to the penthouse, where the business strategy is defined.

> In this guide, author Gregor Hohpe shares real-world advice and hard-learned lessons from actual IT transformations. His anecdotes help architects, senior developers, and other IT professionals prepare for a more complex but rewarding role in the enterprise.


### Staff Engineer: Leadership beyond the management track by Will Larson 

At most technology companies, you'll reach Senior software engineer, the career level for software engineers, in five to eight years. At the career level, your company's career ladder won't require that you work towards the next promotion; being promoted further is an exception rather than expected. This is also when many engineers are first given an opportunity to move into engineering management. Over the past few years, we've seen a flurry of books unlocking the engineering management career path, like Camille Fournier's The Manager's Path, Julie Zhuo's The Making of a Manager, Lara Hogan's Resilient Management, and even my own An Elegant Puzzle. The engineering management career isn't an easy one, but there are maps available to help navigate it. What if you want to advance your career without becoming an engineering manager? The technical leadership path remains relatively undocumented, hard to navigate, and inconsistent across companies. Staff Engineer is your guide to building your career towards a Staff engineering role, receiving the title, and succeeding within the role.

### Team Topologies: Organizing Business and Technology Teams for Fast Flow by Matthew Skelton, Manuel Pais 

> Effective software teams are essential for any organization to deliver value continuously and sustainably. But how do you build the best team organization for your specific goals, culture, and needs?

> Team Topologies is a practical, step-by-step, adaptive model for organizational design and team interaction based on four fundamental team types and three team interaction patterns. It is a model that treats teams as the fundamental means of delivery, where team structures and communication pathways are able to evolve with technological and organizational maturity.

> In Team Topologies, IT consultants Matthew Skelton and Manuel Pais share secrets of successful team patterns and interactions to help readers choose and evolve the right team patterns for their organization, making sure to keep the software healthy and optimize value streams.

> Team Topologies is a major step forward in organizational design for software, presenting a well-defined way for teams to interact and interrelate that helps make the resulting software architecture clearer and more sustainable, turning inter-team problems into valuable signals for the self-steering organization.

### The Making of a Manager: What to Do When Everyone Looks to You by Julie Zhuo 

> Congratulations, you're a manager! After you pop the champagne, accept the shiny new title, and step into this thrilling next chapter of your career, the truth descends like a fog: You don't really know what you're doing.

> That's exactly how Julie Zhuo felt when she became a rookie manager at the age of 25. She stared at a long list of logistics - from hiring to firing, from meeting to messaging, from planning to pitching - and faced a thousand questions and uncertainties. How was she supposed to spin teamwork into value? How could she be a good steward of her reports' careers? What was the secret to leading with confidence in new and unexpected situations?

> Now, having managed dozens of teams spanning tens to hundreds of people, Julie knows the most important lesson of all: Great managers are made, not born. If you care enough to be reading this, then you care enough to be a great manager. "

## The Manager's Path: A Guide for Tech Leaders Navigating Growth and Change by Camille Fournier

> Managing people is difficult wherever you work. But in the tech industry, where management is also a technical discipline, the learning curve can be brutal - especially when there are few tools, texts, and frameworks to help you. In this practical guide, author Camille Fournier (tech lead turned CTO) takes you through each stage in the journey from engineer to technical manager.

> From mentoring interns to working with senior staff, you'll get actionable advice for approaching various obstacles in your path. This book is ideal whether you're a new manager, a mentor, or a more experienced leader looking for fresh advice. Listen to this audiobook and learn how to become a better manager and leader in your organization.

### The Staff Engineer's Path by Tanya Reilly

> For years, companies have rewarded their most effective engineers with management positions. But treating management as the default path for an engineer with leadership ability doesn't serve the industry well--or the engineer. The staff engineer's path allows engineers to contribute at a high level as role models, driving big projects, determining technical strategy, and raising everyone's skills.

> This in-depth book shows you how to understand your role, manage your time, master strategic thinking, and set the standard for technical work. You'll read about how to be a leader without direct authority, how to plan ahead to make the right technical decisions, and how to make everyone around you better, while still growing as an expert in your domain.


### Grokking Simplicity: Taming complex software with functional thinking by Eric Normand

> Distributed across servers, difficult to test, and resistant to modification - modern software is complex. Grokking Simplicity is a friendly, practical guide that will change the way you approach software design and development. It introduces a unique approach to functional programming that explains why certain features of software are prone to complexity, and teaches you the functional techniques you can use to simplify these systems so that they’re easier to test and debug.

### Rapid Development: Taming Wild Software Schedules by Steve McConnell 

> Corporate and commercial software-development teams all want solutions for one important problem―how to get their high-pressure development schedules under control. In RAPID DEVELOPMENT, author Steve McConnell addresses that concern head-on with overall strategies, specific best practices, and valuable tips that help shrink and control development schedules and keep projects moving. 

### Waltzing With Bears: Managing Risk on Software Projects by Tom DeMarco, Timothy Lister

> Any software project that's worth starting will be vulnerable to risk. Since greater risks bring greater rewards, a company that runs away from risk will soon find itself lagging behind its more adventurous competition. By ignoring the threat of negative outcomes—in the name of positive thinking or a Can-Do attitude—software managers drive their organizations into the ground.

> In Waltzing with Bears, Tom DeMarco and Timothy Lister—the best-selling authors of Peopleware—show readers how to identify and embrace worthwhile risks. Developers are then set free to push the limits.

### Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard

> A single dramatic software failure can cost a company millions of dollars - but can be avoided with simple changes to design and architecture. This new edition of the best-selling industry standard shows you how to create systems that run longer, with fewer failures, and recover better when bad things happen. New coverage includes DevOps, microservices, and cloud-native architecture. Stability antipatterns have grown to include systemic problems in large-scale systems. This is a must-have pragmatic guide to engineering for production systems.

> If you're a software developer, and you don't want to get alerts every night for the rest of your life, help is here. With a combination of case studies about huge losses - lost revenue, lost reputation, lost time, lost opportunity - and practical, down-to-earth advice that was all gained through painful experience, this book helps you avoid the pitfalls that cost companies millions of dollars in downtime and reputation. Eighty percent of project life-cycle cost is in production, yet few books address this topic.

> This updated edition deals with the production of today's systems - larger, more complex, and heavily virtualized - and includes information on chaos engineering, the discipline of applying randomness and deliberate stress to reveal systematic problems. Build systems that survive the real world, avoid downtime, implement zero-downtime upgrades and continuous delivery, and make cloud-native applications resilient. Examine ways to architect, design, and build software - particularly distributed systems - that stands up to the typhoon winds of a flash mob, a Slashdotting, or a link on Reddit. Take a hard look at software that failed the test and find ways to make sure your software survives.


### The Art of Doing Science and Engineering: Learning to Learn by Richard W. Hamming

> What inspires and spurs on a great idea? Can we train ourselves to think in a way that will enable world-changing understandings and insights to emerge?

> Richard Hamming said we can. He first inspired a generation of engineers, scientists, and researchers in 1986 with “You and Your Research,” an electrifying sermon on why some scientists do great work, why most don’t, why he did, and why you can—and should—too. The Art of Doing Science and Engineering is the full expression of what “You and Your Research” outlined. It's a book about thinking; more specifically, a style of thinking by which great ideas are conceived.

> The book is filled with stories of great people performing mighty deeds—but they are not meant simply to be admired. Instead, they are to be aspired to, learned from, and surpassed. Hamming consistently returns to Shannon’s information theory, Einstein’s theory of relativity, Grace Hopper’s work on high-level programming, Kaiser’s work on digital fillers, and his own work on error-correcting codes. He also recounts a number of his spectacular failures as clear examples of what to avoid.