Fundamentals of software architecture for big data
All problems in computer science can be solved by another level of indirection - David Wheeler
Rapid application development: deploy first, test second, develop third. Do all this daily. Cultivate environment where mistakes are cheap and encouraged. Cadence should be daily.
Stand ups should be about coordination and exploring pivot opportunities.
Stand up to noon should be sacred focus time. After work is sacred replenish time. This gets things done quickly and is sustainable and predictable. Goal is to "go fast forever".
Small teams - 4 to 8 people Small stories is key - great engineers force stories into small chunks against all push back.
Test as early as possible. Red, green, refactor.
CI - run tests every time you push code. CD - deploy built and tested artifact at the push of a button.
Recommended: Extreme Programming Explained, Kent Beck
Variables:
- cost
- time
- quality
- scope
Flow of work, fast feedback loops, culture of experimentation and ownership
There's no silver bullet
Software is not Ford cars, the essence is not duplicated and each project has unique complexity.
Nothing has moved the needle of productivity by an order of magnitude in the last decade.