Must-Have Skills for Backend Developers
I will try to share where is the best to learn the particular tech.
1. Programming Language
- Scripting: Python or Node.js.
- Functional Language: Choose the language that on-demand on your area. You can start in Clojure or Erlang.
- Other Language: Go - Go is an open-source programming language that makes it easy to build simple, reliable, and efficient software.
2. Practice what you learned
Exercise and make some command line or CRUD application with your picked language. Task: Simple website with login and CRUD pages with users and post table.
3. Learn Package Manager
4. Coding Standard and Best Practices
5. Make and Distribute Some Package/Library.
One step at a time, back up your package or library to your private repository. If you are confident enough to share your codes to the public, make documentation on how to use it and push it to Github.
6. Learn about Testing
There are several different testing types, but for now, learn about how to write Unit and Integration test in the language you picked. Understand different testing terminologies such as mocks, stubs, etc.
- PHP: PHPUnit - Learn some PHP unit testing here in Laracast.
- All: Make sure to read about the best practices for security. Read the OWASP guidelines and understand different security issues and how to avoid them in the language of your choice.
7. Write Test for the Practical Steps Above
Go ahead and write unit tests for the practical task that you implemented in the steps before.
8. Practical Time
Create a simple application using everything that you have learned this far. It should have registration, login, and CRUD. Create a blog for example, where anyone can register and get a public profile page to create, update, and delete posts, and the public page will show the posts created by them.
9. Learn a Framework
Depending upon the project and the language you picked, you might or might not need a framework. There are several different options.
- PHP - Laravel or Symfony, and Lumen or Slim for micro-frameworks.
- Node.js - Express.js, Nest.js(for building efficient, reliable and scalable server-side applications), Hapi.js
10. Learn Relational Databases
There are several options here. However, if you learn one, others should be fairly easy to pickup. Pick MySQL for now then learn how they are different and the usecases of MySQL, PostgreSQL, etc.
11. Learn a NoSQL Database
First understand what they are, how they are different from the relational database and why they are needed. There are several different options. Have a look at different options and see how they differ. If you have to pick one, pick MongoDB.
My suggestion is to learn MongoDB first, then make sure to look how it compares with other NoSQL.
ex: Cache slow datebase queries.
13. Creating RESTful API
Understand REST and learn how to make RESTful APIs and make sure to read the part about REST from the original paper of Roy Fielding.
14. Authentication/Authorization Methodologies
Learn about the differences and how to implement them.
- Oauth - Introduction to OAuth 2
- JSON Web Tokens (JWT) - Introduction to JSON Web Tokens
- Others: Basic Authentication, Token Authentication, OpenID, etc.
15. Message Brokers
16. Message Brokers
As the application grows, simple queries on your database aren’t going to cut it out and you will have to resort to a search engine. There are multiple options, each having it’s own differences.
17. Learn How to Use Docker
Docker Get Started. Docker is a must have skill that will help you and your development.
18. Knowledge of Web Servers
This two is a must learn web server technologies.
19. Learn how to use Web Sockets
Learn Socket.io here at Socket.io Get Started.
20. Learn GraphQL
While it is not required, feel free to have a look at it and see what it is all about and why they are calling it the new REST.
Look into Graph Database: Again not requred but you should have a little understanding of what they have to offer.
Bookmark this page so you can easily pick it up and read it again. :)