A few people have asked me what would be the most useful or best coding language to learn.
Skipping aside HTML/CSS—I think the answer rests on what you want to do with code.
A quick rundown
- Angular.js can control the front side of the website that displays to your users.
- Node.js will act as a Web server that can host all of your content.
- Express.js runs in the middle directing where information goes.
- MongoDB acts as the storage center for data you accumulate from your users.
The MEAN (Mongo/Express/Angular/Node) technology stack—an organizing framework that helps build everything you’d need for a Web application—is the one favored by a whole lot of startups these days. It’s a whole component of technologies that can build everything Web-wise based on one language.
I’ve been using Egghead.io and Scotch.io to catch up on my Angular and MEAN stack skills. Egghead is focused on video tutorials that are structured sequentially, Scotch has some great graphics about the whole process of building Web apps, including the following explaining the MEAN stack.
They’ve got great tutorials on how you can go about building nifty applications such as basic search engines, and new ways to validate forms (making sure that when you create input forms, people are actually putting in valid criterion). With Angular itself, you can animate a website and make it move, with not too much in terms of setup, which is pretty nifty.
Python is very readable and legible, and has recently become the introductory language of choice for universities teaching computer science majors.
It’s fantastic for playing around with data, and doing all sorts of nifty things you wouldn’t have thought possible with its various community modules, such as scraping Web pages in their entirety, and doing advanced scientific data analysis. I started out with Learn Python, which suited my fashion of learning by doing.
Java (and other languages that are closer to interacting with computer hardware) can be a bit more difficult to interpret for human eyes, though they are wonderful for understanding more of how code actually works and how you’re interacting with the computer.
Java is also used for mobile development on the Android ecosystem, which is something that will always be in demand.
If we want to switch briefly from knowledge to money, I’ve seen a lot of demand for iOS developers, and Objective-C and Swift aren’t that hard to pick up.
Ruby, especially when used in conjunction with Rails, is also something a lot of startups are building on for which the learning curve isn’t that high (in fact, there was a children’s book for Ruby).
I’ve got together a bunch of learning lists, and resources to help me and you learn what we need to build great things. But none of these are the best coding language to learn, per se.
The best coding language to learn—and how to go about doing it
The absolute best thing to learn is to learn how to think like a programmer—learn how to solve problems mathematically, with clean and concise code. Coding languages evolve, they change, they fall in and out of favor. One community might morph into another.
The great Web applications of the present might be obsolete in a few decades. What won’t change is the need for people to think logically, and solve problems—and make it an automated and easier process with machines.
You can bank on the fact that going forward, if you practice your problem solving skills, you’ll be able to find your best language, and get the knowledge and money you need to build great ventures.
I’ve been opening up Project Euler, a set of programming math and logic problems, and using the Codecademy workspace in Python to try to create clean code to solve these problems. This was something a Google recruiter mentioned as being a great training step to learning code—and I don’t doubt it. I feel sharper and more confident in my ability not only to code—but to think.
The best language to learn is ultimately the language of logic, math and problem-solving that is at the core of code. There is no right or wrong, as long as as you understand the fundamental values of programming.
What are your thoughts?