Notes from Scott Brown’s lunch talk today:
1 - What is the primary goal of agile software development?
- Higher Code Quality
- Better, Faster Feedback
- Happier Teams
- mitigate risk
- why? research group (Standish Group) surveyed > 3500 large (> $10M) projects from 2003 to 2012 - only 6.4% were successful
2 - agile mitigates risk via communication.
- today: team-based dev, but important in other ways for single coders
- Kent Beck: “What matters most in team software development is communication”
- Not choosing the best technology?
being the smartest?
coding the fastest?
writing the most efficient algorithms?
3 - projects succeed or fail because of communication, not technology challenges
- you can never anticipate all of the tech problems
but good communication will always help overcome them
- when project in trouble: fix the communication process
- bad news vs. bad information
- rapid feedback loop: discover bad news ASAP
- anti-pattern: green shifting
- Human element of software engineering
- contrary desire to treat software like manufacturing, with each dev
a dicrete machine on the factory floor: more machines, working as fast
as possible must lead to successful completion sooner, right?
- software development as a race through a mine field
- Fred Brooks (Mythical Man-Month)
- Adding people to a late project makes it later (“Brooks’ Law”)
- Why? Adding more people to the mix obstructs good communication
- Emphasizes the crucial role communication plays in projects
- 17% of projects fail so disastrously they threaten company existence
- HealthCare.gov rollout (Time: Obama’s Trauma Team)
4 - practical techniques - drive the rapid feedback loop
- planning sessions
- release post-mortems
- daily standups
5 - communicate with the system
- good design / readibility
- ops monitoring
- instrumentation / analytics
6 - simple, not easy