Hacker News new | ask | show | jobs
by rjknight 4368 days ago
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

3 comments

Agree with everything you said, but there's one aspect you haven't touched well:

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.

"Considered Harmful" was not Dijkstra's idea, but his editor! And there's no way to say that "PHP is good", that's just untrue in all universes.
OK, but he's still on the hook for "mentally mutilated".

Also, my point is that "good" is really a relative term. PHP is good, because the baseline for programming language quality is quite high. You can do so much stuff using PHP - you can build YouTube[1], Facebook, Wikipedia, WordPress and much more. I don't know what the total value of web applications written in PHP is in billions of dollars, but it's a big number. My point is that if that's what we can do with PHP, just think what we could do with better tools! In my definition, "good" means "enables the creation of valuable things", and PHP does that. I hope that it gets replaced by something better, for the same reason that I hope current medical treatments get replaced by better ones, but I can't call it "bad".

It's weird, but programmers are sometimes the people with the least appreciation for how valuable their creations are. We do things that non-programmers simply cannot do, creating massive value in the process. Yet many programmers are afflicted by impostor syndrome and the sense that what they do is not really that valuable and that most of what they build is crap. This negativity is misdirected, towards other programmers - "I'm better than her because she uses PHP and I use Haskell" - when it should be directed towards the things that cause real project failure. A well-conceived and well-managed project that creates a PHP web application is much more valuable for everyone than a badly-managed project that produces a Haskell application that nobody uses.

[1] The first version, at least. Google doesn't do PHP.

It's not that php is good per se, although that is not nearly as objective a term as language bikeshedders tend to believe, but that better languages are still worse at the one thing php was intended to do - or at the very least, better in ways which don't actually matter. Almost all web application development is CRUD anyway, and php is perfectly adequate to the task.
I see it as an issue of supply and demand.

There's a huge demand for silver bullets in this industry.

An endless supply of naive, impressionable kids willing to listen to people rant about how everything sucks and X will change the world.

So no surprise, those who rant gain popularity and visibility and here we are.

> An endless supply of naive, impressionable kids willing to listen to people rant about how everything sucks and X will change the world.

There's also the problem that an engineer who successfully builds a bridge simply keeps to continue building bridges. In software, a 21-year-old programmer can build a webapp, sell it to Google, and walk away a multi-gajillionaire. If engineers could sell bridges to Google, we'd be seeing a lot of strange methods of crossing a river.

It's not just that developers look for silver bullets -- that's a natural instinct in any discipline -- it's that developers have a very real incentive for building and marketing silver bullets.