Sunday, April 15, 2018

Essential Reading/Watching for Software Engineers

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

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

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

REST/API design

Event Sourcing/CQRS

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