And at least in my personal opionion and experience these kind of things work especially well. Yet when it comes to the construction of code the whole thing does look more like a religion. High priest Uncle Bob preaches that shorter is better and that only those developers will reach nirvana that write their tests before the production code.
And than there are the heretics that call all this bull shit, never write a single test but methods as long as the Edda. And lets not forget: those guys ship code as well.
If you check the scientific facts behind any advice of how to write code you are bound to find a void as empty as the space behind Pluto or a reference to some research done 30 years ago with 20 students doing a 4 hour assignement using different styles, languages or what ever. Correlation to my daily work? Approximately zero. Its like the scientific fact that a feather and a hammer should drop with the same acceleration and hence speed. True if you happen live in a vacuum tube, but pretty irrelevant in this form for our daily life.
I’m wondering why is this? It really doesn’t have to be that way. We all use an IDE which already contains lots of plugins. Our builds, including our test runs are automated. The source code is in a version control system. We track our bugs in an issue tracking system, and with a little effort we can link every commit to a bug (or a feature) in our issue tracking system.
Why don’t we have a set of plug ins that gathers various pieces of information about our code development efforts in a central public repository? I imagine such a repository would be enormously valuable for research.
Of course the data wouldn’t be perfect but go talk to biologists, archeologists, economists or any other scientists, with the possible exception of computer scientists, mathmaticians and theoretic physicists: Data is never perfect.
Right now software development is like building cathedrals in mediaval times. Looks impressive as long as it stays up, but nobody can tell if it will stay up without trying.
Its about time we get serious about software development. What is stopping us? Or is this already happening and I just missed it?