“Last night I was playing Grand Theft Auto Vice City which really does hold up to the test of time, but then I realized I love it so much because it must be written in C++. I mean all the best games are written in C or C++, only losers don’t use that language. I mean come on pointers make a game fun!”
Well that was just a jocular scenario to get you thinking, why do people care so much about what something is written in when it comes to Web applications? Of course you know by now that you simply aren’t cool if you don’t write for Ruby and use Rails. But it hasn’t always been that way, the magazines or the cool kids have trumpeted ASP.NET, PHP, JSP, long ago ColdFusion and even before that Perl. But really what’s the point of all this?
If you understand the study of programming languages it is certainly quite important to pick a language and framework which promotes good coding, which is easy to write (writable), easy to read later on (readable), doesn’t lead to nastry run time bugs (reliable), perfomant (efficent), and so on. Many languages fit this bill to one degree or another. But all that is abstract PL theory, what really seems to be important about language choice in the world of Web development?
First, we worry about the simple cost of development. Time really does equal money so if building the application takes a long time because the language forces you to write tons of code then you might want to think twice.
Second, we worry about developer training and recruitment costs. For better or worse you run into a problem with perception. If you power your site with Pascal you might find that programmers are simply not interested in coming to work for you unless you pay some premium. The perception is that experience won’t be useful when the leave for the next job. However, if you are using the hottest language or framework people want to learn it, get paid to do so and catapult into another position later on.
Third you worry about past decisions. If you choose the .NET platform or Java or PHP years back you might find that carrying a new language to have costs of its own both in developer specialization or lack of specialization if they have to know too many languages as well potentially rewrite costs if you move to standardize on something new.
Yet at the end of the day all the decisions should be just decisions of implementation as it is all in support of something bigger. The ultimate goal is to build a site, write an application, design a game–not agonize over the raw materials. Sorry to say most of us Web progressionals, we do just that.
We celebrate the rebar and berate those who don’t use our variety. “The new version of X is going to be way better than Y that you use!”
We castigate technologies particularly those we don’t use often based solely on hear say exclaiming things like “PHP doesn’t scale” or “ASP.NET is cheaper to build in”
Yet typically we provide scant evidence for our strong opinions and ignore data which contradicts our claims (ex. Yahoo is built in PHP and .NET developers cost 20% more on average).
What does the user think of all this? Do they beam with pride when the see .php or .aspx extension? Do they trust the application more because it relies on the Rails platform? Likely not, the only people who celebrate the availability of such information other than developers looking for reassurances of their choices are hackers looking to figure out an exploit on your site!
So if user centered design is really your mantra it is time to stop broadcasting your tools like a badge of honor. File extensions be gone! Clean URLs are in. Dump those session cookies that tell the type of tech you use. Eradicate the X-Powered-By headers and technical marketing meta tags and focus your recovered time and energy on that which is important–the correctly functioning and user pleasing application you hope to build.
Oh and there is a happy ending to this idea for those of us who do love our rebar, if we follow this advice to stop broadcasting our allegiances we can change our tech all the time and our end users will be none the wiser. “Ruby is so 2006, F# here we come!”