Something that I’ve been thinking a lot about lately is ‘software as a communications problem’. By which I mean that we have an idea for a software product and, unless we are building it ourselves, we have to find a way to communicate the idea to other people who are going to be responsible for building the software. That is to say that a ‘mental picture’ in your head needs to turn into a ‘mental picture’ in the head of someone else before it is finally translated into something that can be run by a computer. For example:
Founder -> CTO -> Developer -> Computer
Ever played Chinese Whispers?
There is a key difficulty in how I transfer my mental picture into your head so that it looks the same. If I said to you “Draw a house” how likely is it that your picture and my own picture will look the same? What if I draw a 2-up 2-down semi and you’ve drawn a 4 story mansion? And, even if they share a common structure, it is likely that the details: windows, facade, position of doors and so on are going to vary enormously.
This is hardly a new insight and the software industry has been attempting to deal with this problem for many years. The whole agile movement, for example, is about trying to reduce the surface area available for communication problems. But what is concerning me is how insular the discussion in our community is. We don’t seem to be involving linguists, semiotics experts, or anthropologists - people who understand a lot about how people communicate with each other.