I thought it would be fitting that the first post on this blog should be about a phenomenon I like to call “Dark Software Development”. Because it provides a little bit context for hopefully a lot of posts to come. ( So I hope :-))
(To make it absolut clear upfront: This post is based on my personal experience, jobs and projects I’ve seen, people I talked to, texts I’ve read, talks I’ve seen etc … but at the end it is of course only my opinion. Especially because the whole subject can’t be “proven” by definition.)
I call Dark Software Development all the development efforts/activities which remains in the dark: Nobody outside of the people directly involved will ever know about it. Nobody blogs or writes about it, nobody talks about it.
I think the vast majority of all software activities belongs in this category (this is not so surprising), but I also think that the way software is development in this category differs largely from what you can find in blogs, books, conferences etc. (This might be more surprising.)
Or to put it differently: Agile, TDD, Lean, self organised teams, Scrum, Kanban and all the other dominant “cool” software methodologies and practices are near way mainstream as someone might think.
A lot of companies still use the Waterfall model, I even heard one quote recently “We do Waterfall, other methods don’t work for us”. (Of course Waterfall didn’t work either.)
You think TDD is dead? One could argue it is barely alive, because only a slim minority is practising TDD.
But this is not limited to methodologies/process but is also true for technology/tools. A good example are NoSQL databases: Almost everybody who is reading this would probably agree that they are hardly new, but do you think they are used by the majority of all software projects in the world? Of course not. But when did you read the last blog about “Cool xxx with Oracle”?
You can listen to some more real life stories here Architecture War Stories and here Agilists and Architects for example.
So if you’re talking about something in the most general way (i.e. in the general context) and you ignore all of the Dark Software Development you’re simply wrong.
For example if you claim that agile is mainstream you ignore millions of software-developers. (Nobody knows how many software developers are out there, some estimate 18 Million (including hobbyist) up to 42 Million.)
What is the reason for such an imbalance between the visible and not visible software development world? The answer is simple and very complex at the same time: It’s the Culture!
When you work in a company or team where everybody is reading or even writing blogs, is going to meet ups or user groups, where everybody is trying to keep informed about the newest technology then you will too. And at one point after reading a dozen articles about TDD you will finally try it yourself. Or after reading a book about how much more awesome self organised teams are, you don’t want to be micro managed anymore. (Obviously this is simplified, but you get the idea.)
On the other hand if you work in a workplace where nobody is interested in the world outside of your daily work you will at some point also adopt this mindset.
Cultures don’t change easily and not a lot of people switch between really different workplace cultures.
That means that the Dark Software Development will remain the silent majority of software development for a very long time and the minimum we can do is to be aware of that.