First off, i liked “Hack Day“. i feel like i need to be clear about that. i like the idea of getting a chance to sit and code, even though i was stressing out pretty bad during it, and am looking forward to the next time. Please keep that in mind. It’s just that while i like “Hack Day” the event, i’m not really quite so certain about “Hack Day” the lifestyle.
i’ve been reading some of the follow-ups, and getting a little worried. Things like “The efficacy of time-constrained hacking, and even bits of Jeremy’s post talk about one thing that bugs me no end. It’s the same thing that i hear from the Scrum advocates.
“Sprinting is Good!”
Uhm, no. Sprinting isn’t. Look, sprinting requires a lot of energy. It’s anaerobic in most cases because the body simply can’t meet the oxygen and calcium requirements of a full on sprint, which means that after a certain point, you stop sprinting.
Plus, while it’s certainly possible to create something quickly that can do the job, generally it’s never going to be more than a prototype. You cut corners. You use stuff that kinda-sorta does the job. You grab a library because it’s name sort of matches what you’re looking for in CPAN, not because it’s built to scale.
i don’t know about you, but i’d rather live in a house that was architected and built by craftsmen rather than something slammed together in a day or two and has one wall being held on with duct-tape.
People are not computers. It’s not really possible to pop in a few new processors and get them working faster. Likewise, it takes more than a firmware upgrade to keep them from making the same stupid mistakes. People are human, and prone to the same sorts of behaviors that they have done as a species since shortly after discovering rocks make good hammers.
In fact, i’m actually willing to say that all of this emphasis on “speed” vs. design is actually a really bad idea. Heck, i’d done research and design on my “hack” for days before i actually sat down to work on it. i spent Friday simply writing up code, doing some test work and adding lipstick to the pig.
Much like Microsoft, most programs need a few revisions before they work right. Requirements change, technology improves, and… well… you get the time you need to go back and fix the stuff you marked as broken (those would be the stuff marked with ## TODO: Fix this
all over). With most projects and companies now, that’s a luxury. Engineers are usually fighting just to meet the deadlines for their current set of projects. It’s almost always impossible to tell business “We’re not going to go forward with any projects for the next month in order for us to fix and address the current system.” It needs to be done, everyone understands it, but nobody ever does it.
i keep threatening that there needs to be an engineering revolt. An opportunity for engineers to throw off the shackles, stop sprinting and fix the damn code so it works right. Build Applications, not just hacks, and maybe even create a few tools, libraries and resources that make building large applications easier. Forget 20%, i’d be happy with one long stretch of 8.33%.
Ah well, i’m certain i’m in the deep minority, since it’s always cooler to put together toys rather than platforms. Still, as much fun as it might be to put together Barbie’s Dream House, i really wouldn’t want to live in it.