Yo yo yo! Vigillance here with my thoughts on one of the largest questions out there.
WHAT LANGUAGE SHOULD I LEARN IN 2018?!
For my lineup, I’m going to include two old curmudgeons and one of the younger, yet slightly experienced whippersnappers out there (age references based on combination of actual age and popularity of language). C++, Java, Python (yes, in that order).
DISCLAIMER: These are some co-workers view points, information I’ve found during my own research on this topic, mixed in with a little experience. I am not a career counselor so please make sure to do your own extensive research before making a career altering decisions… please.
In my opinion, the biggest thing to keep in mind when asking the above question is “What do I want to do with whatever language I learn” because that has a massive amount of priority when deciding what the best language to learn is.
Example: I want to write an extremely complex 3D video game that uses Unreal Engine and the Internet says Python is the best language in 2018. I’ll learn Python, build my game, and become rich and famous! … NOT! Just doesn’t work like that.
1. C++ (1 better than C)
C++ is still extremely popular in the development world even though it was originally released in 1985! There have been many iterations since then though that have improved functionality. To determine if you would like to learn C++, you need to think about the type of programming you want to do. A few things this language excels at are as follows: game development, system/application software, client-server applications, embedded firmware, and drivers.
Pros: been around the block, tons of applications developed in it all over the world, extremely versatile, pretty low level, job opportunities galore.
Cons: old and been around the block a few times, a lot of the software industry is moving to the cloud and shared micro services which C++ isn’t great for, newer languages are constantly bucking to take the crown from the king, many find it confusing/complex to learn and implement successfully.
All-in-all, this is a great language to learn. As I mentioned, this language has been around for a long time, which means there are a lot of C++ programs out in the wild. Old language + lots of apps written in that language + slightly complex/difficult to learn = ipso facto JOB SECURITY! Even if C++ goes by the way-side, and people stop developing new applications in it, it’s going to be decades before everyone can migrate to new platforms written in new languages. During this period of time, being a C++ consultant would be extremely profitable. It’s just like with COBOL. It was the dominant language and a ton of people wrote home grown applications in it. When it finally died, people didn’t want to pay to have new platforms built, so they just brought in COBOL developers to maintain or fix their systems when needed, usually at exorbitant pricing compared to their salaries when COBOL was mainstream.
P.S. In case you don’t know what I mean by (1 better than C) in the title for this item, it’s because of the ++ operator in the name of C++. In programming languages, increasing a variable by 1 is quite common and ++ is the operand that does that. Basically means C+1.
2. Java (TM)
Java is quite old, just like C++, but it was released in 1995 so it’s roughly 1 decade younger than C++ (think of that mid 30 year old friend you have that keeps up on what all the cool young kinds are doing, but also started some of the fads that the cool young kids have now picked up). Because of it’s age though, it has a lot of the same benefits as C++. It’s widely used and will continue to be widely used for the foreseeable future.
Defining feature over C++: Mobile/Internet functionality along with ease of use. It was adopted by Android so all Android apps are developed in Java. There’s also a huge push by the Java community to make it the default language of the IoT (internet of things).
Pros: there’s the whole “it’s everywhere” thing which means no worries finding a job, strong mobile and internet presence, as companies move more and more to the “cloud” Java is going to become more of a foundation, a major feature when it was being designed was to make it easier to use than C++…
Cons: some sites are indicating a small drop in job postings at the beginning of 2018 compared to beginning of 2017, (roughly 6,000 fewer postings which is nothing when compared to the hundreds of thousands of jobs it’s created). Quite popular so the market may already have a lot of educated developers out there (think of that time you rushed out to buy bitcoin when it was at $20,000 and it immediately tanked and is now sitting at $8,000 – still worth a lot, just got in at the wrong time).
All-in-all, I would definitely give Java the two thumbs up as a great language to learn in 2018. Even if there is a small pullback in job postings, it’s going to be around for a long time. You might not be able to get a job by just randomly throwing a resume into the wild, but if you put a little effort in, there are jobs-a-plenty out there in the Javaverse.
Last but not least…
Here’s the young’in coming in at the tail end of the pack. Python, named after the comedy troupe Monty Python, is quite an interesting language. Technically it was officially released in 1989 making it a few years older than Java, but it didn’t really pick up in popularity until ~2010 (which may or may not have been the year I was supposed to graduate from college if I would have spent more time in class…). Because it didn’t gain widespread support until after 2000, I am considering this one a young’in!
Separating Feature: Python isn’t easy to learn, it’s FUN to learn(which I guess makes it easy too…). Honestly, it’s amazing how efficient Python is while getting syntax out of your way. I remember when I first looked at Python when I was starting to get into programming and thought “this is going to be easy!” Then I picked up C++ and was thoroughly confused because Python was so simple comparatively.
Pros: Great for beginners, fairly high salaries, allows for quick turn around on code (doing the same thing in Java takes 5x more code and in C++ takes 10x more code), becoming much more ingrained in scientific and artificial intelligence research, “it’s the future”.
Cons: Because it’s so forgiving and easy to use, this can cause problems in larger real-world projects. It can basically get away from you if you don’t have a lot of experience and structure it properly.
All-in-all Python is ALSO a great language and it really depends on what you want to do with your programming knowledge. If you are just getting into programming, Python can be a great foot in the door. Then as you need to do more and more and don’t like how lose Python is, you can switch to something like Java. OR, you can start learning it, love it, become awesome, and get a high paying job. It has a great many benefits to learning it.
Programming languages are unique and each one has a best use scenario. Try giving some thought into what your end goal is (Web apps, Android Apps, just learning, corporate packages, OS level development, or even Video Games). Once you have determined a route you would like to pursue, start doing some research into what language best fits into your goals.
Basically, programming is awesome and you should pick up at least one language!