Developer Links
Published 2026-03-08 See other articles
This is a link collection that used to have its own page on my site. I haven’t updated this page since 2015 and many of the links exists now only in the Internet Archive, so I’m hereby archiving this page into my blog.
The following material is good to read/watch/listen at home, a little every day. A good video to start with is Corey Haines’ presentation on deliberate practice. Also the Agile Skills Project can give a roadmap on what to look more into.
Good Code
- Becoming an accomplished software designer by J. B. Rainsberger
- Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin et al. (book)
- 10 Ways to Improve Your Code by Neal Ford (video)
- Summary (PDF)
- Bad Code, Craftsmanship, Engineering, and Certification by Robert C. Martin (video)
- Guide: Writing Testable Code by Miško Hevery et al.
- Refactoring at SourceMaking
- Better is Better by Steve Freeman (video)
- Understanding Coupling and Cohesion with Corey Haines, Curtis Cooley, Dale Emery, J. B. Rainsberger, Jim Weirich, Kent Beck, Nat Pryce and Ron Jeffries (video)
Emergent Design
- Essential XP: Emergent Design by Ron Jeffries
- The Art of Agile Development: Simple Design by James Shore and Shane Warden
- The Four Elements of Simple Design by J. B. Rainsberger
- Responsive Design by Kent Beck (video)
- Simplicity, The Way of the Unusual Architect by Dan North (video)
- Moving Specificity Towards the Tests with J. B. Rainsberger (video)
Naming Things
- Two Hard Things by Phil Karlton
- Clean Code Chapter 2: Meaningful Names by Tim Ottinger
- A Model for Improving Names by J. B. Rainsberger
- Three Styles of Naming Tests by Esko Luontola
Composed Method
- Composed Method by Kent Beck
- Composed Method Pattern by Jeremy Miller
- Evolutionary architecture and emergent design: Composed method and SLAP by Neal Ford
Dependency Injection
- Clean Code Talks – Dependency Injection by Miško Hevery (video)
- Clean Code Talks – Global State and Singletons by Miško Hevery (video)
- Do it Yourself – Dependency Injection by Chad Parry
- Big Modular Java with Guice by Dhanji R. Prasanna and Jesse Wilson (video)
Object-Oriented Design
- The Principles of OOD by Robert C. Martin
- The Principles of Agile Design by Robert C. Martin (video)
- An introduction to the SOLID principles of OO design by David Tchepak
- SOLID Principles with Uncle Bob - Robert C. Martin by Robert C. Martin (audio)
- It Is Possible to Do Object-Oriented Programming in Java by Kevlin Henney (video)
TDD
- TDD Introduction by Esko Luontola (PDF)
- TDD Tutorial by Esko Luontola (exercise)
- Test Driven Development: By Example by Kent Beck (book)
- Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce (book)
- The Three Laws of TDD by Robert C. Martin
- The Art of Agile Development: Test-Driven Development by James Shore and Shane Warden
- How test-driven development works (and more!) by J. B. Rainsberger
- Sustainable Test-Driven Development by Steve Freeman (video)
- Introducing BDD by Dan North
- A New Look At Test-Driven Development by Dave Astels (PDF)
- Test-first and Test-driven conversation with J. B. Rainsberger (video)
- TDD, where did it all go wrong by Ian Cooper (video)
- Test-Driven Development (that’s not what we meant) by Steve Freeman (video)
Tests
- F.I.R.S.T by Brett Schuchert and Tim Ottinger
- The Way of Testivus by Alberto Savoia (PDF)
- Writing Testable Code by Miško Hevery
- Integrated Tests Are A Scam by J. B. Rainsberger (video)
- Three Styles of Naming Tests by Esko Luontola
- The Deep Synergy Between Testability and Good Design by Michael Feathers (video)
- What We Talk About When We Talk About Unit Testing by Kevlin Henney (video)
Test Doubles
- Mocks Aren’t Stubs by Martin Fowler
- Mock Roles, not Objects by Steve Freeman, Nat Pryce, Tim Mackinnon and Joe Walnes (PDF)
- Mock Roles Not Object States by Nat Pryce and Steve Freeman (video)
- Friends you can depend on at Testing on the Toilet (PDF)
- Mocks, Fakes, Stubs and Dummies by Gerard Meszaros
- Mocks and Stubs aren’t Spies by Hamlet D’Arcy
- Why You Don’t Get Mock Objects by Gregory Moeck (video)
Some techniques for specific situations:
Domain Driven Design
- Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans (book)
- Domain Driven Design Quickly by Abel Avram and Floyd Marinescu (PDF)
Legacy Code
- Working Effectively with Legacy Code by Michael Feathers (book)
- Older short version (PDF)
Refactoring Databases
- Refactoring Databases: Evolutionary Database Design by Scott W. Ambler and Pramod Sadalage (book)
- Evolutionary Database Design by Martin Fowler and Pramod Sadalage
- Database Refactoring by Pramod Sadalage
UI Testing
- GUI Architectures: Supervising Controller & Passive View by Martin Fowler