Hacker News new | ask | show | jobs
by ceronman 3461 days ago
I completely agree with the idea that we are overestimating the impact of tools, specifically, programming languages.

I often see startups that rewrite their software one or more times just because they think that changing the tools is the key to success. They switch from PHP to Python, then from Python to JavaScript then from JavaScript to Go. It's so easy to say "We failed because X language, now we have to use Y".

The case when choosing a given language will give you a considerable advantage over choosing another one is very rare.

The worst thing is that we tend to say that languages suck while completely ignoring all the evidence of the opposite. How many times we have heard that PHP, C++ or JavaScript suck? How many amazing software projects have been built using these technologies?

On the other hand, look at the tools that self proclaim the best ones (lisp, haskell), how many big complex software projects have been built with them?

In the end they're just tools. Yes, they make a difference, but it's tiny compared with all the other pieces of the puzzle of how to build good software.

4 comments

> The case when choosing a given language will give you a considerable advantage over choosing another one is very rare.

> How many times we have heard that PHP, C++ or JavaScript suck? How many amazing software projects have been built using these technologies?

Languages are better or worse suited depending on the application. How many of these amazing software projects in C++ are web backends? Most of entire Web 2.0 boom has been built on higher-level languages/frameworks like Rails/Ruby, Django/Python, and more recently Node/JS. Its simply not possible for the average software engineering team to build systems as fast and as reliable in something like C or C++. Similarly, the revolution in applied machine learning we are currently seeing would not be possible without tools like NumPy or scikit-learn and the frameworks that have been built on these. On the other hand, 3d game engine code is almost universally written in C/C++.

Sure, choosing between Rails or Django will not matter all that much to your stack in the long run. And its just as important to build a good team around your tech. But the best team in the world is not going to be able to write a highly optimized game engine in Python or quickly prototype new NNs in Ruby.

New languages become popular because they address some need that was not previously met. Understanding these roles different languages play is an essential skill in software engineering.

>How many of these amazing software projects in C++ are web backends?

Varnish cache is written in c

Having (or not having) large successful projects written using some tool is not evidence that it's a good tool. Your implication that it is stands in bizarre contrast to your statement that the impact of tools is overrated.

Force of will, network effects, and other political factors dominate most forms of technical merit when it comes to "success" of a project. This includes such meritorious properties as security as well as understandable code. Let's not give up, OK? Doing a good job is always going to be hard, but it doesn't have to hurt this much, and it doesn't have to be as crappy-by-default as it is now.

As we take responsibility for doing better with our tools, we need to take responsibility for doing better on our tools.

Just today I came across this tweet that describes that exact issue https://twitter.com/jessethanley/status/813904788702183425

Now while I do believe that some tools are better for some jobs than others, I also think that many times people are just exchanging one set of problems by another without realizing it.

Just a tangential point, it cannot be accidental that many programmers list JavaScript, PHP and C++ as languages that suck