Well, almost nothing.
Obviously it’s got something to do with computers since developers spend so much of their time in front of one. But software development is actually all about people. And successful software development even more so.
Take, for example, Stroustrup’s paper on the development of C++ through the years. A surprisingly large fraction of the paper discusses how personalities and group behaviour drove the development of C++. Or Dijkstra, who wrote a famous paper titled Programming Considered as a Human Activity. But when one thinks about it, how could it be considered anything else?
Bankers know this
I know some bankers, and when I first socialized with them, and I was taken aback by the bravado and the backslapping. But bankers already know that banking has almost nothing to do with money. It’s got to do with relationships and ideas, and banking’s nature is mostly explained by this fact.
It’s the same with software development.
Money and software share much in common. Neither really exists in the physical world. Yet both are powerful because of the huge influence each has, the power of each to effect real change. One could summarize this as the less real the final product, the more important to its success is the relationships between the people who build it.
Traps for young players
It often takes many years to truly realize – to really accept – this single, overarching, truth about software development. Many developers resent this reality, especially when they are younger — after all, developers are often drawn to computers for the very reason that computers are not people.
When I first started programming professionally it was at a large telecommunications firm. I quickly discovered how much decision making was controlled by non-engineering personnel. It took a few years for me to fully understand why. It’s because the world is not driven by engineering. It may be built by engineers, which makes me so proud of our role, but it’s not driven by engineering. And there is a difference.
Forget everything else
Unless you’re planning to develop your project solo, forget about your ideas and the intrinsic talent of your team. Forget about it all until you realise that it will be how coherently your team works, how well they communicate with each other, the process in place that empowers them, the pride they derive from their work, how involved they feel – it is all this that will make the difference.
When it comes to successful software development only the people matter.