You’ve decided you’re ready to take the plunge and start learning to code, but where do you start? There are so many resources and SO many opinions out there, it’s difficult to cut through the noise to understand what’s important in the beginning.
Understand that this is a crucial decision. You’ll be spending hours and hours with this language and this language will dictate the kind of project you’re able to build and even perhaps the kinds of jobs you’re able to get.
More importantly, your first language will help you determine if you even like coding. So picking the wrong language may in the end turn you off from programming altogether.
But let’s prevent that and make sure you have the information you need to proceed wisely.
In the end, the goal is to learn how to be a “programmer”, not just someone who can write some code in a given language. So ultimately, as long as you’re learning a logical programming language (not markup like HTML and CSS and not even pseudo code like Excel), you’ll be making some progress toward your goal of becoming a software engineer.
However, being aware of the following will ensure that you avoid some unnecessary pains and get you on the right track quickly.
Being “Language Agnostic” means that you’re not a fanboy/fangirl of a particular language but you’re able to understand programming on a deeper level and the commonality between all languages.
Ultimately you’ll learn many languages over your career as a Software Engineer, so think of your first one as, just your first and not your only and not the “best”. You really don’t know how good your language is yet because you have nothing to compare it to.
Companies want to hire developers who have a “right tool for the job” mentality. Meaning, you choose a language for a particular project based on its ability to tackle a given problem.
The following will give a matrix by which to judge the first language you learn.
1. Widely Adopted
Your first language isn’t the time to learn the newest or most obscure language. Pick something that is has a wide user base and plenty of online examples. This way you will have plenty of places to ask for help and will be learning something that may prove useful in a job setting one day.
2. Instant Feedback Loop
3. Easy Set Up
Some languages are easier to execute and set up than others. Compiled languages require that you have a compiler to actually run the code you write. A compiler will break the language down into instructions that the computer can understand. In the beginning you can get around this by using a browser IDE (integrated development environment), like repl.it.
4. Can be Used to Build Real Stuff
1. There Are a Ton of Resources
2. It Can be Used to Build Anything
3. It's a Great Learning Tool
The two pillars of programming languages are “object-oriented” languages (Java, Python, Ruby, C++, etc.) and “functional” languages (Haskell, Scala, Clojure, Lisp, etc.).
4. It's Low Hanging Fruit for Jobs
1. Don't Learn Part of the Langauge
Regardless of what language you choose, work hard at learning it and all of it’s difficult parts. The last thing you want to do is start building real applications with a language you don’t fully understand. This will cause a mass amount of headaches and unsolvable bugs.
2. Don't Bounce Around from Language to Language
Perhaps the worst thing you can do is start learning one language, learn a little of it, and then jump to learning another language without fully learning any one language at all.
This will be tempting to do as many will try and convince you that you should learn their language but stick to your guns and remember the big picture of becoming a programmer. Jumping around will only hinder your ability to learn anything at all.
3. Don’t Rush It
Learning to program is hard and in the beginning, you’ll make a ton of mistakes. It will hurt your brain and you might want to quit. We often enjoy what we’re good at and you won’t be good at this, at first.
But push through this and try to learn the entirety of one language. This will help you not only build confidence but a firm foundation for learning more complex concepts going forward.