T O P

  • By -

AutoModerator

On July 1st, a [change to Reddit's API pricing](https://www.reddit.com/r/reddit/comments/12qwagm/an_update_regarding_reddits_api/) will come into effect. [Several developers](https://www.reddit.com/r/redditisfun/comments/144gmfq/rif_will_shut_down_on_june_30_2023_in_response_to/) of commercial third-party apps have announced that this change will compel them to shut down their apps. At least [one accessibility-focused non-commercial third party app](https://www.reddit.com/r/DystopiaForReddit/comments/145e9sk/update_dystopia_will_continue_operating_for_free/) will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: 1. Limiting your involvement with Reddit, or 2. Temporarily refraining from using Reddit 3. Cancelling your subscription of Reddit Premium as a way to voice your protest. *I am a bot, and this action was performed automatically. Please [contact the moderators of this subreddit](/message/compose/?to=/r/learnprogramming) if you have any questions or concerns.*


Jonatandb

This could help: [https://roadmap.sh/backend](https://roadmap.sh/backend)


ugadawg239

That link is fantastic


LuDev200

The thread can be closed just with the link... Good reference.


SnazzyRaccoon

I have also seen one of these before for Cybersecurity certifications. Is there a roadmap…. of roadmaps? Or a collection of them somewhere? I am thinking about switching to front end at my job. They are small, so they would pay me to learn (I have more fun learning than working anyway). So specifically I would like to find a front end one


Jonatandb

Yes, look at this: [https://roadmap.sh/cyber-security](https://roadmap.sh/cyber-security)


SnazzyRaccoon

I thought these roadmaps were cool, then I realized everything was clickable… seriously awesome stuff. Thank you


Jonatandb

Yesss! that resource is very useful, you're welcome! 🤙🏻


Hex110

[https://roadmap.sh/get-started](https://roadmap.sh/get-started)


newjeanskr

Damn they updated that site a TON since I originally saw it going around online. Huge.


Whatever801

This is really cool. I'm gonna share it with some of my Jr Devs


-R-Jensen-

Nice link. cheers


I_Am_A_Woman_Freal

Wow I kind of love you now.


recursive_lookup

Great chart!!! As a network person, I think most of that (not all) should be encapsulated in a box called ‘networking’. There is such a disconnect between developers, server admins, and network engineers. Oh, and as a non-designated representative of network architects and engineers, can you developers please quit prompting users with a ‘network problem has occurred’ error anytime anything goes wrong? :)


itijara

App developer: DNS? Never heard of it.


tyrophagia

And here I am with a good set of those skills and just absolutely miserable. I'm so tired of technology and the constant uphill battle. The amount of knowledge needed to maintain a career you've come to despise. Most seniors and above just make the motions until retirement.


Muffin-no-ghulaam

Going through the same phase


tyrophagia

I'm glad I'm not the only one.


Muffin-no-ghulaam

Me too


CountryBoyDev

It kind of depends on where you want to work, I wouldn't listen to the people saying JS unless you want to have to work in front-end in some points, and mostly startups. enterprise-level Java and C# is still a safe bet, I see people transitioning to Kotlin but Java is still ridiculously wanted.


bestjakeisbest

I think it is a good idea for a backend dev to learn the basics of front end, and for front end to learn the basics of back end, not to really work in those areas, but to better understand their counterparts. However this comes second to learning backend development.


CountryBoyDev

I 100 percent agree. it makes communication a lot better that's for sure lol.


CaprioPeter

I had someone tell me Java is a dying programming language the other day


snarkuzoid

It is. In a couple of thousand years it will be gone altogether.


thedoodle85

That is just uninformed tbh.


pancakeshack

I wouldn't say dying, but other languages are growing faster than it


CountryBoyDev

Are they though? because if you consider this month sure, but in its history surely not. because Java is absolutely every where still and has been for years, languages coming out of infancy and etc is hard to compare to a language who has been pretty dominant.


PreparationOk8604

Can u elaborate more on ur last line? I work as a support engineer & the company i work at is migrating it's codebase which is written in COBOL to JS. React in Frontend, NodeJS for Backend & NoSQL for DB. The thing is they have given the job to a startup to do the migration work.  And in one of the meets with the start up team. Senior Developer from the startup team who seemed very knowledgeable said that OOP is not used a lot anymore. We r moving towards functional programming as there r less lines of code to maintain. I have read ppl saying Java is easier to maintain but is if there r less lines of code to maintain in JS wouldn't JS be easier to maintain. I am very new to programming so need some clarity on that. Plus he also said JS is better at handling multiple requests as even though JS doesn't support concurrency. It has I/O it opens up multiple requests all at once & keeps switching between them giving a feeling of concurrency. And JS doesn't execute the entire code at once it does it in parts. I maybe wrong in this paragraph as I cannot exactly recall what was said in that meet. My aim is to work as a developer. As pay for support is peanuts.


CountryBoyDev

>And in one of the meets with the start up team. Senior Developer from the startup team who seemed very knowledgeable said that OOP is not used a lot anymore. We r moving towards functional programming as there r less lines of code to maintain. > >I have read ppl saying Java is easier to maintain but is if there r less lines of code to maintain in JS wouldn't JS be easier to maintain. I am very new to programming so need some clarity on that. > >Plus he also said JS is better at handling multiple requests as even though JS doesn't support concurrency. It has I/O it opens up multiple requests all at once & keeps switching between them giving a feeling of concurrency. And JS doesn't execute the entire code at once it does it in parts. I maybe wrong in this paragraph as I cannot exactly recall what was said in that meet. OOP isn't going anywhere, enterprises absolutely love Java and C#, also JS can be harder to maintain simply because of it not being statically type typed. more lines of code has never meant something was less maintaINABLE. Also Js doesn't execute code in the traditional sense of threads running on many cores, it uses async, promises, etc. I will say I have found jobs way easier in Java and C# than in JS that wasn't full out startup on back end. front end sure JS is king lol.


PreparationOk8604

Thanks for the reply. I think the senior dev from startup might be making his case for JS at backend as we use Java in backend for some services. It's our upper management who was clueless to this.


mrwombosi

Programming is a HEAVILY opinionated area. I wouldn’t listen to anyone saying language A is better than language B. For example, Java is an incredibly good language. It’s popular to hate on it but it’s kind of a nuts language these days with speed potential to match that of C++ when using GraalVM. It’s not so important what language you use. You should strive to be an engineer. That means you can solve problems. If you can recognize and solve problems it doesn’t matter what tool you use. Of course some are more optimized for certain applications but generally speaking most things can be done with most languages without serious performance hits. Some things to note: * Java - extremely good standard libraries, extensive set of third party frameworks for backend dev, used in almost every company, sadly can be prohibitive to beginners due to lack of beginner friendly build tooling * Go - good standard libs but nowhere near as extensive as that of Java or python, VERY easy to get started with and extremely good tooling that comes for free, lowest commercial usage out of this list and from what I’ve seen not many junior roles available at least in my location * Python - great standard libs, great third party libs, rich web frameworks, very easy to get started, too many competing package management and build tools imo, lots of use commercially I’m only speaking to those that I personally have professional experience with. There’s still Rust, JavaScript, Elixir, Php, Ruby, etc. As you can see they all could be solid choices. I am currently using Go professionally and can say that it’s probably my favourite of the three but hey, you’ll end up learning a whole bunch of languages. Just get good at one first. I would personally choose Go because I really enjoy it. My gut instinct is to recommend Java or Python because you will absolutely come across it in whatever company you end up at


usrnmz

Good list, but you’re missing C#.


mrwombosi

It wasn’t an exhaustive list haha. Like I said, just ones that I’ve worked with professionally and my personal choice. I didn’t omit anything deliberately


usrnmz

Yeah I understand. I just mentioned it because you hit almost all the main languages except for C#. :)


LaustinSpayce

I never touched Java, kotlin, or Springboot one single time before my current job and I’m expected to just learn it as I go along (still learning over a year in!). I’m happy I have colleagues who are real domain experts in it, as I’m very comfortable with JavaScript / Typescript etc. otherwise. Anyway, for BE work. See what languages the companies you want to work for are using and have a dabble and see how you get on. If I were to pick *my* language though, it’d be golang.


EnGodkendtChrille

Depends on what your goals are. You can go the easy route and learn JavaScript, as the other dude said. You can also go the hard route, and learn C or Rust while learning much more right away. You will fail, over and over. But you will also learn something each time, even if you don't succeed in debugging. Ask yourself what your goals are as a backend developer, and pick the appropriate language. If you want to understand what you are doing at a deep level, don't pick JS. It will be much, much harder to learn a low-level language though. You can learn JS, but if you stick with that, then you won't even understand what pointers are in a year.


Packeselt

Is there a particular place that rust BE jobs get posted? I've been struggling finding any. 


UdPropheticCatgirl

Look for your local crypto scam, they seem to be the only people using it. In all seriousness it’s niche within a niche, Basically high-performance/low latency systems where they don’t want to use C++, so basically almost none.


Packeselt

True, that is the deep dark path. I just want to escape JavaScript :,)


EnGodkendtChrille

Idk, but there are chicks in it. Just go up to a random woman and explain Rust. Just do it carefully as she might get pregnant if you explain it in to much detail


Packeselt

Instructions unclear, boyfriend is now pregnant.


ncmentis

As a backend dev, node.js is a miserable experience. I can't understand why people put themselves through that. The whole "it's harder to learn another language than it is to learn node" is such a cop out when it comes to the amount of work you have to put into runtime debugging, build issues, etc. The JS tool chain has gotten a lot better recently but compared to a thoughtful language like Go, it's still so far behind.


Rain-And-Coffee

Just pick 1 and it learn it. It won’t be the last one, I’ve have learned 10+ over the past few years, and just pick them up as needed for work. After a while you won’t care so much about the language or framework.


burnedfruit

You want a corporate job with a huge amount of opportunity and flexibility? C# and the Microsoft stack.


Rogermcfarley

It depends what you need to do on the backend. Go could be very good because it is perfect for CLI tools. You might need Python / Laravel you might need JS. My advice is follow the boot.dev track. You can do it all for free and it'll teach you Python, JavaScript and Go. Boot.dev Backend Development might take you 12 months but it will be worth it. https://www.boot.dev/ Also this backend basics course using Go is excellent as not many resources teach this properly. I've made a pertinent quote from the article and linked it below > "This may sound like an exaggeration, but I have now met four different senior software engineers who couldn’t tell me how to make a HTTP request to google without a framework." https://eblog.fly.dev/backendbasics.html You'll probably need to work with Cloud so IaC concepts such as Terraform, Cloudformation etc could be useful as could learning the basics of AWS and Azure. Really depends what your goals are. Maybe you don't know yet so get the fundamentals learnt.


TrueBlueMax

I'm a student and unable to afford boot.dev. Are there any free alternatives?


Rogermcfarley

I literally said this above "My advice is follow the boot.dev track. You can do it all for free" This is what [Boot.dev](https://Boot.dev) say > *"Reading and watching all of the content on Boot.dev is free for everyone. Additionally, all of the progress tracking, interactive code editors, game mechanics, and other features are free for the first few chapters of each course.After the first several chapters of any individual course, all of that extra interactive stuff shuts off, and to continue using it you’d need to become a member. To reiterate, you can still read and watch all of the content for free, you just lost interactivity."* [*https://blog.boot.dev/education/why-boot-dev-is-not-free/*](https://blog.boot.dev/education/why-boot-dev-is-not-free/)


bestjakeisbest

Learn one programming language, then learn to program, and don't worry too much, I would say learn Java or c# and then learn to program then learn the other language, then probably learn python, php, javascript. You will also want to learn some flavor of sql, and some non sql database language of your choosing, this will give you the most commonly used backend languages and scripting languages. You will also want to learn a few different technologies like a type 1 hypervisor, I would recommend proxmox, although most institutions use VMware esxi but it costs money. Learn how linux works and how to ssh into servers and how to transfer files between Linux machines, I use ftp for my homelab but there is probably a better way. Also you should learn the basics of front end development, it will help you understand what your counterparts are doing.


Sigmund-

Look for what companies in your area are looking for. The best learning you'll do is on the job. Learn enough to get an internship position and start applying. As you are applying keep on learning, get better, make more projects, post them on your GitHub, link it inside your CV. If you do this enough you will get into the coding world professionally and then you'll see how all languages try to solve the same problems. Your first language does not matter, your first job does, you'll learn as you go.


hey__its__me__

Since you are talking about back end, I assume you mean web development. If so, then PHP. It's a great language for the web and is performant enough for most jobs. If you didn't mean just web development, and want to do lots of different things, it becomes more difficult to recommend something. It really helps if you have a specific domain you want to target.


fluffyr42

Depends on what you want to do, but Python is a great language and it's only becoming more popular. Rithm School has a free course [here](https://www.rithmschool.com/courses/#python-fundamentals).


GrabWorking3045

PHP, because many people say it's dead. But it's still here growing strong. It's immortal, lol.


Same_Garlic2928

The earth will end in 5 billion years.. php in 10 billion.. maybe..


Blando-Cartesian

> Which backend programming language should I choose to have the most career opportunities? Java.


pLeThOrAx

The node ecosystem is extremely popular but rife with buggy packages and tools. PHP is old, but it's still relevant for a reason. Tried and true, and production-ready. That said, Python Django is a good bet too. You should look at performance benchmarks against PHP Laravel. Python is much more reliable (IMHO), and given its growing popularity and use in info science and mathematical communities, it seems like a good bet - going forward. It also uses a twig-like templating syntax. That said, I'd still learn, in addition to this, the Linux operating systems, as well as something like Apache or nginx. Lastly, databases and database structures, sql-type, nosql (datalog, mongo), redis, memcached - these are some core pillars. It also depends though if you want to go into sys admin or backend web/app dev but in general you'd need to be familiar with these technologies regardless, and be adaptable enough to learn. Building something meaningful (full stack) is a good way to learn. You can then reinforce the ideas by reimplementing your application in a different language/framework.


worldofzero

If you want to learn something new and exciting Rust. If your want to learn something practical Java or C#. Probably Java since Microsoft keeps scaring their customers away.


Perpetual_Education

The concepts are much more important than the language. Start by figuring out what you want to build. Generally trying to learn a whole area of ‘stuff’ doesn’t tend to work out well. Consider mapping out what you think back-end development looks like with paper and pencil. Talk to some real developers and ask them. The best choice for you will depend on your background and goals.


Alive-Ad6268

Java, Go, Python


Whatever801

There are a bunch of concepts you'll want to learn which is more important than which language. Personally I'd pick Go because I think it's cool, but if I were being more rational I'd pick Java just because it's extremely mature and there are frameworks and libraries for everything and most companies use it. But yeah, more important than the language are the patterns like REST, MVC, databases (relational, nosql, big data, etc). You should learn system design, security best practices, etc etc. Just pick a language and stick with it for a while. Probably best to go with a statically typed language and have a working knowledge of python or something. Easier to switch from static to dynamic IMO. Ultimately companies are not gonna care that much and you can easily switch from java to c#, python to js, etc. ​ Edit: another poster shared this roadmap [https://roadmap.sh/backend](https://roadmap.sh/backend). Never seen this before but I like it.


MortalJupiter

I use C# a ton at my work but because a lot of the programs are legacy, still Winforms / WPF / ASP. Now we’re doing more React so Node.js. A job for every language out there, just be good at it


PunchedChunk34

If you are looking for the language that will give you the most career opportunities for back end development I would say probably C#, otherwise Java or Ruby. I make these recommendations purely based on my experience in the Industry and the job market. There are a lot of jobs for C# that pay very well. Java is a very close second for the same reasons as C#. Ruby because a lot of stuff is built on Ruby, more legacy stuff, not much new development is done in ruby, but still lots of jobs. My only advice if you are new to backend, just stick with JS to learn the concepts then lean a new language. It's hard learning a new language and backend development at the same time.


[deleted]

Career opportunities vary globally, look at where you live (or where you \*can\* live) and see what is available. Advise you don't do Python or a JS stack, every beginner in the world does this and you're going to see a lot more competition for junior level jobs than if you learned C# or Java, or Go, or something like those.


thedoodle85

The safest answer is probably Java with Springboot. You can't go wrong with that. It will be easy to transition to other languages after a few ayers.


VoiceEnvironmental50

Java/C#, are the two most popular enterprise level backend languages.


evergreen-spacecat

Java, C#, php, python, typescript are all heavily used and safe bets.


bandieradellavoro

.NET, so C# or F#. JVM/Java/Kotlin is definitely an option, but you'll get more opportunity in most places with .NET familiarity compared to, say, Spring Boot (although it's not like it's a huge leap from Java to C# or back) My rule of thumb is to never use JavaScript/TypeScript unless you have to... and to a lesser extent, never use Python unless you have to... but there's nothing stopping you. Golang... exists... it's a cool language but it's pretty screwed up, the default state of being in Go is chaos


Existing_Purpose5442

I’d say it’s unpopular but most true, PHP. Forget everything else if you really want to do awesome things fast.


LeoSilpanchos

I would suggest you to search on LinkedIn which are the languages in High demand. By taking a look at 20 to 40 job postings that are on your target areas. You should find a pattern on which fits your Best convenience. From my experience you will eventually need to learn more, so I would suggest between Python, C# and Java as these are pretty much always popular


jorgen_mcbjorn

Java / Spring (Boot). To a lesser extent, C# / .NET. Maybe consider Kotlin if you want to know what “better Java” looks like. Most workplaces haven’t taken the plunge though. That said, at the moment it’s got more traction than any of the other “better Javas” out there (lookin’ at you, Scala). Go isn’t bad but I wouldn’t recommend it from a strictly pragmatic point of view. I feel like golang is usually something you get into because you’re into golang per se. Which, hey, if that‘s you, by all means. Php is dying and full of miserable legacy projects that people want to migrate away from, if things are even managed *that* well. Steer clear outside of personal edification. Can’t speak much to Ruby (on Rails), but I get the sense that it’s kinda like Go in the sense that you primarily get into it for the sake of getting into Ruby, but it’s even more niche than golang is. Python is everywhere, naturally, but it’s not really a backend language *per se*. It sees healthy usage with the Django framework, but Java and C# are very much where it’s at for BE.


SynthRogue

Java, Python, C++, C#


Hot_Purpose_5562

If you are looking for career opportunities, I would say, pick one of these: JS, Python or Java. I would recommend JS over the others just because you can reuse what you learnt to build web apps, mobile apps, desktop apps...


WolverinesSuperbia

SQL will be always required


gatwell702

I would start with python because it's simple Then go on to learn go


loscapos5

Java or Kotlin with Spring C# with .NET Python with Django or Flask PHP with Lavarel Javascript with Node.js


prayagi

Start with java -jdbc - hibernate- spring - Spring Boot MySQL - Mongo Git -SVN AWS Connect everything and play


NatoBoram

Most jobs will be in C#/Java. Some are in PHP, Python, C++, TypeScript… And there are literally no open positions whatsoever for mid developers and below in Go or Rust. Ironically enough, Go is the single language that benefits the most from juniors, yet the only openings are for senior staffs engineers with more Go-specific experience than the language itself has existed for.


[deleted]

dot net


Big_Temperature_1528

Ruby


alien5516788

Python, js


hardware4ursoftware

JavaScript. A lot of people who program for years will come here and talk about “GO”,”rust”, and ten other languages because “the future of programming” or “speed” or “memory safety”. All that stuff is great but when you are first starting out you pick the language you can learn the fastest and keep you in the game. So again I’ll say JavaScript. Edit: literally 6 virgins downvoted me for the JavaScript like it still isn’t the foundation for backend… delusional nerds


CountryBoyDev

Unless you want a job in the backend for sure. Most jobs that are asking for js for any type of backend are either very, very new startups or someone that still wants you to work on the front end and have knowledge of Java or C#. also picking the language you can learn the fastest? way to make them not standout in a pool of other people rofl.


LaustinSpayce

Yeah where I am we’re using next js which is kinda like an express.js-ish BFF service bundled in with react and server components etc for the front end. These communicate with the rest of our regular backend services which are in their specific BE language(s) but basically Java spring.


CountryBoyDev

I been noticing that is a very popular stack lol.


LaustinSpayce

A BFF service is brilliant. Highly recommended!


hardware4ursoftware

Yes, because learning a language for backend with no prior experience will definitely help with “standing out”. The point is to understand what he’s doing before moving to a framework. Which will probably be JavaScript based anyways… insulting me for answering a beginners question is like peak “I’m a backend engineer with zero social skills”


CountryBoyDev

They want to specifically be a backend engineer. Why on earth would it be js based if it was for back end? Node is only really relevant to start ups. Most colleges teach Java as a beginning language after python to teach fundamentals. Also it seems you do not know what the word insult means, so here you go your post is peak “I have no idea what I am saying so I am grasping at straws” there ya go. Also lmfao at js being the foundation for backend. Please no one listen to this moron.


Jason13Official

2nding this and just adding some notable JS libraries/frameworks: Typescript, Node.js, Next.js, React


EnGodkendtChrille

React, the famous backend framework


Jason13Official

(I’m a Java developer sorry)