|
By telling someone else that 'X sucks', you're asserting your knowledge of X (and often Y or Z too, one of which you might recommend instead of X). Within limits, this is perfectly reasonable - there are pitfalls out there, and advising other people to avoid them is helpful. However, there are a few big risks which arise when doing this, particularly around non-technical people: 1) The developer who cried wolf - if you have a very long list of things that you think 'suck', it may be concluded that you're just particularly picky (and, as the OP shows, it's not backed up by the reality of the many successful projects that exist). When you really need to torpedo a particularly bad idea, you might not be taken seriously. 2) Trying to persuade people by scaring them can backfire. Telling people that their project will fail unless they use the One True Project Management Methodology, or adopt some particular new library or framework might sound like a good idea, but they're quite likely to conclude that if the chance of failure is that high then it's better to avoid the risk altogether by doing nothing. 3) Undermining the credibility of other developers might give you a short-run reputation boost, but in the long-run it undermines the credibility of everyone. Instead of "that guy sucks, but you're OK", you want people to think "that guy is pretty good, but you're awesome!". To an extent, this applies in other areas ("PHP is pretty good, but Clojure is awesome!" sounds like something a happy customer might say, and we all want more happy customers). As much as I love his writing, I think Dijkstra should take a large portion of blame for the "considered harmful"[1] style of technical criticism. His claim that anyone who ever learned BASIC is a brain-damaged individual incapable of proper programming has done a lot to undermine the credibility of intelligent, hard-working developers ever since. I, for one, would like to issue a heartfelt "fuck you" in his general direction. Again, I love his writing but I think this kind of disparagement has incredibly negative effects in the real world. We certainly do need to eliminate errors from our practices and our ways of thinking. That's painful and does require criticism of those things. But the main problem for the software development industry right now is not that we are insufficiently critical of our tools, practices or each other, it's that we don't back each other up enough when it comes to dealing with shitty project management or exploitative practices or discrimination that holds people back in their careers. The low-hanging fruit is not yet another web framework, it's figuring out better ways of organising development. [1] http://en.wikipedia.org/wiki/Considered_harmful |
4) criticism provokes defensive counter measures, being a very human emotional reaction - being negative and attacking people or ideas or solutions with harsh words will almost never trigger the effects one desires, even when abstaining from attacking the person, since there's always somebody behind the championing of an idea, of a choice or a piece of code. This only works when the people attacked admire you, in which case you end up with point number (2) - making people afraid of trying out anything new.
And this happens because people invested time in championing an idea, choosing a certain tool, or writing a piece of code - and now you're coming saying to them that what they did was wrong and the time and effort invested was actually waisted. This is why people tend to get pretty fanatic about their programming languages, or IDEs, or operating systems, or whatever tool they invested a lot of time in - because they want their choice to be the "winner", such that their investment isn't in the end a bad one. The "Paradox of Choice" is very enlightening in this regard: https://en.wikipedia.org/wiki/The_Paradox_of_Choice
The culture we've created is one were harsh words are tolerated, even admired and the subject of amusement - I have smiled countless of times whenever I happened to read the rants of Linus Tolvards and the like. On one hand it's good, freedom of expression is good and sometimes it's healthy to name a turd for what it is. But this backfires and especially with these online communications that lack body expression (and the possibility of being slapped), it's turning out to be a rough industry to be in. No wonder women aren't interested.
Unfortunately while saying these words, I started thinking of how much of a dick I am sometimes, especially in code reviews.