My Manifesto

Agile Software Engineering

I am uncovering better ways of developing software by doing it and helping others do it. Through this work I have come to value:

Individuals & Interactions
over Processes and Tools
Working Software
over Comprehensive Documentation
Customer Collaboration
over Contract Negotiation
Responding to Change
over Following a Plan
Testing First
over Testing Later
Working in Pairs
over Working Individually
Committing to Trunk
over Committing to a Branch
Short-Lived Branches
over Long-Lived Branches
Clear Code
over Clever Code
Active Improvement
over Deliberate Neglect
Frequent Integration
over Occasional Integration
Continuous Deployment
over Sporadic Release

That is, while there is value in both, I value the highlighted items more.

Principles & Practices

Fine Scale Feedback
Pair Programming
Test Driven Development
Whole Team Involvement
Shared Understanding
Coding Standards
Collective Code Ownership
Simple Design
Shared Metaphors
Continuous Process
Continuous Integration
Design Improvement
Small Releases
Engineer Welfare
Sustainable Pace
Do The Simplest Thing That Could Possibly Work

Balance functionality with simplicity. Merciless refactoring revises the code into it's simplest possible representation.

You Aren't Gonna Need It

Do today's work today and tomorrow's work tomorrow. Implement only the features you need when you need them.

Once & Only Once

Within a bounded context, knowledge should be represented in a single, well-known place. Eliminate repitition through refactoring.


© Chris Allmark 2023