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
    - 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