This resource is new and under continual improvement. Please let us know if you experience any bugs or issues.

Agile Architecture aka Emergent Architecture [TOP]

“You don’t need to start with the Login Page”
Coaching the Agile Architect
Conceptual Architecture
Evolutionary Architecture – Neal Ford (a series)
Hexagonal Architecture
Hexagonal Architecture – more on the ideas of using adapters in front of outside code (GUI, 3rd party libraries etc)
How the Guardian successfully moved domain to
James Shore on Continuous Design [PDF warning!]
Pimp my Architecture – Dan North (Presentation)
Principles for the Agile Architect
Simplicity, The Way of the Unusual Architect – Dan North (Presentation)
Software Architecture and Related Concerns
Software architecture is failing
The Role of the Agile Architect
When Feature Flags Go Wrong
Martin Fowler
Agile Architecture aka Emergent Architecture Books

Behaviour-Driven Development/Acceptance Test-Driven Development/Specification By Example [TOP]

ATDD vs BDD vs Specification by Example (many flavours of the same thing)
Behaviour-Driven Development
Behaviour-Driven Development Books
Acceptance Test-Driven Development
Acceptance Test-Driven Development Books
Behaviour-Driven Development/Acceptance Test-Driven Development/Specification By Example Books

Bugs [TOP]

0 Bugs Policy
Bug Prediction Tool from Google
Bug statistics are a waste of time
Bugs help destroy Companies (aka zero bugs is possible) -Elisabeth Hendrickson

Continuous Delivery and Deployment [TOP]

Benefits of Continuous Testing
Continuous Delivery and the Perils of Feature Branching
Continuous Delivery Coding Patterns: Latent-to-Live Code & Forward Compatible Interim Versions
Continuous Delivery: The Value Proposition – Jez Humble
Continuous Deployment at Instagram
Continuous deployment for mission-critical applications – Eric Ries
Continuous deployment in 5 easy steps by Eric Ries
How Netflix Deploys Code
What are the technical practices of a Lean Startup?
Example from Real World
Continuous Delivery and Deployment Books

Continuous Integration and Setting Up Builds [TOP]

It’s Not CI, It’s Just CI Theatre
Keep your code spotless with Gradle
Key Principles for Reducing Continuous Integration Build Time
Why Distributed CI is the Logical Next Step

Database Change Tools [TOP]

Agile Database Tools and Scripts
CFengine – Open Source Configuration Management System
Database Change Management Best Practices
LiquidBase – Source Control and Refactoring for Databases
Perspectives in Building SOLID Databases

Defects and Cause [TOP]

Something’s Wrong in the Surface Fleet and We Aren’t Talking About It

Design Patterns [TOP]

Design Patterns Books

DevOps [TOP]

A Practical Guide to Testing in DevOps
There’s No Such Thing as a “Devops Team”
What Is DevOps?

Engineering Practices at Well Known Companies [TOP]

Continuous Integration at Google [PDF warning!]
EricGu – MS – getting to Zero bugs
Ford draws on Pivotal to reshape developer culture
Google Is 2 Billion Lines of Code—And It’s All in One Place
How does Etsy manage development and operations?
Rapid Release at Massive Scale
What kind of automated testing does Facebook do?
Yahoo’s Engineers Move to Coding Without a Net
Zero Bugs at Microsoft

Evolutionary Databases [TOP]

A Developers’ Guide to Refactoring Databases
Evolutionary Database Design
Evolutionary/Agile Database Best Practices
Refactoring Databases : Evolutionary Database Design
Why I do not use Stored Procedures (controversial)

General Agile Engineering [TOP]

Nulls Break Polymorphism

General Agile Engineering Ideas [TOP]

Avoiding Mini-waterfalls
Good Story describing life on a team doing many Agile Engineering practices

Living Well with Legacy Code [TOP]

Characterization Testing
Cleaning Code – Tools and Techniques for Legacy Restoration Projects
Code Retreat
Demystifying the Dependency Inversion Principle
How To Do Large Scale Refactoring
Leapfrogging Online Payments & Burying Tech Debt
Legacy Code Rocks (entire blog)
Pragmatic Techniques for Maintaining a Legacy Application
Refactoring Legacy Applications: A Case Study
Seventeen Secrets of the Great Legacy Makeover Masters
Strategies for Effectively Managing Legacy Systems
The Inverse of IoC is Control
The Pain of Implicit Dependencies
What your tests don’t need to know will hurt you
Approval Tests
Living Well with Legacy Code Books

Mocks [TOP]

Argument about better use of Mocks
Pictures showing the different types of Mocks we create

Pair Programming & Collaboration [TOP]

