Asking The Right Questions
You’re looking to learn a web programming language. That means you fall into one of two camps. Either you’re a new programmer looking to learn your first language, or you’re already a programmer looking to pick up something new.
Regardless of where you stand, you have to ask yourself a few questions.
- Am I looking to learn this language to further my career?
- Will this language advance those goals?
- What companies are working with this language?
- Do I want to work with those companies?
- What kind of ecosystem does this language have?
- Do I enjoy working with this language?
There are definitely more, but you can get a picture of the line of thinking you need going into this decision. It’s an important one, and you’re probably going to be spending a lot of time working with whichever language you choose.
The Top Contenders
When it comes to web development, there are some clear favorites. These are all languages that have a strong history and are being put to use by top companies in the tech world. Any one of them could be a good choice, but which is best?
PHP is the original language of the Web. In the early days of dynamic content, PHP was the only real option. It was easy to get started with. It still is. PHP is also free and open source so you can get started without investing any money. When PHP was first released, that was rare.
It’s easy to see why PHP caught on so quickly, but what about now? PHP is still easily the most popular language on the Web. Around 80% of websites are built with it, and it has a thriving community built around platforms like WordPress, Drupal, and Laravel.
So, PHP is the clear winner, right? No. PHP has its problems, and they’re big ones. PHP is not the most well-designed language. It’s inconsistent, awkward, and generally pretty sloppy.
To make matters worse, PHP’s friendly learning curve has made it a bastion for sloppy and unprofessional code. As a result, PHP has earned an unpleasant reputation as a difficult to maintain security nightmare. Popular PHP platforms, like WordPress, are frequent targets for attackers.
PHP is no favorite in the startup world, so you’ll have a hard time finding work in a cutting edge environment. There is plenty of PHP work to be found, but it usually pays less than other languages, and chances are, you’ll be spending most of your time maintaining old codebases or slapping together quick and cheap websites.
Ah Ruby, savior of developers everywhere. The end of PHP’s unquestioned dominance came with the development of Ruby on Rails. Rails enabled developers to build robust web applications quicker and more simply than ever before. It immediately started to win over developers. It wasn’t long before Rails dominated the startup world.
It is in Ruby’s design goals to make the lives of developers easier, and it shows. Ruby is clean, simple, and easy to read.
Ruby is a fully object-oriented language. Everything in Ruby is an object, even numbers. Ruby is also loaded with helper methods that can simplify your code. They can also feel strange to experienced programmers because it doesn’t conform to the same conventions as most other languages.
Ruby also has its limitations. It executes slowly compared to many other languages. Combine that with the size of Rails as an application, and you’ve got potential scaling problems.
Right now, Ruby is still strong, but it’s not as strong as it once was. Rails is no longer the de-facto choice for startups. It’s still very popular, but other options have caught up and eaten into its market share.
Rails and Ruby still have a very strong ecosystem with loads of developers and jobs, but it’s also past the peak of its popularity.
Python is a general purpose language. It is huge with Linux and the open source world, but developers use it for all sorts of projects.
Python is known for being simple, straightforward, and logical. The Python way of doing things is often referred to as the “Zen of Python” because everything is usually calm and clear. Python has very few strange idiosyncrasies.
In the web development world, Python powers some of the largest sites in the world. Interestingly enough, it never gained as widespread adoption as the likes of Ruby and PHP.
Several great frameworks like Django, Flask, and Pyramid are built with Python. Like the language itself, they tend to value explicit configuration.
The job market in Python is on the upswing, but only a small portion of that is in the web space.
NodeJS has changed the landscape. It’s versatile. NodeJS can be used as part of the MEAN stack, which works similarly to frameworks like Rails and Django. It can also be used to develop custom applications from the ground up. NodeJS has even edged into the desktop space by enabling the developer to make custom cross-platform clients for web applications.
NodeJS makes use of asynchronous programming, allowing it to run much more quickly than many other back end options.
It’s hard to point to only one language and call it the “best.” What’s the best for one person may not be great for someone else. Programming languages are tools, and it’s important to use the best tool for each job. Using one tool for every job may not work so well.