Rasmus Schultz (aka mindplay) is a passionate and opinionated web-developer, working since 1998 with PHP, JavaScript, jQuery, HTML5/CSS3/XML, MySQL/MSSQL, ASP.NET, various so-called MVC frameworks and other related technology.

May 30, 2013

Software and (Mental) Health

I'd like to offer what I think is an insight into why some simpler (less "academic") software usually beats the more complex software, even though the more complex software often has substantially more labor and effort put into it, by developers with degrees and many years of professional experience.

This is often a subject of bewilderment and frustration, especially for the academics - it's hard, and often more so for educated developers with experience, to understand why the masses aren't eager to harvest the fruits of their labor, and instead go with simpler (often "inferior" in the minds of the academics) software and libraries.

I recently watched Rich Hickey's presentation "Simple Made Easy", which talks about the difference between "simple" and "easy", and I had some thoughts on this subject.

To use a practical example, take Yii - one of the most popular frameworks for PHP. Yii has a lower barrier of entry than more academic frameworks like for example Symfony or Zend - it's easier, more accessible, contains fewer concepts and lets you get started (as a beginner) without a substantial learning curve. It's simple. And that is the primary reason it's popular.

This isn't to say that there is something wrong with Yii as such - if it served your purpose and got you to the finish line on time, it's a success, right?

Academics won't always agree with that - some do, but many will not, and it's often hard for them to articulate their reasons to less academic developers, because they tend to speak a language that is somewhat foreign or easily misunderstood by the lay or self-taught.

To the point: the most popular software is not the software that is based on many years of research efforts and academic probing. The most popular software, is simply the software with the lowest barrier of entry.

Put simply, the software that gets ahead, is the software that is most accessible without a substantial learning effort - that literally means that, as a developer of a framework or application, you have to dumb it down if you're aiming for mass appeal, because the masses are not hard-working developers who invest all their spare time, not companies that are willing to invest to educate their developers, and not developers with enough experience to wrestle a more academic framework without setting aside time to learn and understand it first. The masses are simply programmers who need to perform a task, on time.

This condition isn't specific to programmers either - it's a human condition: the solution that requires the least effort automatically wins. The most popular girl in high school was not the smartest, but the prettiest, because that's something most juveniles can relate to instantly. The candidate with the most accessible point of view (sadly) often wins the election. Fast food beats cooking (or eating) real food because it's ready to eat now. Cars beat bicycles, even if you're only traveling a couple of miles, because the car will get you there now. Frameworks like Yii will have most self-taught PHP programmers writing reasonably non-terrible code in a matter of hours, WordPress will have you blogging in hours, Drupal will have you building websites in hours, and so on.

Like junk food, however, these things will keep you full and happy for a short time, but aren't healthy for you in the long run. At some point sooner or later, anyone who bouts with Yii, Drupal, WordPress, Joomla, or any number of other "instant gratification" frameworks and applications will start to feel the long-term effects on their mental health.

Your body can take a lot of punishment when you're young, but as you grow older, most people find that eating this stuff for too long does not make them stronger, and eventually they move past it and learn to eat right, or they simply quit software or do something else.