Correct Backend Learning Path
You just have started a development career or you may have years of experience in backend development but still struggling to answer if have enough skills under your belt to outshine in the backend world?
1. Language
It's your first primary weapon and you should choose it very carefully, some languages are easy and have a fast development cycle but the industry pays you less. Some languages with mid-level difficulty might be highly paid. The main thing is to choose the one you like and that pays more.
PHP is really easy and its development cycle is so fast. you make the change and refresh the browser. Boom you see your changes.
PHP is first-love, fast and easy to learn
Java is considered an enterprise language, its JVM based used mostly in enterprise solutions with heavy transactions, like banking, booking, and other mission-critical applications. If you choose Java then knowing the language is not enough, its a whole ecosystem that you have to learn and that's what will be expected from you. Just go through the tools and technologies mentioned in the cover photo.
JavaScript is booming these days, nowadays highly paid, high demand in Europe there are 2 different paths one is JavaScript and TypeScript. It's the best language for the client-side but on the service side in my personal experience is less mature. Its ecosystem is less mature, specifically TypeScript, which can be used as a replacement for PHP-Small-Application. ORM is poorly written, with a lot of bugs, NextJS framework is a beginner-level framework. If you have millions of users with complex application logic and relatively bigger applications, you will notice how many things are just missing or require a "workaround" to functions.
Must learn 3 lanaguges from different backgrounds and build same production-grade application. you will know which one to choose for what type of application.
2. Dependency Management
We want to transfer our code faster, especially working as a team, want to separate dependencies (800 MB) from our source code (1.5 MB), want to update the version of the dependencies with minimum effort.
Dependencies are freely available and can be automatically downloaded and plugged into the project quickly on the first code build.
You do not need to download it again if it has already been downloaded by the same project or another that depends on the same version. Its kept in the local repository.
3. Git
It's caring like your wife keeps track of everything for you ??
Versioning your source code, maintaining history, keeping track of evolution. Go through the following image start from the bottom and go up. you will see how the code was evolved and we can also check what changes were committed in each history point.
for the above source code check out "Microservices Example with Blog application"
4. Language-specific best practices
At this point, you have to master all the skills of your primary weapon: That is your choice of programming language. You must know in and out of that language, including its bugs and drawbacks.
Let's say your choice is Java Programming Language, then you must acquire expertise in following
2. Design Patterns
Start with the SOLID design principle, if you are not an expert in that, you should not claim you want to become the best engineer.
Architectural Patterns
Anti Patterns
We have a fix cost and hard-deadline project, lets do it agile way - The blunder of the worlds
This requires a separate detailed article and is very important for you to learn, what not to do.
3. Testing
You must implement the following types of testing in your projects. I can understand the cry for the shortage of time, at least do it for critical business cases. Once you are hands-on I am sure you will do it for the test of the use-cases :D
For detailed video series on "Delivering Quality"
Master-level testing include
4. RDBMS
Relational database with good and bad normalization
5. Framework
Spring Framework for Java, Zend, or similar framework for PHP and Express or NextJs for NodeJs (Javascript)
领英推荐
Spring is so powerful there is no match for it to this date (18.03.2022)
6. REST API
How to write REST APIs correctly, a proper understanding of each and every HTTP method and their usage, Naming convention of the URLs. APIs maturity level and why European companies reject in HR interview if you use "/pet" instead of "/pets"
7. NoSQL
Why NoSQL? what RDBMS is lacking that we have to loo for NoSQL solutions? Why RDBMS cannot provide schemaless support?
Whats special about VVV? Velocity, Variety and Volume?
8 . Cache
9. InMemory Database
10. Security
11. CI/CD Pipeline
12. Docker
Containerize your application to manage the concerns of different environments. Isolate compile environment across the operating systems and different versions. Provide the same environment to your application no matter where it runs.
13. Kubernetes
Orchestrate your containers for complex applications, just imagine you have 5 microservices and each microservice might scale 2 to 3 instances at any given time, a load balancer would be required to distribute traffic among containers of the same service.
Checkout a detailed example of Kubernete here. Go through readme file to understand the concepts
14. Queues/Topics
15. Event Sourcing
16. Elastic Stack
17. GraphQL
18. Elastic Search
19. Monitoring?
20. Architecture & Design (DDD)
As an engineer, you need to learn what architecture is and how it's different from the design, and why it's important before starting the development.
You should learn about Domain-Driven Design.
21. Kafka & Spark
22. Cloud Computing
Stay tuned
AWS Certified, specialises in System Design & Architect | Instrumental in building efficient & profitable engineering function
2 年Mazhar Hassan you are great teacher and an excellent mentor. Keep writing all this great stuff to help and build passionate engineers.