avatarDineshchandgr - A Top writer in Technology

Summary

The article outlines the essential skills and knowledge areas a backend developer must master to advance to a senior level and beyond, emphasizing the importance of staying current with rapidly evolving technologies.

Abstract

The article "How to Become a Senior Backend Developer and Beyond?" provides a comprehensive guide for backend developers aiming to elevate their career. It emphasizes the necessity of mastering not only coding but also a range of modern technologies and methodologies. The skills include proficiency in microservices frameworks like Spring Boot, cloud technologies such as AWS, Azure, or GCP, containerization with Docker and orchestration tools like Kubernetes, and reactive programming. It also highlights the importance of understanding messaging and streaming with tools like Apache Kafka, modern API protocols like gRPC and GraphQL, authentication and authorization frameworks like OAuth2 and OpenIDConnect, and learning additional programming languages such as Python or Golang. The article stresses the need for robust testing practices with tools like JUnit and Mockito, efficient code with SonarQube, and the use of advanced IDEs like Intellij. Additionally, it covers caching with Redis, No-SQL databases, API documentation with OpenAPI and Swagger, logging and monitoring tools, CICD pipelines, foundational knowledge of Linux and networking, and an understanding of Agile and Scrum methodologies. The author also suggests that developers should have a holistic view of system architecture, citing examples from companies like Netflix and Uber.

Opinions

  • The author believes that just being a good programmer is not enough to survive in the IT field; one must continuously learn and adapt to new technologies.
  • They assert that not learning cloud technology in 2022 is a mistake, indicating the critical importance of cloud computing skills.
  • The article conveys that reactive programming is gaining popularity due to its performance benefits and efficient resource utilization.
  • It suggests that developers should be familiar with both synchronous and asynchronous communication methods in microservices architecture.
  • The author opines that developers should explore alternative API protocols like GraphQL and gRPC, which can offer significant performance improvements over traditional REST APIs.
  • There is an emphasis on the importance of understanding and implementing robust security measures with OAuth2 and OpenIDConnect.
  • The author encourages learning additional programming languages to take advantage of the polyglot nature of microservices architecture.
  • They advocate for the use of Intellij IDE for its extensive plugin ecosystem, which can enhance developer productivity.
  • The article underscores the senior developer's role in understanding different caching strategies and No-SQL databases for scalable solutions.
  • It highlights the necessity for developers to be proficient in logging and monitoring to ensure system reliability and performance.
  • The author insists that even though CICD pipelines are a DevOps concern, developers should understand them to ensure smooth deployment processes.
  • They also stress the importance of foundational knowledge in Linux, DNS, and networking for troubleshooting and system management.
  • The article promotes the idea that understanding the overall system architecture is crucial for senior developers to effectively design and manage complex systems.
  • Lastly, the author encourages following Agile and Scrum methodologies to integrate seamlessly into development teams and contribute effectively to project management.

How to Become a Senior Backend Developer and Beyond?

Image Source: https://media.geeksforgeeks.org/wp-content/cdn-uploads/20200608213555/How-to-Become-a-Senior-Software-Developer.png

Hello everyone!!! In this article let us see what are skills required to be Senior Backend Engineer and beyond

Most of us would be coding in Java8 these days and be familiar with Streams, Lambda, and so on. Even many of us would be very good programmers who can do data structures very well and can solve complex problems easily. But these skills are not just enough to survive in the IT field. As we all know, technologies and tools are growing rapidly and there are hundreds of thousands of things getting launched every day. The backend stack is very big and just forget the Fullstack technologies.

I have listed down important things to be learned in addition to the code programming as the job demands so

1. Microservices

It is very hard to see a modern application without a Microservices framework. There are a lot of microservices frameworks for every technology and knowing one of them is vital. If you are a Java developer, then the widely used ones are

  • Spring Boot
  • Micronaut
  • Quarkus

2. Cloud

Most of the applications are in the cloud and in transit to the cloud. I would say that not learning Cloud technology in 2022 is a crime. The most famous ones are

  • AWS
  • Azure
  • GCP

It is a must to learn one of the above and get certified as a Developer / Solutions Architect

3. Containers and Orchestrators

Containers and Orchestration are synonymous with Microservices and Cloud-native applications. Most of the microservices are containerized and deployed as containers into the cloud. The things to learn are

  • Docker
  • Any one of Container Orchestrators like Kubernetes, Docker Swarm, AWS ECS, etc

Moreover, it is good to know how an image repository like DockerHub works

4. Reactive Programming

Reactive Programming is getting famous as it gives a good performance for the system by saving resources (Threads). It is based on a Non-blocking Event-Loop mechanism and is hence widely sought after now. These are the frameworks that use the Event Loop mechanism

  • Spring Webflux — For Java
  • NodeJS

It is also good to know about reactive database drivers. In contrast to the blocking nature of JDBC, R2DBC allows you to work with SQL databases using a reactive API.

5. Messaging and Streaming

Messaging is the heart of any modern microservices and through the messaging, information flows from one service to another asynchronously. There are 2 ways for microservices to connect with each other

  • Synchronous communication using API Calls
  • Asynchronous communication Topics and Queues

