Developers are rational thinkers who take objective decisions. Yeah, sure. If that is the case, how can we disagree on so many things?
Examples are all around. Why do Rubyists and Java developers despise each others’ designs? Why do people try hard to fit static typing and distributed environments? Why do Windows programmers loathe the command line? Let me try answering these questions, with a few hints from cognitive psychology.