How to Choose a Programming Language as a Beginner
When I first started learning I had no idea where to begin, but I just knew that I wanted to get into programming. I began with learning Java through the book Head First Java and did some assignments along with my sister’s CS101 class.
At this point I knew that I wanted to become a programmer, because I was having so much fun. The problem was, that I didn’t know where to go next. I wanted to build apps, but there are so many languages to learn, and so many resources out there. I honestly didn’t even know what the important technology to learn would be for doing web development, or if I even wanted to do that at all!
Needless to say, without anyone to ask I spent a considerable amount of time floundering about dabbling in various languages until I eventually found out what each language is good for and why you would want to use them.
The other problem is that there are so many ideas on how to learn programming. Some say you HAVE to have a CS degree, while others will say to try a bootcamp, and then you have those like me who are 100% self taught. So how do you know what the right answer is?
Well, the right answer is that there IS no right answer. The truth is that there is only a right answer for you.
What type of problems do you want to solve?
So programming at the core is just a way to solve problems. We want to make solutions to complex issues. We want to make our lives easier, more entertaining, and efficient. Just as with anything else, there are multiple ways to solve these problems and all have their own benefits.
So the first thing to do is to think about what type of problems that you would be interesting in solving. For example, I wanted to make apps that I could use on my desktop and phone, and I wanted to make ACTUAL applications not just static designed pages. I was going to choose to just stick with Java for this since I could use it for android apps, but eventually decided to try and learn web development since I noticed several web based apps were quite usable on phones now.
You may come to the conclusion that you want to build games, or create smart home technology, or dive into security. Whatever it is that sounds interesting to you, focus on that space.
Languages used for various roles
So here is a minimal list of areas you can focus on, and the popular languages associated with them. This is by NO means a perfect or comprehensive list, but it is can help you get started.
- Web development front end
- HTML, CSS, Javascript, JQuery
- Web apps and backend
- Ruby, PHP, Python, Node (Javascript)
- iOS / Android apps
- Swift, Java
- Convert web apps with Cordova / Phone Gap
- Video Games
- C++, C#, Java
- HTML5 games are becoming popular (phaser.io)
- Big Data / Machine Learning
- R, Scala, & Go along with Python
- Desktop apps
- Almost anything…C++, Java, Node.js
- Systems programming / Low level stuff
- C, Go, Assembly
- Robotics
- I suggest learning functional languages…Clojure, Haskell etc.
So many choices! How do I choose?
So as a complete beginner, you may not even have an idea of what is interesting to you yet. For that, I’d say just start dabbling with things. You can spend a few days playing with Javascript, Ruby, Haskell, C, Python, or almost anything through free noobie websites and books. I got a good feel for what I enjoyed by going through some Code Academy and Khan Academy courses. Overall, just experiment and HAVE FUN!
Web development is so broad and useful I think this is where most people reading this article should jump into. There are SO many things you can do by having knowledge of building websites and web apps. In fact, you could break out this list of things many more times just in the realm of web dev alone!
If I were to start over from zero knowledge again, I would recommend beginning with HTML, CSS, and Javascript as those are the building blocks of SO many things these days. A lot of computer science programs will put you on Java and C right away, but that can be difficult and hard to get “wins” with. As a noob, I believe you will have the most success and fun by picking up something which is fast to develop in, and can be visual. HTML, CSS, and Javascript will give you that.
Going forward
No matter what you decide on, stick with that first language for a while and really get the hang of it. The great thing about learning to program is that once you get the fundamentals of one language down, it will be 10x easier to learn another one!
I can pick up a new language and learn it to a usable level in a matter of days at this point. I’ve learned Actionscript 3, Java, C, C++, Ruby, Javascript, and Python. It only gets easier. If you want some resources to get you going with web development then be sure to check out my mega resource page.