Get your FREE 30 page Developing SOLID Applications guide!

It’s About The Customer, Stupid

Out Of Date Warning

Languages change. Perspectives are different. Ideas move on. This article was published on April 10, 2012 which is more than two years ago. It may be out of date. You should verify that technical information in this article is still current before relying upon it for your own purposes.

Another day, another article posted on Hacker News that describes PHP’s failures and complexities as though they actually mattered.

The truth is, only programmers care about languages. Only programmers care about the methods, routines, algorithms and organization of programming languages. Only programmers argue about coding styles, whether white space or brackets is the best way to separate code blocks, and about design patterns.

Know who doesn’t care? People who write checks. We usually call them “customers.” Customers don’t care about programming languages, or how an application is written. In fact, some of the most successful applications in the world are some of the worst written ones. We could sit and argue about whether PHP is awesome because it runs Facebook or whether Python beats it because it runs Google, but at the end of the day it doesn’t matter to the people who actually pay the bills. They have a problem to solve, and they don’t give a shit about the language used to solve it.

Languages are a tool. Languages are a means to solving a business problem. Unless you’re selling addons to a language, the language you work in matters less than your creativity and ability to solve problems. If a particular language makes it easier for you to solve problems, by all means use it. But the customer doesn’t care whether or not you used an old hammer or a shiny one. They just don’t want nails sticking out of their “walls.”

Stop arguing and solve the damn problem. It’s about the customer.

Learning design patterns doesn't have to suck.

Design patterns open a whole new world of possibilities. So why are you avoiding them? This brand new book will help you finally understand these wonderful programming techiques!

Learn design patterns TODAY »

Ron wrote at 4/10/2012 10:50 am:

There is a certain segment of the population that hates.

Whether it is the OT (one true) programming language, OT diet, OT religion, OT way to make a martini… everything else pales in comparison, in their eyes.

Using a “substandard” programming language is ignorant and immoral to them. Discussions of the ends justifying the means result in devolving arguments that require Godwin to be invoked.

PHP is my weapon of choice. Is it because I know it best? Is it because I enjoy it? Sure, whatever. There are things I don’t do with PHP – it’s not the right tool for every job – and there are things I wouldn’t do web-development in.

(That said, the thought occurred to me that it might be an interesting exercise to write an entire web-application in assembly language… :D)

He makes valid points, no question, but I disagree with his conclusions. The PHP community deals with _a lot_ of this and always will. That doesn’t mean that we should dismiss it, there’s always lessons to be learnt from dissenting opinion and external perspectives.

I’ve used/modified web applications written in many languages now (Perl, python, RoR, Java, server-side Javascript…) and sometimes they’re good and sometimes they’re opaque, complicated and confusing (I know people who swear by Zope/Python – I just swear at it and the CMS built on it, Plone… and don’t get me started about some of the quirks of the Java Servlet model… oi.)

PHP isn’t going to go away because of rants like this. We’re not all going to pack up and stop developing in PHP unless something that _we_ feel is significantly better comes along. By better, I mean something that lets us get stuff done, quicker, easier and with less problems.

Until then, I’ll read these things, take from them what I see of value, and move on.

Omni Adams (@omnicolor) wrote at 4/10/2012 12:47 pm:

Python doesn’t run Google. It’s just one of the three most popular languages there. There was more Java and C than Python.

KMB wrote at 4/10/2012 12:49 pm:

The site is not called “Customer News”…

Lucio wrote at 4/10/2012 1:37 pm:

I think its mainly due to the scalable economics of software, one piece of code can maki millions or just cents.

If you are going to write something and you know its going to be facebook, write it in asm for all anyone cares. If its just going to be another cog in a low margin engine, you better make it cheap, easy to change and tidy.

dho (@dhobsd) wrote at 4/24/2012 4:59 pm:

I really have to disagree; language choice definitely matters to the customer. If you choose a language that is not particularly expressive and has a poor security history, someone pays a (very real) price for that. You end up re-implementing and refactoring things because the language doesn’t allow you to express a problem very well. You end up re-implementing and refactoring things because there is a vulnerability in your application. Or worse still, there’s a vulnerability in the implementation and you end up paying for it in folds if you can’t figure out how to fix it.

Customers definitely care what language something is implemented in because it effects their bottom line. This is why you see financial companies like Jane Street with internal customers hiring people who can write OCaml, because they are writing internal applications and that (or some functional language) is the best tool for the job. And people choose PHP because it’s almost ubiquitous on shared hosting environments (or easy to install elsewhere) and PHP developers are a dime a dozen.

Customers also definitely care about algorithms. Try implementing a brute force graph search over public GIS data for roads. If you had customers before, you won’t for long, because your route searches for destinations outside of a 5 mile radius will take hours to perform.

Other areas you discount include academia, where language matters a lot. PHP can’t be formally verified. It is not particularly composable. It is by nature not deterministic. These are blockers for some customers of academia who need guarantees. In this way, they care about the language.

It may not appear that they care, and if you asked them directly, they might agree with you. But they definitely care. I think your point relies on the standard definition of customer and an assumption that the customer is ignorant with regards to your methodology. You are confusing ignorance with complacency, and they are different. Just because a customer is ignorant of languages, programming paradigms, algorithms, data structures, and what-have-you does not mean they don’t care about them.

If you don’t believe me, make the wrong choice, cost your customers a bunch of money, and see how long the checks keep coming. The customer does care.

And Ron, to your point, pointing out the flaws of PHP might be an academic or redundant or useless exercise to you. To “the customer,” it helps them figure out pros and cons of a system that might otherwise be a black box. It should also be a wake-up call to people using that language that perhaps it’s not a bad idea to learn something else. I didn’t read the article, but I have a gazillion criticisms of PHP (despite it being the first language I used professionally). From that perspective, it is totally worth it for PHP developers to be exposed to the shortcomings of their language, not necessarily so they stop using it, but hopefully so they’ll learn how to use it better or what not to use it for.