I Build Software Like I Build Muscle
2011-11-15
Actually, I quit building muscle while I was in college, but I realized today that the majority of my (productive) software development is done with a buik/cut strategy.
If you're uninitiated into the world of body building, it is common to first "bulk", where you eat heavily to gain mass and muscle, and then follow it up with a "cut" where you focus on reducing weight to get your target shape. I don't know why this strategy works for body builders and I've never tried it myself, but there are definite correlations to my development style.
I have a secret, which I now give to the internet because it feels like it's impossible to not get a job in this market. No I don't know why but it's true. If you don't believe me, add "XAML" to your LinkedIn profile, change your address to Seattle and count the number of days before you get a job interview. Anyway, back to the secret: I don't feel like I'm smart enough for most design patterns. Whenever I start a new project at the beginning I tell myself "this time, we're going to give NEWTRENDY design pattern a try". And I don't get anything done. Ever. Weeks pass and all I have to show for it is the same singleton pattern and static constructor.
So how is bulk/cut a design pattern? By having long periods of feature development (the bulk) following by short periods of bug fixes (the cut). If you're bulking, don't stop to write unit tests. Don't build and run a manual test. Don't stop to remove debug warnings, don't even stop to fix build errors. Just add every feature you can think of that you know your users will ask for at some point. I had a conversation with a friend today, and he said "The best way to avoid bugs is to never code them." While I agree with him completely, my response is "who cares, fixing bugs is easy". And it is, for me it always takes less time to identify a bug than it does to get over the paralysis of deciding how to avoid it. So you get your features in, then you cut. Fix the bugs in a large sweeping gesture, then if your shit still doesn't work, cut the feature entirely. Or push them to 1.1.