So Many Languages
So you want to learn to write code. You may love computers, you might love gaming, maybe you just watched a movie about hacking and you got excited. So you did a little research to figure out where to start. Maybe you even googled something like “best programming languages” to get a better idea. And you found 10 or more different lists of the top 10-20 most popular programming languages. But the lists don’t match, so you ask some friends that are programmers. And they all have their opinions about which language is the best. But even those opinions are all different.
When you started, you dreamed of being a programmer. Now, it feels like a nightmare, constantly wondering which language to learn. How are they different? Which ones are relevant?
You might feel like you better make the right choice now, because the rest of your career hinges on this one decision, and you don’t want to get it wrong.
It Doesn’t Matter
Take a breath, and relax… just for a minute. Think back to why you are excited about programming. It’s not because of a specific programming language (at least I hope not). Most likely it is because you have a vision of something that you want to create or build. A programming language is just a tool that will get you to your vision.
Keep in mind that as you start to become a programmer (software engineer, developer or whatever you want to call it), WHAT YOU LEARN about how to solve problems with computers is far more important than WHICH PROGRAMMING LANGUAGE you are learning.
What All Languages Have In Common
Regardless of which language you use, the goal of each language is the same, for you to give instructions to a machine. All language give you the ability to make decisions, manage memory and perform calculations. Because all languages do these same things, once you learn how to program in one language, learning another is quite easy. Learning a 3rd is even easier. All you have to do is to translate what you know about one language (i.e. Python) to how those things are done in another (i.e. C#).
Walk Before You Run
An easy stumbling block in learning any new skill is when you try to run before you have even learned to walk. Have you noticed how every 4 years (when the Olympics come around) how for a few weeks it seems like everyone wants to be an Olympic athlete? We see professional athletes perform amazing, seeming impossible tasks, and we want to do the same. But why does it only last a few weeks? In large part I believe that it is because we want to jump right into the Olympic games. We want to compete without ever learning how. And when we fail we assume that we weren’t meant to be an Olympian.
Being a great programmer is no different. When we see an amazing new app on our phones, we want to be able to create it as well. And when we try to jump right in to developing something of which we know very little, we quickly stumble and it’s easy to think “I guess I’m not cut out to be a programmer”.
My advice to you is learn to skate before you try to do a triple axel. Master the art of programming in one language. Choose any language that appeals to you. Everything you learn will transfer to the next language, even if that language has a slightly different way of doing things.
A Few Suggestions
I know, I know I said that it doesn’t matter what language you learn. But you might still be asking “So which one should I start with?”. Well, ok then. Here are 3 languages that I think are great choices when learning to program.
- C# is built on the .NET framework, and with the move to .NET Core has increased in popularity greatly. You can create a wide variety of applications using C#. Windows, Web, Mobile and more. It is widely used in enterprise applications of all kind.
- Python is a great all purpose language. It does not require a lot of initial setup to get started, but it can still be used for both basic and advanced/enterprise level applications. It has become quite popular again in recent years, and is frequently used for Data Science applications. Python syntax is simple and clean and in my experience has an intuitive style that is easy to learn.