A microservice can produce the data and publish it to a topic and there will be other services that subscribe to this topic and they are called consumers. Famous messaging technologies are

  • Apache Kafka
  • RabbitMQ
  • IBM MQ

and so on

Streaming is the process of processing large volumes of real-time data and building data pipelines, storing it in data sinks, and analyzing the data. Kafka is one of the famous streaming tools

6. gRpc and GraphQL

REST APIs are the most common protocol for a web applications these days. But there are other alternatives to be considered based on the circumstances.

GraphQL also called Graph Query Language, is a protocol by which we specify only the necessary data from the API. This will make the response lighter and more efficient. The client has more freedom with data fetched and hence development time will be faster

gRPC protocol works on top of HTTP/2 and protobuf and it is 7 times after than REST for receiving data and 10 times faster than REST when sending data

It is extremely important to learn these and try out

7. OAuth2 and OpenIDConnect

OAuth2 and OIDC are important frameworks when it comes to Authentication and Authorization. OAuth2 takes care of Authorization and OIDC takes care of Authentication. There are many different flows in OAuth2 but the important ones are

  • Authorization code flow (Used for login pages to grant access from users to log in by Google, Facebook, Github, etc)
  • Client Credentials Flow (Used for the machine-to-machine communication i.e backend servers using a Client ID and Secret)

8. Other Programming Languages

It is always good to learn an extra language to reap the benefits and use them when the situation demands it. With the microservices framework, it is not a necessity for every service to be developed in the same language. Some services can be in Java and others can be in Python or Golang. Learning one of these will be very helpful.

9. jUnit, Mockito and SonarQube

It is a must to learn Junit5, and Mockito and understand how coverage works. It is also good to learn the Java Code Coverage tool (JACOCO) and how Sonarqube traces the code to find vulnerabilities, hotspots, and code smells. By looking at it, we can improve our coding practices and will help to become a clean coder.

10. Intellij IDE and Plugins

Intellij IDE is by far the best IDE for microservices development. With many plugins around like JPABuddy, SonarLint, Rainbow brackets, and a lot more, it will save time for every developer. So, if you are not using it, it is the right time to move to it.

11. Caching and No-SQL DB

It is very important for a Senior Developer to understand the different types of caches like In-Memory and Distributed caching. The use cases must be understood and the cache should be selected accordingly. Redis is the most widely used cache and it is offered by cloud providers like AWS

Most of the developers would have worked only with relational databases. No-SQL DBs like MongoDB and Cassandra are widely used these days thanks to big data technologies. The relational databases are vertically scaled whereas No-SQL DBs are horizontally scaled and fit perfectly for cloud environments to scale up and down based on the demands

12. OpenAPI and Swagger

Every developer must know the OpenAPI specs and Swagger. It is a good practice to use swagger in all the microservices applications so that the API documentation is automatically exported to an endpoint and can be viewed by anyone

13. Logging and Monitoring

The most crucial part of any application is Logging and Monitoring. Logging and Monitoring help us to understand the errors and metrics by Visualizing them. The common tools for logging and monitoring are

  • ELK stack (ElasticSearch, Log Stash, and Kibana)
  • Prometheus and Grafana
  • Dynatrace

It is useful to know about configuring logback/log4j2 and then learn about ELK and how it can be integrated from a basic Spring Boot Application

14. CICD Pipelines

Even though CICD pipelines come under Devops expertise, it is very important for developers to understand how it works and debug the script if the pipeline fails. A senior developer must know the pipeline script and should know what are the stages for the pipeline like build, test, package, deploy, etc. There are many pipeline tools like

  • Bitbucket
  • Travis CI
  • AWS Code Pipeline
  • Jenkins
  • Gitlab

15. Linux, DNS, Networking

Most of the systems are running in Linux and hence it is important to know the basics of Linux like navigation, curl, and so on

DNS and Networking are other areas to be learned. It is important for a Senior Developer to understand how the website is registered and how the DNS mapping is done for the domain name and how the routing is done to the server.

It is very good to start with AWS Route 53 and see how the domain is mapped in Route53 and then how the request is routed to the load balancer and to the servers.

16. Agile and Scrum methodologies

While working in an Agile team, it is very important to know all the methodologies and ceremonies as it is widely adopted by various organizations. A lot of certifications available like CSM, PSM, etc, and learning it the proper way makes it very easier to join any team and start moving quickly

17. Understanding Overall Architecture

It is always good to see how all these moving components work together as a single system. There are a lot of complex systems out there scaling up exponentially on demand and serving millions of customers. Netflix is a pioneer when it comes to microservices and the cloud. It is good to explore their architectures and how they use the components effectively. Uber is also another example. This will help you to expand your horizons in terms of System Design/architecture

Hope you have enjoyed reading this article. Thanks for reading and stay tuned.

If you like to get more updates from me, 
please follow me on Medium and subscribe to the email alerts.

If you are considering buying a medium membership, 
please buy through my referral link

Please continue to read some of my articles listed below

Roadmaps
Java
Spring
Cloud Computing
Developer
Recommended from ReadMedium
avatarKevin Wong
Uber System Design

Draft Notes

2 min read