3 ms·
First start by defining "backend". It means something different depending on the size of the project. Many systems now are three tier meaning front-end, middle-
by throwaway2016a 10y ago
First start by defining "backend". It means something different depending on the size of the project. Many systems now are three tier meaning front-end, middle-tier, and backend.
What you probably want to focus on is the middle tier. In those three tier systems the backend is actually very low level (data processing, storage, replication, message brokering, etc) and is often handled by third-party products such as database engines.
Some (many) projects combine backend-and middle tier as if they are the same thing. And in some systems the middle-tier is very thin and just slightly abstracts the backend.
So definitions aside... if you want to transition to middle tier...
- Learn API development. Especially focus on REST and possibly GraphQL. Learn the difference between a 422 and a 401 error, GET/POST/PATCH/PUT etc, etc.
If you want to really get into backend...
- Learn hardware limitations
- Learn Linux very well
- Learn about job queues, Message busses, and interprocess communication
- Learn about service discovery and the differences between eventually consistent and strongly consistent
- Learn about containerization
- Learn about system operations
- Learn algorithms. Including graph algorithms and how to determine algorithmic complexity
Useful for both...
- Learn SQL
- Learn a few NoSQL systems... MongoDB, Elastic Search, Redis
- Learn about security
Don't worry about specific languages. The concepts carry over to any language. If you have to pick, Node.js, GoLang, Ruby, and Python are all acceptable choices for middle-tier.
- CodeSheikh 10y agoAnd don't solely rely on node.js as a backend. It can be a gateway to backend dev but not the best option out there.
- bloomca 10y agoThank you for advice! Actually, I know that language is not that important, but as I said, without prior experience, I am afraid that if I will market myself as just a "backend/software developer", companies will be afraid, and with a single language it seems easier. So, the best way just to pick a topic and go deeper, there are no resources that cover them together?
- samblr 10y agoBackend is full of rabbit holes. So build something simple (blogger) which touches on primary concepts : api-router, auth, access control, storage, db, cache, cloud, tests, continuous integration & deployment. Even for a small app - one will have to make lot of choices from existing components/frameworks/packages. So begin in a language you are comfortable or you like to get a hang of concepts.
- throwaway2016a 10y agoPersonally I would pick API development and go from there. Decide you want to build a REST API, design it properly (it is easy to make a not-really-REST API), write unit tests, and build it.
- tedmiston 10y agoI think this answer kind of puts the cart before the horse. I've been doing backend dev for many years and my perspective is that it's better to dive in and learn things as you go along. Yes, all of these pieces listed above are important, BUT if you focus on learning each one well, it'll be a long time before you actually ship backend code. You don't need to understand things like containers, deployment, queues, distributed systems, etc to just start. I'm going to take an opposite approach and say that the best way to get started in backend is from the top of the stack. Build a simple web app or API, for example a journal or bookmarking service. Language and framework choice don't really matter at this point. Fundamentals are not radically different across them aside from the biggest difference being asynchronous vs synchronous paradigms. Start simple.
- throwaway2016a 10y agoJust to clarify, I was not suggesting someone needs to learn all of this before they get started. Although having a meaningful product with either knowing most of this or having a mentor who can help and/or potential write code as well is difficult and you will en dup with a lot of technical debt and or problems as the product grows.
- boomlinde 10y agoDefine "middle-tier". The difference between backend and frontend seem pretty clear to me in the case of web services. Some code is clearly executed in the client's browser, and the rest is not. You can perhaps use "middle-tier" to be more specific about which aspects of development you mean, but there's no use in fuzzing what is actally a very clear and helpful distinction.