We all stand on the shoulders of others. Our ability to communicate and persist our ideas and discoveries has undoubtedly had a substantial impact on our technological and social evolution.
I keep track of the books, blogs, and videos that left a mark on me and impacted my growth and development. I do this partly to keep records (e.g., so I can go back and refresh my memory), partly to have a curated list for new developers who are interested in career growth, and partly for the potential of identifying patterns (meta-learning).
Books
Software Development
- Martin, Robert C. Agile Software Development: Principles, Patterns, and Practices. Prentice Hall, 2003.
- Martin, Robert C. Clean Code: a handbook of agile software craftsmanship. Pearson Education, 2009.
- Bloch, Joshua. Effective Java, 3rd ed. Addison-Wesley Professional, 2018.
- Fowler, Martin. Refactoring: Improving the Design of Existing Code, 2nd ed. Addison-Wesley Professional, 2018.
- Feathers, Michael. Working Effectively with Legacy Code. Pearson, 2004.
- Gamma, Erich et al. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, 1994.
- Whittaker, James. How Google Tests Software. Addison-Wesley Professional, 2012.
- Goetz, Brian. Java Concurrency in Practice. Addison-Wesley Professional, 2006.
Software Architecture & System Design
- Martin, Robert C. Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Pearson, 2017.
- Kleppmann, Martin. Designing Data-Intensive Applications. O’Reilly Media, 2017.
- Newman, Sam. Building Microservices: Designing Fine-Grained Systems 2nd ed. O’Reilly Media, 2021.
- Ford, Neal. Building Evolutionary Architectures. O’Reilly Media, 2017.
DevOps & Agile
- Kim, Gene. The DevOps Handbook. IT Revolution Press, 2016.
- Humble, Jez. Accelerate: The Science of Lean Software and DevOps. IT Revolution Press, 2018.
- Cohn, Mike. User Stories Applied. Addison-Wesley Professional, 2004.
- Beyer, Betsy, et al. Site Reliability Engineering: How Google Runs Production Systems. O’Reilly Media, 2016.
- Humble, Jez. Continuous Delivery. Addison-Wesley Professional, 2010.
Leadership & Management
- Spolsky, Joel. Smart and Gets Things Done. Apress, 2007.
- Brooks, Frederick Jr. The Mythical Man-Month. Addison-Wesley Professional, 1995.
- DeMarco, Tom. Peopleware, 3rd ed. Addison-Wesley Professional, 2013.
- Bock, Laszlo. Work Rules!: Insights from Inside Google That Will Transform How You Live and Lead. Twelve, 2015.
- Willink, Jocko. Extreme Ownership: How U.S. Navy SEALs Lead and Win. St. Martin’s Press, 2017.
- Marquet, David L. Turn the Ship Around!: A True Story of Turning Followers into Leaders. Portfolio, 2013.
Languages / Tools
- White, Tom. Hadoop: The Definitive Guide, 3rd ed. Yahoo Press, 2012.
- Higginbotham, Daniel. Clojure for the Brave and the True (amazon, free). No Starch Press, 2015.
- Slatkin, Brett. Effective Python: 59 Specific Ways to Write Better Python. Addison-Wesley Professional, 2015.
Other
- Kahneman, Daniel. Thinking, Fast and Slow. Farrar, Straus and Giroux, 2013.
- Taleb, Nassim. Fooled by Randomness: The Hidden Role of Chance in Life and in the Markets, 2nd ed. Random House Trade Paperbacks, 2005.
- Taleb, Nassim. The Black Swan: The Impact of the Highly Improbable. Random House Publishing Group, 2010.
- Newport, Cal. Deep Work: Rules for Focused Success in a Distracted World. Grand Central Publishing, 2016.
- Weinberg, Daniel. Super Thinking: The Big Book of Mental Models. Portfolio, 2019.
Blogs
Test Writing
- When to Mock (Bob Martin)
- Mocks Aren’t Stubs (Martin Fowler)
- Assertion-Free Testing (Martin Fowler)
- Unit Tests: Sociable vs Solitary (Martin Fowler)
- Guide to Writing Testable Code (Misko Hevery / Google)
- Tests should be F.I.R.S.T (Tim Ottinger & Jeff Langr)
Test Grouping
- Test Pyramid (Martin Fowler)
- The Practical Test Pyramid (Ham Vocke)
- Test Sizes as Categories (Simon Stewart)
Test Objectives
- The Value of Test Coverage (Martin Fowler)
- Five Factor Testing (Sarah Mei)
- Continuous Testing (Jez Humble)
Software Design
- Guide to Writing Testable Code (Misko Hevery / Google)
- Is High Quality Software Worth the Cost? (Martin Fowler)
- What is Software Design (Jack Reeves), a classic, must-read paper; and here is his follow-up 13 years later
- Nothing is as Simple as it Seems (Joel Spolsky)
- Architecting for Continuous Delivery (Jez Humble)
- Coding Habits for Data Scientists (ThoughtWorks blog)
- Technical Debt Quadrant (Martin Fowler)
Informative Websites
- The 12 Factor App (best practices for building SaaS)
- Trunk Based Development
- Design Patterns website (with examples)
- Mental Models (Farnam Street)\
- tl;dr Legal (software licenses in plain English)
Other
- Crazy Fast Build Times (Daniel Bodart)
- The Joel Test: 12 Steps to Better Code (Joel Spolsky)
- The Law of Leaky Abstractions (Joel Spolsky)
- Semantic Versioning Specification
- The Log (real-time data’s unifying abstraction)
- Better Java (Sean Cassidy)
- Feature Toggles (Peter Hodgson)
- Three Flow, a branching strategy simpler than Git Flow (Rod Hilton)
- Branch by Abstraction, Paul Hammant (another take on this can be found here)
- Complexity As Debt (Ward Cunningham)
- Continuous Devliery for Machine Learning
- How to Run Effective Meetings, Atlassian
- The Dataflow Model, (classic Google paper)
- Six Principles for Making New Things (Paul Graham)
- Move Fast and Fix Things (from the GitHub Blog)
- Agile Process Proverbs (Don Wells)
- Searching for Build Debt: Experience Managing Technical Debt at Google
- Fixing Broken Windows with Ratcheting (Chris Stevenson)
- An Appropriate Use of Metrics (Patrick Kua)
- Eradicating Non-Determinism in Tests (Martin Fowler)
- Job Interviews Don’t Work (Farnam Street blog)
- Smart and Gets Things Done (Joel Spolsky)
Videos
- Hammock Driven Development (Rich Hickey)
- Simple Made Easy (Rich Hickey)