As a front end guy (I started as a graphic designer, learned HTML, then JavaScript, then Flash/ActionScript, back to jQuery, Backbone, Angular 1) who moved to backend, my advice is - pick anything that you feel comfortable with.<p>You have several planes of "moving to backend" and I will try to go over them categorically<p>1. Language: not a critical choice, but since you come from a JS background, I would stay with JS. I'd start by deciding to focus on NodeJS and that ecosystem. I wouldn't switch to Go/Python unless you have an urge to learn a new language. Moving to backend dev has many aspects to it. New language is not the most important one.
Few aspects of languages do matter though, you have "lightweight threads" in Go (channels), but not in Java (unless you use Quasar). Node is not exactly multithreaded in the literal sense of it. Each language has it's own abstraction around async computing, Scala/Akka futures and promises slightly different than Java's futures and promises, which are highly different than JavaScripts Promises.<p>2. Paradigm.
learn both best and bad practices, patterns and antipatterns. Good to know some GoF design patterns, but also learning about functional programming, immutable design, reactive framework (RxJS for example). You will find out some of the front end philosophy is there in the backend too. Good design, OOP or Functional, has similar principles (single responsibility, loose coupling)<p>3. Databases
If you want to do backend, you'll most likely need to have an understanding of how databases work. From basic RDBMS principles, transaction isolation, ACID principles, to NoSQL, CAP theorem, Big Data etc. Learning SQL, Hive dialects etc is in my opinion an integral part of backend programming.<p>4. Security - you must understand a lot of aspects in security, from why not use MD5 to hash passwords, what is a salt, a pepper. what is Kerberos, client SSL, and why we should stop saying SSL when we mean TLS. Why you should never use DES, why you should rather not store passwords in Java as Strings but rather as char array. How to sanitize user input, and do server side validation, preventing XSS / SQLI. What is CSRF and how to handle it on the server side. What is cookie based authentication, vs JWT. SAML, OpenID, Oauth principles. etc etc. Security must be baked into the process from start to end.<p>4. CS - as others have mentioned. Basic data structures and algorithms is a must.<p>5. Some basic OS stuff. you should know what is a page fault, virtual memory, and how OSs work in general. Caching and distributed caching, caching invalidation etc. Unless you do graphics on chips or something, then eliminating branching using bit twiddling is something I would skip... also cache alignment, unless you really are doing some really realtime stuff.<p>6. Learn architecture, especially, microservices, serverless, SOA, monolithic, 3 tier, what is a 12 factor app, what is distributed computing etc.<p>7. Learn devops and infrastructure, whether its on prem, AWS, GCP, or Azure, learn concepts such as infrastructure as code, CI/CD, configuration management, Puppet/Chef/Ansible. Docker and containers, Kubernetes, Mesos. This includes learning command line.<p>8. Learn basic networking. Don't lower than level 3 if not needed, but know how the network works