<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bhanu Chaddha</title>
    <description>The latest articles on DEV Community by Bhanu Chaddha (@bhanuchaddha).</description>
    <link>https://dev.to/bhanuchaddha</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F333490%2F07873d4e-5e9a-474e-a459-18444b8f2f89.jpeg</url>
      <title>DEV Community: Bhanu Chaddha</title>
      <link>https://dev.to/bhanuchaddha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bhanuchaddha"/>
    <language>en</language>
    <item>
      <title>Super Backend Man - How to become an awesome backend developer</title>
      <dc:creator>Bhanu Chaddha</dc:creator>
      <pubDate>Thu, 09 Apr 2020 11:33:14 +0000</pubDate>
      <link>https://dev.to/bhanuchaddha/super-backend-man-how-to-become-an-awesome-backend-developer-4p2d</link>
      <guid>https://dev.to/bhanuchaddha/super-backend-man-how-to-become-an-awesome-backend-developer-4p2d</guid>
      <description>&lt;p&gt;You must have seen below image multiple times and If you ask my opinion, I would say the Iceberg could have been even more deeper. In my professional career, I have had hard time to answer this amazing question "What all a backend developer should know?".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhi46vk0ii1bbdn2rx0s0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fhi46vk0ii1bbdn2rx0s0.png" alt="How Deep is backend?"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Answer to this question is not a brief one and that's the reason, I thought of writing this article. Audience of this article are the people who already have the basic knowledge of one of the backend programming language like Java, Python, C#, Go or Node.js etc and wish to mature their craft.&lt;/p&gt;

&lt;p&gt;Originally Posted at &lt;a href="https://www.metakoder.com/blog/backend-developer-handbook/" rel="noopener noreferrer"&gt;https://www.metakoder.com/blog/backend-developer-handbook/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Doing backend well is not easy. All the crucial components and most of the business rules live in the backend of an application, Its like brain to your whole system. So it's really important that backend should be reliable, maintainable and extendable.&lt;/p&gt;

&lt;p&gt;But what do I mean by "reliable, maintainable and extendable" here? And how does a production grade backend software and architecture look like? This is what I want to demonstrate in this article. Consider this article as the index of a &lt;strong&gt;"Backend Developer Handbook"&lt;/strong&gt;. May be that's what I would like to name it , when it's finished.&lt;/p&gt;

&lt;p&gt;Below you will find list of technologies and practices you would come across as a professional backend developer in the industry. A lot of frameworks and tools mentioned below are of Java/ JVM stack but concepts can also be translated to any other language like Python, C#, Go or Node.js. I would try my best to mention the language specific tools for each language. You can also mention in comments if you are aware of any better tools, I would add those in the article.&lt;/p&gt;

&lt;p&gt;Goal of this article is to put good-to-know and must-know backend related topics at single place so that one can have a checklist of what he knows or may be it could help you to decide what you should learn next.&lt;/p&gt;

&lt;p&gt;You can google these topics and I am pretty sure that you would find plenty of tutorial on each topic. I have also added relevant links to few of the topics, which might help you to shorten your search time. I have a plan to write detailed articles on these topics. I would link those coming articles to the respective topic in future.&lt;/p&gt;

