Read the Humanities
In all but the smallest development project people work with people to achieve the goal. In all but the most abstracted field of research people write software for the purpose of supporting someone in some goal of theirs.
People write software with people for people. It's a people business.
Unfortunately the education and training of a programmer tends not to equip anyone to deal particularly well with people. In fact, the tools and techniques taught to programmers too often equip them very poorly in dealing with the people they work for and with. The real irony of the situation is that merely being a person doesn't grant any particular insight into nor ability to deal well with other people.
The most critical interaction that programmers have with the people for whom software is written is in understanding what those people want. The only way to do this is to ask them them to tell you and the education of a programmer can lay some particular traps which make that difficult. Luckily there is an entire field of study that can help us.
For example, Ludwig Wittgenstein makes a very good case in the Philosophical Investigations (and elsewhere) that the language we use to speak to one another (any languages) is not, and cannot be, a serialisation format for getting a thought or idea or picture out of one person's head and into another's. Already we should be on our guard against misunderstanding. Wittgenstein also shows that our ability to understand one another at all does not arise from shared definitions, it arises from a shared experience, from a form of life. This may be one reason why programers who are steeped in their problem domain tend to do better than those who stand apart from it.
Lakoff and Johnson present us with a catalogue of Metaphors we Live By, suggesting that our language is largely governed by metaphor and that these offer an insight into the nature of our thoughts and understanding of the world in which we live.
This work is licensed under a Creative Commons Attribution 3
Back to 97 Things Every Programmer Should Know home page