Finding a rhythm
Good teams build stuff customers want. They do it faster with fewer wasted cycles and fewer defects. Developers have more fun and write cleaner code. They do it at a constant pace that can be sustained indefinitely.
Hour, Day, Week
There’s a natural rhythm to everyday life. Don’t fight it.
- We estimate user stories by the hour.
- We schedule our time and meet by the day.
- We plan iterations by the week.
Other things are like breathing. Continuously run your test suite. Continuously deploy to production.
Acceptance Tests
Acceptance tests are created from user stories. They look like this:
Given I am signed in as an admin
When I delete a comment with a confirmation dialog
Then the comment is deleted
This is executable code that is run against the application. When executed for the first time, the test will fail. The developer can then code until the test passes.
When the test passes, the developer commits the code into version control with a message such as:
Comments can be moderated by admins
The code is then run on the Continuous Integration server to make sure the acceptance test still passes in an environment that matches the production environment.
Meanwhile, the code is pushed to the staging environment and the developer and customer representative smoke test it in the browser.
When the acceptance test is green for the CI server and the developer and customer representative are satisfied that the user story is complete on staging, the feature can be deployed to production at will. This can result in features being pushed to production very frequently, and therefore more value is being delivered to customers sooner.