&lt;p&gt;So let's begin!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Service Design - Best practices for writing a Service
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/staltz/868e7e9bc2a7b8c1f754" rel="noopener noreferrer"&gt;Reactive Programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Package hierarchy &lt;/li&gt;
&lt;li&gt;Exception Handling&lt;/li&gt;
&lt;li&gt;Domain models&lt;/li&gt;
&lt;li&gt;Input and Output models&lt;/li&gt;
&lt;li&gt;Errorcodes&lt;/li&gt;
&lt;li&gt;Validations&lt;/li&gt;
&lt;li&gt;&lt;a href="https://resilience4j.readme.io/" rel="noopener noreferrer"&gt;Resilience (Resilience4J)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Service Contract&lt;/li&gt;
&lt;li&gt;Common Rest Client&lt;/li&gt;
&lt;li&gt;&lt;a href="https://swagger.io/" rel="noopener noreferrer"&gt;API Documentation (Swagger)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Code generation - &lt;a href="https://projectlombok.org/" rel="noopener noreferrer"&gt;Project Lombok&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Aggregation&lt;/li&gt;
&lt;li&gt;Routing&lt;/li&gt;
&lt;li&gt;Transactions&lt;/li&gt;
&lt;li&gt;Stateless Service&lt;/li&gt;
&lt;li&gt;Service Manual&lt;/li&gt;
&lt;li&gt;Service Deprecation &lt;/li&gt;
&lt;li&gt;Service Versioning ( Multiple versions, backward compatibility)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://keepachangelog.com/en/1.0.0/" rel="noopener noreferrer"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Design Patterns and Best Practices
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://sourcemaking.com/design_patterns" rel="noopener noreferrer"&gt;Gang of four&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jrebel.com/blog/solid-principles-in-java" rel="noopener noreferrer"&gt;SOLID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.interaction-design.org/literature/article/kiss-keep-it-simple-stupid-a-design-principle" rel="noopener noreferrer"&gt;KISS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Don%27t_repeat_yourself" rel="noopener noreferrer"&gt;DRY&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.enterpriseintegrationpatterns.com/patterns/messaging/" rel="noopener noreferrer"&gt;Enterprise Integration Patterns&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Refactoring&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Development Practices
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Right way to review a Pull Request&lt;/li&gt;
&lt;li&gt;Typical Developer Day - Time distribution&lt;/li&gt;
&lt;li&gt;Business Knowledge Documentation&lt;/li&gt;
&lt;li&gt;Code ownership, Open Source model&lt;/li&gt;
&lt;li&gt;Handling Production Incidents&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Common Used cases
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;CRUD API&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bhanuchaddha/open-weather-integration" rel="noopener noreferrer"&gt;REST Integration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SOAP integration&lt;/li&gt;
&lt;li&gt;Mainframe Integration&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bhanuchaddha/world-o-meter-clone" rel="noopener noreferrer"&gt;Server Side Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Analytics &lt;/li&gt;
&lt;li&gt;&lt;a href="https://predictionio.apache.org/" rel="noopener noreferrer"&gt;Recommendation Engine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://graphql.org/" rel="noopener noreferrer"&gt;GraphQL&lt;/a&gt; Server&lt;/li&gt;
&lt;li&gt;Handling Data stream&lt;/li&gt;
&lt;li&gt;Video Streaming&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/nybles/create-your-first-image-recognition-classifier-using-cnn-keras-and-tensorflow-backend-6eaab98d14dd" rel="noopener noreferrer"&gt;Image Processing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pagination during fetching items list&lt;/li&gt;
&lt;li&gt;Filters during fetching items list&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Platform Architecture
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;li&gt;Domain Driven Design&lt;/li&gt;
&lt;li&gt;Simple crud application&lt;/li&gt;
&lt;li&gt;Three Tier architecture&lt;/li&gt;
&lt;li&gt;Monolith vs Microservices&lt;/li&gt;
&lt;li&gt;DB: SQL vs NoSQL vs Casandra, Neo4j, graph db, time series db&lt;/li&gt;
&lt;li&gt;Free text search capability ( &lt;a href="https://www.elastic.co/" rel="noopener noreferrer"&gt;Elastic Search &lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Centralized Configuration&lt;/li&gt;
&lt;li&gt;Service Discovery&lt;/li&gt;
&lt;li&gt;Sidecar deployment&lt;/li&gt;
&lt;li&gt;Client Side load balancing&lt;/li&gt;
&lt;li&gt;API Gateway&lt;/li&gt;
&lt;li&gt;Distributed Caching&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/bhanuchaddha/world-o-meter-clone" rel="noopener noreferrer"&gt;Event driven microservice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Message Queue&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.metakoder.com/blog/using-redis-with-spring-boot/" rel="noopener noreferrer"&gt;Pub/Sub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kafka.apache.org/" rel="noopener noreferrer"&gt;Real time even processing - Kafka&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Load Balancing&lt;/li&gt;
&lt;li&gt;Inter-process communication

&lt;ol&gt;
&lt;li&gt;REST&lt;/li&gt;
&lt;li&gt;Avro or Protocol Buffers &lt;/li&gt;
&lt;li&gt;Message Bus&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;Distributed Session Management&lt;/li&gt;

&lt;/ol&gt;

&lt;h2&gt;
  
  
  Infrastructure
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Service Proxy&lt;/li&gt;
&lt;li&gt;Internet Gateway&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Performance
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Query Tuning&lt;/li&gt;
&lt;li&gt;Indexing&lt;/li&gt;
&lt;li&gt;Database Sharding&lt;/li&gt;
&lt;li&gt;Read Replicas&lt;/li&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;li&gt;Multi-Threading&lt;/li&gt;
&lt;li&gt;Asynchronous Programming&lt;/li&gt;
&lt;li&gt;Non Blocking Programming&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Production Deployment (CI/CD)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Continuous Development&lt;/li&gt;
&lt;li&gt;Staging Environments&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.metakoder.com/blog/containerise-springboot-application-with-docker/" rel="noopener noreferrer"&gt;Containers ( Docker )&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;Container Orchestration- Kubernetes&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://jenkins.io/" rel="noopener noreferrer"&gt;Jenkins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Deployment to Cloud&lt;/li&gt;
&lt;li&gt;Green-Blue Deployment&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Monitoring And Visibility
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Monitoring Dashboard&lt;/li&gt;
&lt;li&gt;Service admin features&lt;/li&gt;
&lt;li&gt;Distributed Tracing (Zipkin, Sleuth)&lt;/li&gt;
&lt;li&gt;Metrics, Prometheus, Grafana&lt;/li&gt;
&lt;li&gt;Service Dependency graph&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Logging and Aggregation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt; ELK Stack&lt;/li&gt;
&lt;li&gt; Splunk&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Unit Testing&lt;/li&gt;
&lt;li&gt;API Testing ( &lt;a href="https://resteasy.github.io/" rel="noopener noreferrer"&gt;RestEasy&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;Integration Testing&lt;/li&gt;
&lt;li&gt;Performance Testing ( &lt;a href="https://jmeter.apache.org/" rel="noopener noreferrer"&gt;Apache JMeter&lt;/a&gt; )&lt;/li&gt;
&lt;li&gt;End to End testing ( Selenium, Cucumber)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://netflix.github.io/chaosmonkey/" rel="noopener noreferrer"&gt;Chaos Monkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;A-B Testing&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tools
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;IDE -&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rest Client - &lt;a href="https://www.postman.com/" rel="noopener noreferrer"&gt;Postman&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Automation - &lt;a href="https://jmeter.apache.org/" rel="noopener noreferrer"&gt;Apache JMeter&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;GIT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Terminal/ Command Prompt/ &lt;a href="https://cmder.net/" rel="noopener noreferrer"&gt;Cmder&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Database Client &lt;a href="https://sqlectron.github.io/" rel="noopener noreferrer"&gt;Sqlectron&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Packaging tools - &lt;a href="https://maven.apache.org/" rel="noopener noreferrer"&gt;Maven&lt;/a&gt;, &lt;a href="https://gradle.org/" rel="noopener noreferrer"&gt;Gradle&lt;/a&gt; &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Development Libraries
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://github.com/google/guice" rel="noopener noreferrer"&gt;Google guice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://commons.apache.org/" rel="noopener noreferrer"&gt;Apache Commons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://projectlombok.org/" rel="noopener noreferrer"&gt;Project Lombok&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Security
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Authorization&lt;/li&gt;
&lt;li&gt;&lt;a href="https://oauth.net/2/" rel="noopener noreferrer"&gt;OAuth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jwt.io/" rel="noopener noreferrer"&gt;JWT&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/OpenID" rel="noopener noreferrer"&gt;OpenId&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cloud Native
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Serverless&lt;/li&gt;
&lt;li&gt;Auto Scaling&lt;/li&gt;
&lt;li&gt;Highly Available&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Looks like, this list would always be an ongoing work. I would keep adding and updating the topics as I would become wiser. You can also help me to make this list better. If you think any other backend development related topic should be part of this list, do mention that in comments and I would add the topic in the article.&lt;/p&gt;

&lt;p&gt;Thank for reading!! Cheers!!&lt;/p&gt;

</description>
      <category>backend</category>
      <category>developer</category>
      <category>handbook</category>
      <category>roadmap</category>
    </item>
  </channel>
</rss>
