Tech Talk: "Which programming language to learn?" mit Markus Lehr von Codecool

Tech Talk: "Which programming language to learn?" mit Markus Lehr von Codecool

Hello, my name is Markus Lehr and im a mentor at Codecool, an international coding academy who started their campus in Austria this year.

Everytime in my professional career, since I was working at the university or since I was working as a developer – especially now – and maybe it happened to you as well, since this is posted on a jobplatform for IT guys – I was asked a question on which programming language to learn. I personally wasn't really confronted with this question myself, because it was decided for me in university. But, you probably were confronted with this in some shape or form, yeah, in your personal career.

And this is not a new question. In fact, I found research from 1972, so probably the question is as old as the programming language themselves. And the topic of this research was: "Programming languages: history and future" and mister Sammet in his work wanted to find out what makes a good programming language, what makes people choose programming languages, why are some more popular than the others. And he found two interesting criterias; firstly that the language of course needs to be suitable for solving the problem you're wanting to solve, and on the other hand he found that factor of "snob appeal" he called it – so, that "hipster factor" of modern languages. And, so he also went into the psychological effects. And there is another interesting quote which hits very close to home, namely the items on the list on major programming languages are apparent to nearly everyone. But it's unlikely that any two people would agree on the exact list.

So, it is a difficult question to answer and there is no simple response to that. Also in newer literature – mainly YouTube videos and other stuff like that – people often compare some metrics they deem comparable, and deem relevant. Namely; well, if you want to do something in iOS, choose we Swift, if you want to learn something quickly, choose the one with the highest StackOverflow answers, for example. And they often neglect the question itself, of refining what the target audience is.

So im going to split it up and and make it a little more concrete in my case. Namely, to me there are three types of people usually:

Some friends have asked me, they want to try out coding in their free time, they want to do a little bit of gaming development here, maybe a little bit of web pages there, but they don't really want to pursue it seriously. And that's completely fine, that's a completely valid reason. But, these people are quite different from the second batch.

Namely the ones who want to become a developer, they see a chance in the jobmarket and want to seriously pursue filling that gab in the jobmarket and really want to dedicate a part of the life on doing this full-time. And that's a very serious and different question to "I want to do it on this side."

And then the third type I was confronted with most recently is colleagues and friends who are in IT, who already know what they are doing, they know the basics and they just want to toy around. They just want to find this little spark of joy of learning a new language, new features.

And that's also completely valid, but different from the second group namely the ones who seriously want to become developers, and I want to focus on those because that's obviously the target audience at the ends of Codecool.

So, before I get into answering this question, I would like to give you a little overview of the market: namely a very specific subset, namely back end as a service providers. This is a very niche market. There is front end, but this is completely different from this. But I chose this to illustrate that large companies like Amazon for example with AWS Lambda, chose Java, Go, Powershell, Node.js, C#, Python and Ruby as languages that they support.

Oh, sorry, I should clarify what back end as a service means for those who don't know it. Namely this means that a company buys the infrastructure, buys the hardware of the servers and they manage everything in the back end, and you just give them your code, and they tell you "well, if you want to run you code, it needs to be in one of these languages." As already illustrated, Amazon has this list. And also, I only took this list as it is from their homepage, so it's interesting to see their preference and their order of ranking the languages.

On contrast to Amazon on the one hand, there is Firebase, it's more focused towards front end developers who want quickly get something out on the market, and they don't really rely on configuring the infrastructure themselves. So Firebase only offers JavaScript, so no JS-like back ends and by extention TypeScript as well. And the more serious competitive to Amazon, Google Cloud, they offer Node.js, Python, Go, Java, .NET, which in essence is C#, Ruby and PHP. Interesting to see that Google Cloud ranks Node.js for some reason higher than Amazon, but they offer a similar set of languages.

And then – newly – maybe you know Cloudfare as DNS providers, but the end of last year they started their new initiative Cloudflare Workers, and they only offer it in JavaScript and WebAssembly, but they have extensive documentation on how to run other languages like Rust, C, Cobol – of all languages in WebAssembly? – Kotlin, Dart, Python, Scala, whatever Reason or OCaml is, Perl, PHP and F# in JavaScript. Okay, so what I want to tell you with this is these big players set their chips on the table for those languages.

So you are probably going to be fine, if you choose use any of those for back end this as a service. This doesn't mean that I'm recommending any of these by heart. No, I'm just telling you that there are many valid options that is no single true response to that.

And, maybe this is relevant because this talk is hosted by devjobs – a few of the languages that they host on their platform. Namely they have a lot of JavaScript jobs, more than 500, 500 Java jobs, nearly 400 C# jobs, a lot of python jobs, and nearly 200 PHP jobs.

