Hello, so I’m just curious what it takes to be a great backend engineer.<p>What CS knowledge do you need to understand?<p>What are some backend engineer fundamentals?<p>And in terms of actual practice l, what technologies/ languages should someone know if they want to be a great backend engineer? Thanks
Complex subject wildly open to interpretation. Backend can mean many different things depending upon who you talk to, for example:<p>* web server and services<p>* database<p>* dev ops and infrastructure<p>* applications that run from an OS terminal/shell<p>---<p>I would start by learning two things well:<p>1. Transmission<p>2. Automation<p>Transmission covers TCP/UDP, HTTP, WebSockets, and so forth. Its communication over the wire. You need to understand how this works in order to understand how the web works and how data enters the browser.<p>Automation is the only purpose of software. The better you get at this, (speed of execution, test automation coverage, lower failure rates, better documentation), the better programmer you are. WARNING WARNING: not everybody that writes software for a living really cares about software that works faster with less failure rate. Most software developers care about familiarity and simply completing their assigned tasks, so becoming a better developer does not at all equate to career performance/mobility.
Not sure what you mean by "great." I suggest shooting for 1x effectiveness -- 10x comes with experience.<p>CS knowledge? Very little. It certainly helps to understand basic data structures and algorithms, algorithmic complexity and "big-O" costs, how compilers and interpreters work, etc. You probably don't <i>need</i> a comp sci degree or background but that knowledge will help because it gives you a set of categories and conceptual framework to understand programming.<p>Basic skills:<p>- relational databases and SQL<p>- HTTP protocol, the request/response model, what REST means and how APIs work<p>- enough about DNS, security, networking, cloud infrastructure to not get confused or misled<p>Typical back-end languages:<p>- Javascript with Node.js and any of the hundreds of frameworks (prepare for dependency and deployment problems)<p>- PHP (very often with the Laravel framework), commonly-used, easy to deploy<p>- Go + HTMX, one of the cool new things and fairly widely used<p>- Python + Django<p>- Ruby on Rails<p>- Java, C#, more in enterprise/large business environments but valuable to understand<p>- Elixir + Phoenix (niche but well-liked by people who use it)<p>- etc.<p>If your definition of "great" includes "can fairly easy stay employed for the next decade or two" stick with the mainstream languages and tools. You can always find work on legacy codebases written in whatever was the big thing a few years before -- PHP all by itself provides a bottomless pit of maintenance work.<p>If you only want to work with the latest cool tools on green-fields projects you will have both fewer opportunities and more competition.<p>You get "great" or "10x" when you can reliably add business value and solve problems that stump (or repel) most other programmers. That mainly comes from practice and experience, and a willingness to adapt and extend your skills.