In 2011 Jay Fields wrote a blog post in which he suggested that it’s better to build teams in which people have a similar opinion on the way software should be built at a high level rather than having people whose opinions are in conflict.
He referred to this as having ‘compatible opinions on software’ and since I read the post I’ve become much more aware of this myself on the teams that I’ve worked on.
(I’m sure noticing this is some sort of cognitive bias but I’m not sure which one!)
Some examples that Jay gives of incompatible opinions are preference of a powerful language vs powerful IDE or monolithic application vs micro services.
I’ve noticed some other opinions which seem incompatible as well but what I find most intriguing is that people (including me!) use extreme confirmation bias to try and show that their opinion is better.
For example on one team I worked on there was a difference in opinion on whether we should use an ORM to take care of our mapping or if we should write custom SQL to do that job.
We chose to do the latter on that project but whenever we encountered situations where you had to write a lot of SQL it was pointed out how much easier life would be if we had just let the ORM do its job.
On the other hand we had none of the performance problems that you can often run into when you abstract away the database from your application and this fact was frequently pointed out as well!
I think it’s probably fair to say that people have some problems they are more interested in solving and others which they don’t really care for.
For example someone who’s really into Clojure is going to be completely disinterested in trying to solve a problem involving collections using Java when they know that they can solve it much more easily with a few functions.
Equally a Java programmer may lose patience at how long it takes to work out how to use a low level Java API using Clojure when they would have been able to work it out much more quickly using auto complete in a Java IDE.
My general take away is that if I notice myself or others using confirmation bias to prove a point then assuming we both have experience of both approaches it may well be the case that our opinions aren’t compatible.
We can then either choose to work on different teams if that’s an option or if not then at least acknowledge what’s going on with our opinions!
Brief footnote so I don’t get flamed!
I’m sure there are ways of exploring Java APIs easily using Clojure but hopefully the main point still comes across!