Saw an interesting discussion today on what points to cover when evaluating what software language to use. I threw a few points in and it was pointed out that half of them were very subjective to measure. How would one get a team to agree on such points?
This got my brain ticking as to all the subjective choices programmers make every day and the effects it has on others. We adopt 'standards' within a team to try and keep some sanity in it all. Coding standards is the most familiar to avoid future arguments about where a brace should be. And coding standards an a good example because they're defining all the small things. I'd love to see a coding standard that states: "Write tests first".
We argue over decisions that don't have a large impact either way. It's very easy for me to say Java is annoying and I'd rather C#. But with very little experience in either language it'd be hard for me to defend that view against an experienced Java or C# developer who disagrees. Faced with such an argument my first instinct would be to dig in my heels and fight it out. But I have to suppress that feeling because I know in the end I could be productive in either language. And if the people I'm working with would be happier with one over another then that will add to our productivity too. There is a very strong human element in this decision that cannot be separated from all the technical and objective considerations.
I think I'll come back and re-read this post next time I get drawn into a git vs mercurial debate.