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
Evolutionary Architecture – Neal Ford (a series)
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 www.theguardian.com
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)
The Role of the Agile Architect
When Feature Flags Go Wrong
Martin Fowler
Agile Architecture aka Emergent Architecture Books

Behaviour Driven Development aka Acceptance Test Driven aka Specification By Example [TOP]

Aslak’s view of BDD
Behaviour Driven Links Page
Canopy – F# frictional webapp testing – goal make UI testing simple
Cucumber anti-patterns (part one)
Cucumber anti-patterns (part two)
Rules vs Examples (BDDX London 2014)
Stories, Rules and Examples – BDDX 2014 London
Three top tips for using Given When Then.
Concepts
Tools
Behaviour Driven Development aka Acceptance Test Driven aka Specification By Example Books

Collaboration [TOP]

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
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, A Personal Journey
Pairing, Competence, and Recognition
So what do the Driver and Navigator really do?
Two Years of Pair Programming
Undesirable pair programming behaviours
Collaboration Books

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 in a .NET World
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]

Keep your code spotless with Gradle
Why Distributed CI is the Logical Next Step
.NET

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

Design Patterns [TOP]

Design Patterns Books

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 Engineering Tools Blog – including bug prediction tools
How does Etsy manage development and operations?
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 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
DotNet
Java

Pairing [TOP]

What it’s Like to Pair for a Year

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 Pracitice Problems site
TDD Randori Session
TDD Randori Workshop
The Coding Dojo Handbook

Refactoring [TOP]

A Guide to Naming Variables
Embracing the Red Bar: Safely Refactoring Tests
I, J, and K Should Die
Refactoring To Patterns Catalog
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
Feature Branching in Source Control and Merge Hell
Long Running Branches Considered Harmful
Scaling Trunk Based Development
Trunk Based Development a summary
Example from Real World

Specification by Example - Tools [TOP]

Agile Test Tools – Spreadsheet
Cucumber
FitNesse
SpecFlow

Static Analysis Tools [TOP]

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

Technical Debt [TOP]

Bug Prediction Tool from Google
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
Technical Debt Books

Test Driven Development [TOP]

Destroy all Software
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
Micheal Feathers “The Deep Synergy Between Testability and Good Design”
Styles of Naming tests
TDD vs BDD
Tell Don’t Ask
Test Driving Unity a 3D game development tool with too much cohesion
The payback of pairing with TDD
The ROI of Test-Driven Development
We’re in this for the Money
Tutorials
Test Driven Development Books

Testing [TOP]

0 Bugs Policy
Agile Alliance Functional Test Tools
Agile Testing — The Agile Test Automation Pyramid
Bugs help destroy Companies (aka zero bugs is possible) -Elisabeth Hendrickson
BugsZero @ Agile Open Northwest 2016
Chaos Engineering Upgraded
Common Mistakes in Test Automation
Design for Testability
Exploratory Testing Using Personas
Functional Testing Tools List (Spreadsheet)
GUI Automation Patterns
How Agile Has Changed Test Management
How Netflix is Improving its fault tolerance
How we break things at Twitter: failure testing
It’s Ok to Have a Test Column on Your Board
Just Say No to More End-to-End Tests
Layers of Test Automation
Lisa Crispin’s summary of effective test automation [PDF warning!]
Managing Successful Test Automation
Page Object Pattern for Testing GUI applications (not just webapps)
Page Objects Refactored – SOLID steps to the Screenplay/Journey Pattern
Principles of Chaos Engineering
Robot Framework – The Unsung Hero Of Test Automation
Using MindMaps to help testing process
White, a tool to automate the testing of Win32 apps
Testing Books

Unit Testing [TOP]

Code from Practical Unit Testing with JUnit and Mockito
Database UnitTesting Framework for SQL Server
Improving On assertEquals with JUnit and Hamcrest
Infinitest
JUnit’s Built-in Hamcrest Core Matcher Support
Matchers
Practical Unit Testing
Test Driven Databases
Unit Testing Books