Hacker News new | ask | show | jobs
by Silhouette 4209 days ago
Instead of expecting people to change their taste and demanding re-education, find a way to give them what they want while also giving them what you think they should have.

I don't really expect them to change their taste. As I said, the actual situation is something we might reasonably have guessed: combining building blocks quickly and cheaply is perceived as more important than quality. Given that it's clear a lot of people will pay for cheap junk, that is a commercially sensible thing to produce.

I just find it sad that this is the situation we seem to have drifted into. As more and more things we use every day depend fundamentally on software, and an ever more connected society makes issues like security and scalability more important as well, I think the world would be a much better place if consumers were less forgiving of problems caused by badly written software and demanded better. However, the industry seems to have succeeded in convincing most people that mediocrity is inevitable and software that only works for a brief period or requires constant updates for maintenance is the norm.

What is perhaps more sad is that so many professional software developers themselves don't seem to know any better.

For example, part of this study examined attitudes to static typing and unit testing. We might reasonably suspect that a population interested in SaaS has a bias towards dynamic languages like Ruby and Python, so it's not too surprisingly that 62% said they saw the value of unit testing compared to only 36% for static typing. The disturbing thing is that both of these figures are so low, given that these aren't exactly controversial techniques and there is plenty of evidence that using at least one of them can substantially improve quality.

Another telling contrast was that when asked about what they enjoyed using, programmers heavily favoured expressive languages, yet when asked about which language features were important, features that offer more expressive power like templates, generators, higher order functions and macros were all rated much lower than OOP staples like classes/interfaces and inheritance. A majority saw little if any connection between higher order functions and objects, despite their mathematically provable relationship; a third didn't even understand the question.

When you have that level of ignorance of programming theory that really ought to be general knowledge by professional standards, it's not really about letting developers have what they want while also giving them what anyone else thinks they should have. They could already have both today, and they already say they want the benefits that would bring. They just don't know enough about the tools that are already available to them to get those results, and isn't that just a straightforward education problem?