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.

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.