What programming language should I learn?
That is possibly one of newbies’ most asked and answered questions on the web. Depending on where this question is asked, the general crowd will attempt to steer the unsuspecting newbie down a biased path.
The issue with the advice given is that people will tend to recommend only what they know.
I’ve seen a lot of people advocate for Python without giving a reason, while being vehemently against Java, PHP, JavaScript, or anything else they know nothing about. Read this kind of advice with a side of caution.
The thing is, most of the time, you get bad advice because you’re asking the wrong questions. Becoming a happy and mentally healthy developer requires two questions.
The first is “What do I want to achieve with code?”
That should be followed by “How do I get there?”
I Want to Be a Game Developer
This is a common one, and one with the widest possibilities. But it leads to the question “What kind of game developer?” Are you looking to do the art side of gaming? Are you looking to make virtual reality games? Or are we talking mobile app games? MMO? Indie releases on Steam?
C++ is the most common language when it comes to commercialized game development. Games like The Witcher 3 and Elder Scrolls V: Skyrim are created in C++. Some game development engines such as Unreal will also only run on C++.
Talking about engines, you’ll also need to figure out how to use the tools to help leverage the game-making process. Unity engine is another popular one — but that uses C#.
I Want to Be a Web Developer
Web development is a much wider sphere than a lot of people believe. The usual recommendation is HTML, CSS, and JavaScript, at the minimum. You’re also going to need a framework or library such as Angular or React to make life easier.
To be a fully fledged web developer — commonly known as a full stack developer — you’ll also need to add in infrastructure, database, and back-end development.
For infrastructure, you will need cloud-based knowledge and skills. The big three technologies that will get you noticed by potential employers are Amazon Web Services (AWS), Google Cloud, and Microsoft Azure. While the ideas behind the multitude of services they offer are transferable, there are distinct and unique ways of working with each of the services. Usually, the companies also offer free tiers for you to experiment and play in.
For database, the common two are mySQL and MongoDB. Amazon has its own version of tableless database, called DynamoDB, that’s fully managed. Google has a mobile development platform called Firebase that also doubles as your back end through Firebase’s API systems.
And finally, to create your own APIs, you’re going to need some sort of back-end-based language, such as Java or node.js. There are also the options of using PHP, C++, and C#. Serverless microservices can also create APIs through a combination of various services, such as pairings of AWS Lambda with API Gateway or Azure functions with API Management in Azure.
The best advice for web developers is to check your local market demands before you jump in, especially for back-end development. You might find that you’ve decided to hit the Java books, when everyone wants to hire for PHP or node.js only.
I Want to Make Apps
There are multiple ways to make apps nowadays. When you say that you want to make apps, I’m going to assume that you’re talking about mobile apps.
There is a type of mobile app called Progressive Web Apps (PWA), which uses HTML, CSS, and JavaScript run through a framework that generates mobile native code. It’s an easy way of reusing your skills as a web developer to reduce the time needed to create the same app for different platforms.
However, it’s still worth being a native mobile app developer as well. Depending on your chosen device, you’re either going to need Java for Android or Swift for iOS.
Learning infrastructure, databases, and back-end technologies for API creations is also useful, because at some point you’re going to want to store data. Without infrastructure knowledge or the skills to create APIs, you’re not going to have endpoints to connect to your database.
I Want to Get a Job as a Developer
Going down the web route is possibly the easiest way to get a foot in the door. However, because web development is easier to pick up, it’s also highly competitive.
If you want to differentiate yourself from other juniors on the market, choose an area of specialization first — but also have a breadth of knowledge across the different parts of programming and associated topics.
If you’re going to specialize in front end, be sure to diversify yourself with design knowledge, color theory, and CSS preprocessors such as SCSS.
For the back-end track, look at getting into Java. Python is easy to pick up, but that is also based on local market demands. Where I am, PHP is probably more popular than Python, with Java and C-based languages being the most popular with companies and recruiters. There is no clear winner in this area. It is entirely dependent on your job board research results.
Having knowledge of databases can also make or break your application as a developer — so be sure to be versed in mySQL and/or tableless structures. I say “and/or tableless” because a majority of businesses, especially those with legacy code, will run off mySQL or the equivalent.
I Don’t Know What I Want Yet, I Just Want to Learn Code
This is a hard one to answer, because you’re asking for directions without a clear destination.
Learning web technologies is probably your best bet, because you can get something up and running quite quickly. The fruits of your hard labors will ripen much faster than if you try to create something commercially viable with Java or the C languages. JavaScript is one of the easiest programming languages to pick up — but be sure to learn it properly. Dig into programming paradigms like SOLID and cohesion, and learn how JavaScript works in libraries and frameworks.
Final Words
Having a clear idea of what you want to achieve with code can help pave the path to your desired destination.
The more specific your questions are, the easier it is to get the desired result. Developing the skills to ask the right questions will help you in the long run, especially when you’re stuck on a piece of code and need some help from the internet. Learning to frame your questions will result in a speedy and correct response.
All the best of luck on your coding journey. I hope that you’ve found my answers to your question helpful.