1. Let's get a few things straight

You're cheating.

You're doing all your development in trunk. You're screwed if a major bug surfaces while you're in the middle of exploring some new functionality because you've already touched half the code. Your version of ``going live'' is some variation on just copying files from here to there. Maybe you're all fancy and doing ``svn update'' to get your code there, but lets be honest, there's always a bit of crossing your fingers and hoping things don't break. You know what unit tests are, but you've got some lame excuse for the fact that you don't actually have any, or at least not enough to be actually worth anything. Or maybe you want unit tests but just ``haven't gotten around to it.''

If this isn't you feel free to stop reading here. If this is you then welcome to the club. We suck. For entirely too long now you and I have been too lame to actually get off our asses and do things right. But guess what. We've taken the first step. You and I, and everyone else reading this, are going to stop acting like inexperienced college grads and start acting like the professionals we are (even if you happen to also be an inexperienced college grad).

Ready to start doing things right?

Good. Let's start off with a definition:

Heuristic

Pronunciation: hyû'ristik

Definition:

1. [n] a commonsense rule (or set of rules) intended to increase the probability of solving some problem

2. [adj] of or relating to a general formulation that serves to guide investigation

3. [adj] (computer science) relating to or using a heuristic rule
Got it? That's how we're going to approach things here. We're going to take a heuristic approach to version control, unit testing, and app deployment. The zealots are going to hate us. But we'll be getting things done while they're worrying about getting test coverage on that last 10% of their code-base.

K. Rhodes 2007-05-18