Professional Documents
Culture Documents
2020
Mahipal Nehra
1. Time Complexity
2. Space Complexity
3. Memory Management
4. Process Management
5. Inter-Process Communication
6. Threads handling
7. Concurrency Management
8. Using Terminal and its basic operations
9. Common Conflicts with Operating System dependencies
Databases
For databases please refer our previous blog “Database Developers
roadmap for 2020”
Caching
Caching is saving some data of web applications in local storage and later
on referring this data. If any sort of data is being recursively used then
developers save it on local storage and then refer to this data when next
time it is requested by the application. Caching helps in enhancing user
experience by reducing the latency in rendering the application. The data
can be saved on the following 3 locations depending on where latency will
be minimum in that use case. Although caching helps in enhancing user
experience but it must be noted that that the data which needs to be
secured is not cached.
1. Server Side
Server-side caching is usually done for data that is being pulled from a
third-party resource or integration. For example, web designers add fancy
fonts and components that are pulled from a third-party website so in
such use case this data can be cached on server to reduce the latency in
rendering application on the client system.
2. Client-Side
Client-Side caching is usually done for design-related images, CSS and js
files. Client-side caching is most widely used in developing applications.
3. CDN
CDN (Content Delivery Network) are clusters of geographically
distributed servers which are responsible for routing requests from the
client machine to the closest server for delivering content with minimum
latency. The CDN pulls data from the global server periodically and this
data is cached on CDN servers to quickly fulfil the data request from the
client machine.
Read: Top 10 Backend Frameworks for Web Development in
2020
Java
Java was developed, maintained and released by oracle in 1995. It is an
object-oriented programming language that is most popular in the world
as it offers great features in developing high-security web applications.
Since it is quite old and was developed by a large tech corporation, a huge
community was evolved. The tons of open source libraries available in
java fast track the backend application development beyond anyone’s
imagination.
Node Js
Node js was launched less than a decade ago but it is built on top of
JavaScript and NPM libraries. Node js is also object-oriented
programming language that offers blazingly fast performance but quite
fewer security features as compared to java. Hence it must be there in our
backend developer roadmap for 2020.
Laravel
Laravel is an opensource framework of PHP and it is based on the
symphony. Laravel follows MVC (Model View Controller) architecture
pattern Laravel offers robust job processing with database ORM, fast
routing engine and many more features. Although the security of Laravel
is not as good as java these days it is as popular as node js.
.Net
.Net is a programming language developed and maintained by Microsoft.
It is as reputable as java but offers less open source and more proprietary
libraries to speed up the development process. Due to the dependency on
proprietary code developers usually do not find .Net suitable for small
scale projects.
Python
Python is one of the oldest programming languages from the incarnation
era of C and java. Although the syntax to write python was easy for
developers and the language grew steadily year on year but it could not
gain fame. The era of data science and artificial intelligence has poured
the elixir to its soul which fetched immense popularity among developers.
Hence it is among the leaning path and backend developer roadmap for
2020.
Ruby on Rails
Ruby on rails provides a tool to developers for providing structure to all
the code they write. Ruby on Rails is an open-source server-side web
application framework. Rails is an MVC (model-view-controller)
framework that providing default structures for a database, a web service,
and web pages. It encourages and facilitates the use of web standard
documents such as JSON or XML for data transfer and HTML, CSS and
JavaScript for user interfacing.
Version Control System
While writing the code developers have to try integrating different
functionalities which might mess up previously written codes hence a
version control system was required. Git is one of the most widely used
code versioning tool among developers that they must use.
Architectural Patterns
Architectural patterns have been evolving ever since the birth of
programming languages we have travelled from single tier architecture to
multitier architecture then we moved into the era of service-oriented
architecture, microservices and serverless deployments. Although
covering all of them is not possible in a single blog but we will do our best
within a couple of lines.
Service-Oriented Architecture
The service-oriented architecture is a software design in which application
components communicate with services through APIs. An SOA service is
a sandboxed discrete functionality that’s updated and acted upon
independently. SOA is the core foundation for web application
development.
Design Patterns
Code design patterns are well researched and practiced strategies in code
structuring which helps developers to easily modify and scale up software
application’s modules and classes. Here’s a list of some design patterns
with links to some good blogs on them.
1. Singleton Design Pattern
2. Factory Design Pattern
3. Observer Design Pattern
4. Decorator Design Pattern
5. Adapter Design Pattern
6. Template Design Pattern
7. Composite Design Pattern
8. Mediator Design Pattern
9. Iterator Design Pattern
10. Façade Design Pattern
11. Proxy Design Pattern
12. Flyweight Design Pattern
13. Prototype Design Pattern
14. Abstract Factory Pattern
15. Bridge Design Pattern
16. Builder Design Pattern
17. Chain of Responsibility Design Pattern
Message Brokers
A message broker is an intermediary software module that provides
interface engine for sending and receiving messages over computer
networks. RabbitMQ, Apache Kafka, JBOSS messaging and AWS
Kinesis are some most popular message brokers that are used in mobile
and web applications for communicating with text messages. For more
details, you can follow the wiki link.
We hope this blog helps aspiring backend developers in 2020.
Please do let us know if you like our blog and want us to write
on a specific topic.