Does more choice make software development easier?

Lately I’ve been thinking more about maintaining code, our relationship as developers with the projects we maintain and the attitudes that define our work.

Perhaps echoing some of the ideas of a previous article “The Programmer’s Rant Rut”, I’ve been thinking about the way software dev has evolved such that we now have an ever growing number of technological choices (more programming languages, frameworks, libraries and methodologies.)

I imagine that most of us advocate “the right tool for the right job” approach. While in some decision areas there are technologies that seem most appropriate for the job at hand, in others a single choice of technology is not so obvious.

If I’m trying to say, choose a programming language with which to build a simple REST API, I have many viable options (so many it’s not worth listing them out.) But for this simple use case there’s a lot of crossover. How then, can I argue that any one language is “best”?

Removing “personal preference”

On several occasions in my career I’ve heard something to the effect of, “we decided to use X because it’s what the Lead Dev liked at the time.” Understandably in most situations it makes sense to play to our strengths. We choose languages and libraries we’re most familiar with so that we can deliver a better outcome, faster.

But were we to remove personal preference from the decision-making process, on what other grounds would we decide which languages to use?

How to choose a programming language

Most programming languages exist to solve a particular problem not addressed by another.

Golang for example, is widely regarded for its speed and concurrency built-in. R is used for data analysis because of its efficiency in handling data and its extensibility.

I haven’t used either of these languages well enough to be able to tell you whether these statements are correct or not; this is just what I found on a number of forums, Reddit, Quora etc. And herein lies part of the problem: Without experience using a particular language for a particular use case, how can I even be confident that the basis on which I’m choosing a language is correct?

Unfortunately I think the internet is responsible for many of the mistruths that are propagated online about programming languages and for that matter, technology. It’s too easy to make it seem like you have relevant experience to someone who doesn’t.

“PHP is ugly.”

“Java is outdated and slow.”

“Language X that came out yesterday is the best thing ever.”

How important is a language’s syntax to our decision? Python is widely considered to be elegant to read and write. Is Python more popular because of the way it “feels” to write? What’s more “elegant” about Python than say, Javascript?

Factors like the available talent pool will come into play for businesses when choosing which language to use. In my surrounding area, the prevailing language is PHP, probably because the marketing agencies that do most of the hiring make websites in PHP-based CMS’. In London however, the situation is quite different. Variety in the available work means variety in process.

A universal language

To end, I leave you with a mental picture.

A single programming language exists with all the features of the most popular languages today. It’s concurrent. It’s fast. It has X, Y, Z features and a bunch of others in the pipeline. It has a massive community; the biggest of all. It’s used by the biggest tech companies in the world and it’s well documented.

What’s unrealistic about this? What are the obstacles to a universal language existing and why wouldn’t it make our lives easier?