Essential Reading/Watching for Software Engineers
Table of Contents
I've been really fortunate through the years to be surrounded by people who are dedicated to continuous learning and improvement. A few years ago, I put together a reading list as part of an engineering department reboot. I updated it late last year. I have rough reading/discussion times for some of it. What am I missing?
Notes#
- Video time slots are roughly 80% watching, 20% discussion
- Reading time slots are roughly 66% reading, 33% discussion
- Long chapters are broken up into 2 sessions
Agile#
- Extreme Programming Explained Ch. 3-7 - 2 hours
- Chapter 3 - Values, Principles, and Practices
- Chapter 4 - Values
- Chapter 5 - Principles
- Chapter 6 - Practices
- Chapter 7 - Primary Practices
- A DevOps Manifesto
- 21st Century IT Manifesto
- Red-Green-Refactor
- Best Practices for Code Review - 15 minutes
- T-shaped people
- The Whole Team Approach in Practice
Clean Code#
- Video: Clean Code Episode 1: Clean Code - 1.25 hours
- Covers Clean Code Book Ch.1: Clean Code
- Video: Clean Code Episode 2: Names - 1 hour
- Covers Clean Code Book Ch.2: Meaningful Names
- Video: Clean Code Episode 3: Functions - 1.25 hours
- Covers Clean Code Book Ch.3: Functions
- Video: Clean Code Episode 4: Function Structure - 2 hours
- Video: Clean Code Episode 5: Form - 1.5 hours
- Video: Clean Code Episode 6: Testing part 1 - 1.25 hours
- Video: Clean Code Episode 6: Testing part 2 - 1.5 hours
- Video: Clean Code Episode 7: Architecture - 1.75 hours
- Video: Clean Code Episode 8: Foundations of the SOLID principles - 1.25 hours
Refactoring#
- Chapter 1 - Refactoring, a First Example - 45 minutes
- Chapter 2 - Principles in Refactoring - 1.5 hours
- Chapter 3 - Bad Smells in Code - 45 minutes
Effective Java (2nd edition)#
- Chapter 4 - Classes and Interfaces - 1.5 hours (est)
- Chapter 7 - Methods - 45 minutes (est)
Domain Driven Design#
- DDD Core Elements - 30 min
- Domain Driven Design - 30 minutes
- Video: Value Objects - 1.25 hours
- Domain Driven Design Quickly - 2.5 hours (est)
Microservices#
- Video: The Practical Implications of Microservices - by Sam Newman, the author of “Building Microservices” - 1.25 hours
- Video: Deploying and Testing Microservices - also Sam Newman - 1.5 hours
- Building Microservices book
- Chapter 1 - Microservices - 45 minutes
- Chapter 3 - How to Model Services - 45 minutes
- Chapter 4 - Integration
- Part 1: Beginning of chapter through "Downsides to REST over HTTP" - 2 hours
- Part 2: "Implementing Asynchronous Event-Based Collaboration" through end of chapter - 2 hours
- Chapter 5 - Splitting the Monolith
- Part 1: Beginning of chapter thru "So What to Do?" - 1.5 hours
- Part 2: "Reporting" thru end of chapter - 1.5 hours
- Chapter 7 - Testing
- Part 1: Beginning of chapter through "The Metaversion" - 1.5 hours
- Part 2: "Test Journeys, Not Stories" through end of chapter - 1.5 hours
- The Twelve-Factor App - 1.5 hours
Testing#
- Video: TDD, Where did it all go wrong - 1.5 hours
REST/API design#
- REST Intro - 1 hour
- Summary of Rest In Practice
- Apigee Web API Design ebook
- MagnanimousWriter
Event Sourcing/CQRS#
- Video: Turning the database inside out with Apache Samza
- Not essential but really interesting: Video: Commander: Better Distributed Applications through CQRS and Event Sourcing
- Video: Greg Young — A Decade of DDD, CQRS, Event Sourcing
Continuous Delivery#
- Chapter 1 - The Problem of Delivering Software
- Chapter 2 - Configuration Management
- Chapter 7 - The Commit Stage
Working Effectively with Legacy Code#
- Chapter 4 - The Seam Model
- Chapter 9 - I can't get this class into a test harness
- Chapter 13 - I need to make a change, but I don't know what tests to write
Further Reading#
- Agile Software Development (If you don't have access to this book, see Uncle Bob's blog about SOLID principles)
- Chapter 7 - What is Agile Design?
- Chapter 8 - SRP: The Single-Responsibility Principle
- Chapter 9 - OCP: The Open-Close Principle
- Chapter 10 - LSP: The Liskov Substitution Principle
- Chapter 11 - DIP: The Dependency-Inversion Principle
- Chapter 12 - ISP: The Interface-Segregation Principle
- Implementing Domain Driven Design
- Ch. 4: Architecture
- Ch. 5: Entities
- Ch. 6: Value Objects
- Ch. 7: Services
- Ch. 8: Domain Events
- Ch. 9: Modules