News Flash! Crufty old-schooler doesn’t like a recent coding craze. In response, wild, rebellious types say “suck it.” Where have I heard this before? (OK, I’m exaggerating on the tones of the articles and responses. Go with me; it’s for aesthetic value and a shocking opening paragraph.)
Oh, yeah. Agile development. Extreme programming. Aspect-oriented programming. Test-driven development. Just about every single programming language I’ve ever heard of. And every other technological or process “revolution” during my tenure in programming.
I hate to try to apply a common-sense filter here, but the strange pseudo-religious zealotry that I see in software development never ceases to amaze me. I believe that most advancements in the art of software development fall into one of three categories:
- It doesn’t suit my style. Maybe the tools are too immature. Maybe I’m uncomfortable learning a new paradigm, or maybe it just doesn’t “click” at some cognitive level. I never feel comfortable using the technology or process, and so I abandon it.
- It’s not right for my project. I’m not going to write data warehousing with NoSQL, or high-performance 3D in AJAX. Even if it could be done, mashing my problem to fit into a solution-shaped container is rarely* the way to go.
- It fits my style and my project. Magic happens. Whatever the change I just made was, it’s working better than before.
I wouldn’t spend much time arguing whether a top-notch Chardonnay or top-notch Cabernet Sauvignon were better. But I’d sure be more likely to serve one of the two with chicken, and the other with steak. Let your problems drive your solutions, not the tools — or you’re stuck being a tool yourself.
* I have noticed that if you’re really trying to apply an off-the-shelf solution to a problem, it can go much, MUCH faster if you architect your needs to fit the off-the-shelf solution.