It’s a totally wonderful day, because they finally sent your new box, woot! So, you get it all hooked up, and you spend the morning getting all the tools installed, and it’s fast fast fast, and life is good.
Finally ready! You check out the source. You rebuild all. The build doesn’t finish. You scratch your head. You shout, “Hey, what do I gotta do to get past the fritzenjammer error?” A voice comes from a few cubies away: “Did you delete the underpants file?” Oh, right. You go delete the underpants, and restart the build. This time it runs for about a half-hour before choking on the galoshes. You don’t have to shout this time, you know for sure you have to point the galoshes at yourself. Sure enough, you get almost to the end of the build this time. Then all of a sudden your machine reboots. Your machine reboots?? This time you don’t know, and shouting doesn’t help, and the one guy who knows what to do is on a mountain-climbing vacation in Nepal.
The day begins to lose its special glow.
You, my friend, are suffering from toilet handle-jiggle. Have you ever been around a leaky toilet? You flush it, and after the flush, the water just runs and runs and runs, until you jiggle the handle, of course. You keep flushing the build, and waiting and waiting, and you jiggle the handle so it will settle, and you jiggle again and again, but the build has a lot of handles to jiggle.
What’s a handle-jiggle? It’s anything in a build sequence that requires thought–effort, even–from the developer doing the build. If a file needs to be deleted before a build, make the build system delete. If you first have to download and install those two special libraries, make the build system install them. If you have to figure out what files are changed before a merge, make some software that does that.
I feel I’m probably getting my point across here.
It’s startling how many teams have settled ever so contently into a world where every build sits square in the middle of jiggle-land. And not just on a new box day, but every day.
I’m often asked what the first technical step a team can take, before I even get onsite to jump into the transition. The first technical target is getting to the jiggle-less build.
Here are some tips for getting to the jiggle-less build:
- Don’t let the tools win. If your IDE doesn’t support the scripts you want right out of the box, then take time to learn how it’s done. See, the tools work for you, you don’t work for them.
- You’re allowed to have more than one build. Configuration management needs build sequences that may be substantially different from those the devlopers need. So be it.
- Have all developers run a virgin build once a week. Delete the entire source tree, check it out again, and run the build. Give them permission to fix it.
Above all: Stop Wasting Mind On Builds