And many of the newer youtube videos look at these rankings and say; well, obviously Java is better than C# and you should never use C# because it has fewer job options, but what I want to tell you with these rankings is: that's a lot of numbers. And, these aren't the languages that you should choose, but you should not not choose. So as long as it's in this kind of ranking, you are probably going to be fine and find your job. And even if your language is on rank six or rank seven, there are more than enough jobs for you to fill. Even if you are completely niche in the market – for example Fortran programmers, they are rarely sought after, but if they are, they are highly paid, and they are looking for specialists in Fortran for example. So, what I wanted to tell you is that the market is very diverse, and there is no single true answer and finding the right language isn't easy.

Okay, so what is my recommendation? If you are completely new, you probably don't know what you want to be, and you can not decide qualitatively on what kind of aspect you want to fill in the job market. Well, therefore I recommend starting as a full stack developer. If you don't know what full stack means, usually in business applications you have a front end – what the user sees – you have the networking stuff, and then you have the back end, the databases. This is the stuff that runs on the back end on the servers. And if you are a full stack developer, the features, the applications that you develop work all along this stack. So, if you are a full stack developer, not only do you make the pretty buttons for the user, but also you write the SQL commands in the back end. And, I recommend this not because full stack developers are the most sought after developers, but because if you look at everything in the stack, then you can make a qualitative decision on what you really want to be. You can see the backend and maybe you are interested and you only want to work as a back end developer, that's completely fine. You're by no means worth less than any full stack developer. And, on the contrary, if you like front end, by all means go to the front end development side, but I recommend trying it out at least.

Okay, so I recommend being a full stack developer. What does this mean?

In the front end, usually it's set in stone – usually it's some sort of HTML, some sort of CSS, some sort of JavaScript and even if you are using some kind of framework like Angular or React, you should learn the basics first and I recommend starting with HTML, CSS and JavaScript in the front end. That's the common consensus everywhere in the market, at least in my opinion.

Usually what's up for debate is the back end language. So, when people want to decide which developer do you want to be, it's usually not the front end aspects that you are deciding on but back end languages. Before I give my suggestion for a back end language, I would like to find a realistic scenario to base my response on to. For example what, a better noob to find, than my beloved mother. She is a very intelligent woman, but by no means is she technically inclined. And last summer she went on holiday and left me this note on the basement door. She wrote "Dear Markus, please look out for the pool." I'm sorry, it is in german because german is my mothertongue. So she says "Dear Markus, please look out for the pool. If there are weird noises, please have a look, and if the needle on the pressure gauge is in the yellow or red area, then do these 6 steps that you can see here." This is interesting – and then of course there is the return statement, thanks, kiss, mom. So, when we look at this from a technological aspect, when we turn on the syntax highlighting, we can see that the first part obviously is some sort of comment, then there is the if-statement "if the pressure gauge is in the red or yellow area column" and then 6 clear instructions, and then there is a return statement, so I know I'm done and the pump is working again.

And, what you can see – or cannot see here – is that distinct lack of curly brackets or semicolons. And this is my message to you; focus on what's important, namely the algorithms, variables, control flow, where the functions are, and all of that is independent specific syntax. So, I recommend a language with a lot of learning materials that you can pick from and a lot of human readable aspects like Python for example to get started with. In full stack development Python may be a controversial choice because not all enterprise applications use Python for example, but it is easy to learn and as I said, what's most important is that you can make a qualitative decision what you really want to become. I suggest starting out with python nevertheless.

So, what's my conclusion, what's my to do list for becoming a developer?

First of all, I recommend aiming for becoming a full stack developer for the reasons that I already explained. I recommend learning the important fundamentals in an easy to learn language, like Python for example. You can use any other languages if you feel more comfortable with it, if you're recommended – I don't know, JavaScript in the back end for some reason – please pursue it! But what's most important is it to learn the basics in any language. Then I recommend you learn some front end skills. Namely HTML, CSS, JavaScript. Even if you are then turning out to becoming a back end developer, it's good to know how they users will interact with your application. And so the insight will never hurt you and it's a very important skill to learn. And then I recommend integrating the first application on the full stack, meaning you do the front end development, you do little bit of networking, maybe with a Flask server in Python. Maybe that's the point where you want to try out Java or C# for example. But do one project with the full stack and then you can decide on what you want to do.

Okay, so this is my conclusion for the curious minds out there. But what is my conclusion to the viewers out there? Well, since this is hosted on an IT job platform, I probably cannot get you to buy our full stack course, and we will not be offering development jobs either. So, if you want to become mentor like me – we teach coding to newcomers and people interested as illustrated in this talk. If you want to become a mentor, reach out to us at codecool.at or codecool.com or if you sitting on the other side of the recruitment table, and you are in business and are looking for business partners which come from codecool and you're interested in hiring our students, please also get in touch with us at business.codecool.com or business.codecool.at

Thank you and have a nice day!

 

 

Erfahre mehr zum DevTeam von Codecool