Books and software I recommend.
Here’s a list of the books and software that I highly recommend, whether you’re looking to improve your skills or enhance your workflow.
Favorite Books
Refactoring by Martin Fowler
A comprehensive guide on improving the design of existing code, with a focus on making code easier to understand and maintain.
Patterns of Enterprise Application Architecture by Martin Fowler
Outlines architectural patterns that help solve common enterprise application development problems.
Designing Data-Intensive Applications by Martin Kleppmann
A deep dive into designing scalable, reliable, and maintainable data systems, covering databases, stream processing, and data integration.
Continuous Architecture in Practice by Murat Erder and Pierre Pureur
A book on implementing continuous architecture in agile environments, bridging the gap between development and operations.
The DevOps Handbook by Gene Kim, Jez Humble, Patrick Debois, and John Willis
Explores the principles of DevOps and how to implement it to improve deployment cycles, operations, and software reliability.
Observability Engineering by Charity Majors, Liz Fong-Jones, and George Miranda
A guide to building, running, and scaling observability systems for modern applications and infrastructure.
Fundamentals of Software Architecture by Mark Richards and Neal Ford
Provides a practical overview of software architecture, its principles, and best practices for architects and engineers alike.
The Pragmatic Programmer by Andrew Hunt and David Thomas
A classic guide filled with practical advice for becoming a more effective and versatile programmer.
Team Topologies by Matthew Skelton and Manuel Pais
Discusses how to structure engineering teams for fast flow of work, continuous delivery, and quick feedback.
Accelerate by Nicole Forsgren, Jez Humble, and Gene Kim
Focuses on the science of DevOps and high-performing technology organizations, offering metrics and insights for improvement.
Continuous Delivery by Jez Humble and David Farley
Covers the practices necessary for continuous integration, automated testing, and rapid, reliable deployments.
Domain-Driven Design by Eric Evans
An approach to software development that centers around modeling software to match the business domain.
Clean Code by Robert C. Martin
A guide to writing clean, maintainable code that is easy to read and free of unnecessary complexity.
Clean Architecture by Robert C. Martin
Focuses on creating flexible and maintainable software architectures that adapt to changes in business needs.
Implementing Domain-Driven Design by Vaughn Vernon
A detailed guide on applying the principles of domain-driven design in real-world software projects.
Seeking SRE by David N. Blank-Edelman
Insights into site reliability engineering from experts, sharing best practices for building scalable and resilient systems.
Site Reliability Engineering by Niall Richard Murphy, Betsy Beyer, Chris Jones, and Jennifer Petoff
A collection of practices and principles developed by Google engineers for building reliable, scalable, and efficient systems.
Inspired by Marty Cagan
A product management book focused on building products that customers love, sharing strategies and processes for successful product development.
The Back of the Napkin by Dan Roam
A visual thinking book that teaches how to solve complex problems through simple sketches and diagrams.
Patterns of Distributed Systems by Unmesh Joshi
A collection of patterns for building distributed systems, covering challenges like scalability and reliability.
Test Driven Development by Kent Beck
Introduces the test-driven development process, a method for writing tests before writing the actual code to improve code quality.
The Lean Startup by Eric Ries
A methodology for developing businesses and products based on validated learning, continuous testing, and iterating based on feedback.
Crucial Conversations by Kerry Patterson, Joseph Grenny, Ron McMillan, and Al Switzler
A guide to effectively managing and succeeding in high-stakes conversations through better communication.
The Fifth Discipline by Peter M. Senge
A book about creating learning organizations that continuously evolve and improve through systemic thinking and collaboration.
Grokking Simplicity by Eric Normand
An approachable guide to functional programming concepts, focusing on how to simplify complex software.
The Seven Habits of Highly Effective People by Stephen R. Covey
A leadership and personal development book that offers principles for effectiveness in both professional and personal life.
Favorite Software
Alfred
A powerful productivity tool for macOS that serves as a fast and efficient application launcher, search engine, and more.
autojump
A command-line tool that helps you quickly navigate your filesystem by learning your most frequently used directories.
DaisyDisk
A disk space analyzer for macOS that gives a visual representation of disk usage, making it easy to clean up large files.
Dash
A documentation browser that helps developers access and search various API docs offline.
Divvy
A window management tool for macOS that lets you quickly arrange and resize windows with a few key presses.
httpie
A command-line HTTP client that simplifies making requests and interacting with APIs in an easy-to-read format.
iTerm2
A macOS terminal replacement that offers advanced features like split panes, session restoration, and more.
Jupyter Notebook
An open-source tool for interactive coding, used mainly for data science, that allows you to run code and visualize results.
Karabiner
A powerful macOS tool that lets you remap your keyboard and customize key bindings.
Obsidian
A note-taking app that organizes thoughts in a knowledge graph, making it a powerful tool for knowledge management.
Pandoc
A universal document converter that can transform files between various markup formats, including markdown, HTML, and LaTeX.
Postman
An API development tool that simplifies the process of building, testing, and documenting APIs.
Slack
A widely-used communication and collaboration platform for teams, known for its integrations and ease of use.
Snagit
A screen capture and recording tool that helps you easily capture images and videos and annotate them.
Spaceship Prompt
A customizable and feature-rich prompt for Zsh that provides a clean and informative shell experience.
Steampipe
A tool that enables querying cloud services and APIs using SQL, making it easier to work with structured data from the cloud.
TablePlus
A modern, fast, and user-friendly GUI tool for working with relational databases.
The Silver Searcher
A fast and powerful command-line search tool, used for quickly finding text within large codebases.
VSCode
A lightweight but powerful code editor that supports a wide range of programming languages and extensions.