Alternative take on the ‘Driver’ and ‘Navigator’ roles in pair programming
An alternative take on the ‘Driver’ and ‘Navigator’ roles in pair programming
Arlo Belshi – On Setting Up A Successful Pairing Environment
Code Reviews Bad – Pair Programming Good
Considerate Pair Programming – Part 1
Considerate Pair Programming – Part 2
Considerate Pair Programming – Part 3
Creating the Motivation to Pair Program
Cross Functional Pair Programming
Evaluating performances of pair designing in industry
Myths of Collective Code Ownership
Pair Programming Chapter from Shore and Warden’s book – Agile Development
Pair Programming Considered Extremely Beneficial
Pair Programming Costs and Benefits
Pair programming improves software quality in industrial companies
Pair Programming Lessons from Improv
PairHero – an Eclipse Pluigin that encourages Pairing
Pairing, Competence, and Recognition
So what do the Driver and Navigator really do?
The ‘Needs’ Aspect of Pair-Programming
The effectiveness of pair programming: A meta-analysis [PDF warning!]
Two Years of Pair Programming
Undesirable pair programming behaviours
Undesirable pair programming behaviours – The Thrasher and The Divider
What it’s Like to Pair for a Year
Mob Programming
Pair Programming & Collaboration Books

Practice Tools [TOP]

Code Kata – One Developer’s Journey
Code Katas (practice problems)
Coding Dojos
Online Coding Dojo for the Team
Scrum By Example: The Team Learn How to Learn
TDD Community of Practice – Software Problem Wiki
TDD Randori Session
TDD Randori Workshop
The Coding Dojo Handbook

Quality [TOP]

Tradable Quality Hypothesis

Refactoring [TOP]

A Guide to Naming Variables
Embracing the Red Bar: Safely Refactoring Tests
The Core 6 Refactorings
Workflows of Refactoring
Refactoring Books

Software Craftsmanship [TOP]

Growing Object-Oriented Software, Guided by Tests
Software Craftsmanship Books

Source Control Branch Strategies and Their Side Effects [TOP]

Branch by Abstraction for dealing with the few complexities that crop up with working off of Trunk
Branching by an abstraction in the trunk instead of branching via Source Control
Continuous Integration and Feature Branching
Feature Branching in Source Control and Merge Hell
Long Running Branches Considered Harmful
Perceived Barriers to Trunk Based Development
Scaling Trunk Based Development
Trunk Based Development a summary
Trunk Based Development as a Cornerstone for Continuous Delivery
Example from Real World

Specification by Example [TOP]

Specification by Example and Product Quality

Specification by Example - Tools [TOP]

Agile Test Tools – Spreadsheet

Static Analysis Tools [TOP]

.NET FxCop
Codekvast – Finds truly dead code in Java and other JVM languages
Error Prone
Findbugs – Hueristic Analysis of Java
PMD supports: Java, JavaScript, PLSQL, Apache Velocity, XML, XSL

Swarming [TOP]

The Kanban Story: Swarming

Technical Debt [TOP]

Jon Kern (Agile Manifesto Signatory) – Got Technical Debt?
Scrum By Example: Stop Digging New Holes
Sonar – a tool for gaining a first order understanding of code quality vs mess
Technical Debt – A Summary – Martin Fowler
Technical Debt for Managers
Technical Debt Initiative
Technical Debt: Adding Math to the Metaphor
Technical Wealth with Declan Wheelan
The Agile Alliance Debt Analysis Model
The Human Cost of Tech Debt
Toward a Galvanizing Definition of Technical Debt
Technical Debt Books

Test Driven Development [TOP]

A Visual Approach to Test-Driven Agile
Destroy all Software
Failing to Falsify
How TDD Can Work
James Shore Let’s Play TDD – 200 webcasts of doing TDD on a real application
Keith Braithwaite – Measuring the effects of TDD
Keith Braithwaite – TDD as if you meant it
Looking at TDD: An Academic Survey
Micheal Feathers “The Deep Synergy Between Testability and Good Design”
Styles of Naming tests
Tell Don’t Ask
Test Driving Unity a 3D game development tool with too much cohesion
Test-Driven Development as Pragmatic Deliberate Practice
The payback of pairing with TDD
The ROI of Test-Driven Development
We’re in this for the Money
Test Driven Development Books

Testing [TOP]

Agile Alliance Functional Test Tools
BugsZero @ Agile Open Northwest 2016
Design for Testability
Do You Need a Test Column?…. Let’s Talk
Exploratory Testing Using Personas
How Agile Has Changed Test Management
Humans vs Computers – strange examples of names, addresses and more
It’s Ok to Have a Test Column on Your Board
Ten Skills that are Probably More Important for Testers than Tools and Test Automation
Test Planning Cheat Sheet
Testing is a Team Problem
The Rise of Test Impact Analysis
Using MindMaps to help testing process
Testing Books

Unit Testing [TOP]

Choosing the right JavaScript testing tool
Code from Practical Unit Testing with JUnit and Mockito
Database UnitTesting Framework for SQL Server
Improve Your Unit Testing 12 Ways
Improving On assertEquals with JUnit and Hamcrest
JUnit’s Built-in Hamcrest Core Matcher Support
Multiple Asserts Are OK
Practical Unit Testing
Real world mutation testing
Test Driven Databases
Unit Testing Books