One of the questions I see aspiring (and even experienced) developers asking is which programming language they should learn. #programming #programminglanguage #learnprogramming
For some aspiring developers, this question ends up being a stumbling block they never get over. Some people even quit programming because they can't find out which language to start with, get demotivated and simply give up.
I’ve coached plenty of developers who were always second-guessing themselves or changing their minds, jumping from programming language to programming language, always worrying about making the wrong decision. They stress over the question, “What programming should I learn?”
If you’ve stressed over this, then this video is for you.
What language you learn doesn’t actually matter nearly as much as you might think it does.
There are several reasons I make this statement, but one of the main ones is because so many programming languages, at their core, are very similar.
What you really need to understand is how to get big problems, learn how to interpret them and translate it into actual lines of code.
In today's video, I'm going to teach you how to pick a new programming language to learn and even give you my two best shots at which programming language should you learn if you're just starting out.
[responsive_video type='youtube' hide_related='0′ hide_logo='0′ hide_controls='0′ hide_title='0′ hide_fullscreen='0′ autoplay='0′]https://www.youtube.com/watch?v=CwaSHqAWPUU[/responsive_video]
Transcript Of The Video
John Sonmez: A lot of you have been asking, “What programming language should I learn?” This is a really, really big question. I mean, it's an important question to know, especially if you're starting out as a software developer or even if you're already an experienced software developer and you want to know what is the next programming language you should learn or what you should be learning right now. So in this video, I'm going to talk about not specifically a programming language, although I'll give you some ideas. Stay around till the end of the video if you want to hear about the specific languages I recommend, but I want to talk to you more importantly about the idea behind this question and why this question is not as important as you think.
Hey, John Sonmez here from simpleprogrammer.com. So, let's talk about this. What programming language should you learn? If you're looking to start a career in software development or get a job, what's the most beneficial one? Well, here's the thing and here's something that I'm going to tell you guys that are beginners, some of you that are already experienced, you already know this guy's. If you're a beginner starting out, one of the things that you need to know is that most programming languages are very, very similar.
What I mean by that is that in the course of my career as a software developer, I've probably learned, Oh, I don't know, maybe like 10 programming languages and I've taught courses on Pluralsight. I've got a bunch of Pluralsight courses. If you don't believe me, whatever. Anyway, I've taught courses on Java, on Android Development, on iOS and .net Development using C#, Dart Language and Go. Go is one of my more popular courses, but just a ton of different languages.
I've pretty much done almost all programming language, all mainstream programming languages and if you gave me a new programming language tomorrow, I could pretty much program in it. It's not because I'm a fucking genius, I'm not a fucking genius. The reason why is because most of the constructs of most programming languages are similar because that logic, that high level logic is similar.
Now, why do I tell you this? Because I don't want you to get so hung up and caught up on the idea of, I need to learn this programming language or this is the best program language. At the same time, what I don't want you to do is think you need to learn five different programming languages. I coach a lot of beginners. I talk about this a lot. I've got a book called the complete software developer career guide. By the way if you are a beginner, you're probably going to want to check this out? Not really trying to push the book, I'm just saying this is a pretty thick book that tells you how to get a job and become a software developer and even for experienced developers, how to move ahead in your career.
I talk about languages in there and I talk about a lot of what I'm going to tell you here. But here's the thing, a lot of people that a coach, what they're trying to do is; one of the big stumbling blocks that they get caught up on is they spend a lot of time trying to figure out what language to learn so they're never going anywhere and kind of bouncing around. Then another big stumbling block that they run into is that they try to learn like three or four different languages at the same time and they're switching between all these technologies and languages.
The problem with that is that you don't go deep enough, and so you don't get a real understanding. It'd be better for you to just pick one programming language, go really deep with it, become skilled, become good at algorithms, become good at … The most important skill for a software developer, which is to take, at least technical skill, which is to be able to take a problem, a big problem, to break it down into smaller problems in its component parts and to keep breaking it down until it translates directly into lines of code.
When you can do that, when you can do that as a software developer, you can do anything. You can write any code, you can write any program, you can be completely competent. All someone has to show you is what the problem is and you have to have the researching skills of course to figure out how to bridge that gap. But once you know that, you can break it down, you can use your programming language to write the code to basically break down the problems to smaller and smaller.
That's a skill that you're going to develop, but you're only going to develop that skill if you're going deep with the programming language, which is going to require you to be focused and concentrated and do deliberate practice, another important keyword here in that programming language. Basically, it depends on your goals. I would not, and I've done videos like this on my other channel, but I would not learn a complex language if you're a beginner like C++.
C++ is a great language. It's still in use today. A lot of people get upset when I talked about C++. I used to love C++. I read all the books. I'm a big Scott Meyers fan, Effective C++ Effective STL. Believe me, I've been there, I've done that. Boost Libraries. Come on, let's go back to MFC days. Yes, I'm there with you guys, I've done it. But here's the thing, C++ is difficult. It's going to be discouraging. You don't need to know all this stuff in order to be proficient today.
What I usually advise people is to learn some language that you're going to use in mobile development so you can make your own apps, so you can put your apps in the APP store. You can do some kind of entrepreneurial thing and you can build up a portfolio which is one of the most important things. You can do web apps as well, but there's a lot more to the stack to learn. That's why something like if you learn some Java and you can do android development or you learn something like Swift and new iOS development or heck, C# is probably my favorite language of all time. I spent the most time working on that language.
You can do android and iOS development, and web development and everything in C#, so C# is a really a good one. Java similarly is also really good. Another good one is Python today. Python is popular, but it depends on the objective. If your objective is to get a job and to make a lot of money, then the market tells you what programming language you want to learn and also your demographic area.
I mean, you got to use your brain, your common sense here. If you want to make a lot of money but you're geographically isolated into a small city … When I lived in Boise, Idaho, the big employer there for technology was mostly there was Micron and there HP, but HP was pretty much the biggest one. So, I had to learn … If I wanted to get the job there and I wanted to stay in Boise, Idaho, yes there were some options I had, but I had to learn the technologies that HP was using at the time.
At that time it was mostly firmware, so it's mostly C and a bastardized version of C++, that's what it was. Now, I learned some .net and Java development there, but primarily that was my bread and butter, embedded systems, C and C++. So, you got to think about this. That's where the jobs that paid the most money. If you really want to maximize your chances, that's what you're going to do. You're going to do the research in the area.
Now, if you're willing to relocate and you're willing to go to high, if you want to make as much money as possible, you want to get a job in San Francisco and San Jose, in New York City doing financial trading type of software, being a quant or something like that. Again, big money opportunities, now you're talking about, okay, what languages are they using there? It's different, different technologies. You want to get a job at Apple, you'd probably need to learn Swift and C++ is going to be helpful as well, especially if you want to work on the underlying programs that they create to actually create or work on the Swift language itself.
I don't know, maybe they use Objective-C or Swift to do that now, but they Bootstrap that I guarantee you with C++. I would bet on that. Someone can correct me if I'm wrong. I just want you to understand the thinking behind this. I want to equip you … Again, part of the things that we do at simple Programmer and that I want to do for you is not equip you with the technical skills, the blanket answer. I want to give you the thinking skills to be able to figure this shit out on your own because that's what's going to be critical in your career and your life. That's why I'm going through this process by the way.
If you want to get a job in one of those cities, than see what technologies. Now with that said, like I said, I'm going to reiterate this point and I'm going to just seal the deal with this then I'll tell you some languages in a second I would recommend today just based on the market. Just because I know that some of you guys, that's all you want to hear, but I'm making you wait till the end so ha-ha.
If you learn a programming language and you're proficient and you're good at it, let's say that you pick C# and you're good at it, you can write algorithms, you can write web apps and you can do whatever you need to do, basically that skill of taking the big problem, breaking it down into a pseudo code and breaking it down into code eventually, then it doesn't really matter because if you want to learn another programming language, you'll be able to do it. And, if you apply for the right jobs, they're going to say, “Hey, write this pseudo code on the whiteboard.”
You're going to need that skill set. I promise you that. That's a different video. Subscribe to the channel by the way, because I will do a video on whiteboard interviewing, coding interviews and all that stuff. We also have some resources on simpleprogrammer.com that can help you specifically with that. But here's the thing, basically if you apply for a good job, they're not going to care so much what programming language, even though they say it, because they know that you can pick that up if you're a good programmer.
There are a lot of times I've been at job interviews where they've said, whatever programming language you feel most comfortable in, right this program, or do this thing because they know that and a lot of high level developers know that. That's kind of an indication also whether you're in a place where the job might not be so good is if they don't have that awareness. Hopefully I've convinced you to understand that it doesn't really matter that much. The only really considerations is going to be the market, that's going to be your primary … If you're looking to make money and you're looking to get a job as soon as possible, which you got to look at the market.
Now, with that said let's look at the market. One of the most popular things, and I can tell you because I run one of the biggest programming blogs on the internet, at least that's not a big corporate one at Simple Programmer, so I get the traffic, I can see what posts do well and I can see what people are searching for and whatnot. I can tell you Python is highly desired right now. Python is a great language, I love it. I love how beautiful it is. It's an aesthetic language, I'm an aesthetic person. I love aestheticism. Some people call that vein, but …
Anyway, Python is good. Python is definitely very popular right now, at least at the time that I'm recording this video. So, that's one that you really might strongly consider. People are looking for that. There's a lot of opportunities in Python because it's being used a lot in machine learning. It's being used in artificial intelligence and this whole image recognition and all this kind of stuff. There's a lot of libraries on that. In fact, my good buddy that runsa site called PyImageSearch, you might want to check that out as well.
Number two, I've already talked about this one and I'm still betting on this one, which is C#. The reason why C# I like so much is because it is so cross platform, it's backed by Microsoft and it is really good language. It's a really good language to learn. It's become a little bit more bloated, but it's elegant. It's very elegant if you understand how to use lambda expressions and you understand all of those intricacies of language, you can write some very, very elegant code and you can pretty much do anything. You can write for any platform, you can use the Xamarin framework that Microsoft now owns.
In fact, I taught my first courses on Pluralsight on Xamarin. It was called Monotouch for Android and Monodroid or Mono … I can't remember the name. But anyway, C# is still good. The other thing about C# is because it's Microsoft, there's going to be always big enterprise companies that are going to be using that as their primary development stack, the Microsoft technologies and the Microsoft language.
Other ones that I would recommend. Java is always going to be a big enterprise one as well. And again, you've got the C++ out there, but I would honestly, if I were starting out today, I would probably be doing Python. That's probably what I would be doing. Either that or C#. Those would probably be my top two choices. And again, different people are going to have different opinions, but that's my opinion. And again, like I said, it doesn't matter. If you want to learn Elixir, go ahead, learn Elixir. You're going to find plenty of opportunities, plenty of jobs and you're going to be able to translate those skills over as well. If you want to learn Go, that's going to be fine as well. I love Go, it's a great language. There's a lot of good languages out there.
Okay, that's all I got for you guys today. I hope that you found this educational and informative. If you did, click that subscribe button. Go check out Simple Programmer. We've got a lot of stuff for you. Also, we've got a nice membership area where if you want people to answer your questions, you need some help and stuff, you can check that out. Again, go to simpleprogrammer.com and you'll find that. Make sure you click subscribe and give a thumbs up or a like if you liked this video. I will talk to you next time, take care.