Don't let the perfect ideals be the enemy of progress.

I often talk about the way things “ought” to be.

Deployment “ought” to be automatic.

The test suite “ought” to run in 10 minutes or less.

Developers “ought” to talk to the end-users of their product.

Every now and again, someone retorts against one of my “ought"s with something like this famous quote which definitely did not originate with Einstein:

In theory, theory and practice are the same. In practice, they are not.

Okay. And?

The point of having ideals is not to achieve them all immediately. Maybe not even ever. The point of having ideals is to have something to strive for.

If your deployment takes 3 weeks of manual, error-prone labor, shrugging your shoulders and saying “In theory we should be able to deploy automatically, but theory and practice aren’t the same thing, so we won’t do anything” is obvoiusly not a healthy attitude. A much healthier approach is “What’s one small step we can take today that will get us closer to the ideal of an automated deployment process?”

Don’t let the perfection of ideals be the enemy of progress.