Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and toolsWorking software over comprehensive documentation
Customer collaboration over contract negotiationResponding to change over following a plan
That is, while there is value in the items onthe right, we value the items on the left more.
Rise of Determinism• Newton’s Principia
• Laws of physics are universal • The world is mechanistic, material and mathematical
• Laplace’s Demon • Careful measurement of current conditions • Understanding of the laws that drive the world • Sufficient computing power to find the “truth”
• Basis for much of science for the next 400 years
The Logistic Equation
f(xn+1)=rxn(1-xn)
• simple formula for estimating population
• r is the rate of population growth
• xn is the current population
Implications
• Laplace’s Demon may still be theoretically possible • Careful measurement of current conditions • Understanding of the laws that drive the world • Sufficient computing power to find the “truth”
• However it could also be risky to bet on it • Chaotic determinism • Sensitive dependence on measurements
• Be ready for the unexpected • The fastest to adapt usually wins. Speed matters.
“Conflict without trustis politics.
Conflict with trust is a search for the truth.”
Patrick Lencioni
Barriers to Cooperation
• Don’t know what to do (share knowledge)
• Don’t know how to do it (share culture)
• Can’t gauge progress (measure it)
• Can’t see who is responsible (automate it)
- Theory of Cooperation, John Willis and Damon Edwards
Theory of Cooperation
• Culture (of communication and discipline)
• Automation (superhuman scale and speed)
• Measurement (bringing verification and certainty)
• Sharing (to enable a rapidly growing community to the bar quickly)
- Theory of Cooperation, John Willis and Damon Edwards
Communication
• Single ‘ticket queue’
• ‘Always on’ chat room
• Daily stand ups
• Semi-weekly planning
• Every six month ‘hack week’
Automation and Architecture• CI/CD
• Provisioning
• Containers
• Microservices
• Scale out
• Backwards compatibility
Measure It
• Log Aggregation (Logstash, Loggly, Apache Kafka)
• Metrics (Graphite, Graphana)
• Monitoring (NewRelic, DataDog, Nagios)
• Alerting (PagerDuty)
Summary
• Building modern web services requires new approaches
• Speed. Speed. Speed.
• Constant evaluation from diverse inputs
• Always plan for change
• Culture must intentionally be built to support these goals