Common-sense or Counter-intuitive Development?
In response to my post about Should-Driven Development, Peat Bakke brings up what I would say is the most crucial point of all — common-sense or counter-intuitive methodology?
Here is the quote:
[T]here are plenty of developers who have plenty of experience, and depend on common sense and intuition to really foul up their projects. “Common sense” is what makes gimmicks and methodologies so appealing!
I agree. What Peat is talking about is the incompetent common-sense. Like, if I decide to get into buying and selling stocks, and I go in there with my gut feel, I’ll definitely gain some experience. But would that experience make me a better investor? Probably not. This is due to the fact that I am extremely incompetent when it comes to high finances. I haven’t been trained properly. I’m therefore in possession of an incompetent common-sense.
The developers Peat is talking about are the improperly trained, incompetent developers who are faking their way through their careers relying on their prior experience (mostly catastrophic). And because they lack proper orientation when it comes to software development, such developers rely on their misguided common-sense. And misguided common-sense cannot guide you to the correct result.
So, instead of experience and common sense, I think a great developer (or manager) is one who thinks critically about a given scenario, and applies the appropriate techniques to complete it successfully. The solution to the conundrum is critical thought and a large toolbox of techniques, developed through experience and analysis; of applying certain methodologies and determining why they succeeded or failed for the project: Were they incompatible to begin with? Were they a good fit for the development team? What indicators can I look for in my future projects and interactions?
This is interesting, because my experience is almost diametrically opposite. I’ve seen too many people being enthusiastic about the counter-intuitive, bureaucratic ways of developing software. That approach is almost always amazingly catastrophic.
The critical approach takes a lot more work and is decidedly less sexy than appealing to common sense, but it reliably produces the best results
Not from the footage I’ve seen.
and that’s what we’re shooting for. Right?
Best results for who? If you’re Microsoft, best result for you would be releasing totally dysfunctional products, because that’s how you make money (by fixing bugs and then forcing your captive customers to pay for the upgrade).
If you’re a bureaucratic-minded, corporate ritual and ceremony loving drone, best results for you would be producing mountains of illegible frameworks and inversion-of-control contraptions. Creating opaque systems is the specialty of the enterprise software developers.
It’s all relative, you see. The only thing I truly care about is the best results for the end user — a human being paying to use the software.