Hello, everyone. The rise of web technologies didn’t seem to slow down in 2021, on the contrary, every stack becomes even more vast, new languages come up, and even more interesting problems arise.
Today I am going to share my view on what are the most important trend to follow in 2022. As we have only limited time and unlimited technologies to learn it is even more important than ever to be able to prioritize your learning plan and invest your time as smart as possible.
I will discuss several sectors:
- Web 3.0
The Front-End UI can reach different types of Back-Ends through Web APIs and depending on what type of Web API you are doing you might consider different types of languages and technologies. Again from the above survey, you can see that the most popular one is Express.js and a little behind is ASP.NET Core. As I am a fan of .NET and I feel most comfortable there for 2022 I would not change that and I would continue my web development mostly with ASP.NET Core. The same can be confirmed by the StackOverflow Survey.
Also, you can see that currently, ASP.NET Core is a technology that is very much loved. I am actually on the same boat and I am a believer that it will continue to gain an advantage in 2022.
I think here it starts to get more interesting. Although you should care most for your Domain Logic and try to abstract away the database, the choice about what technology you will use to store the data would impact your application big time. Through the years SQL has been the most dominant type of database, but NoSQL databases like MongoDB and ElasticSearch have become quite popular but also with Cloud, there have been Cloud-specific databases that should probably also be considered.
Stack Overflow Developer Survey 2021
From StackOverflow, we can conclude that MySQL and PostgreSQL are the big winners. Microsoft SQL Server is a little behind but it makes sense because it is pricey and is used mainly in enterprise solutions. I think PostgreSQL has a little bit brighter future and would probably continue to gain an advantage and that is why I would prefer to spend more time on PostgreSQL than any other Relational Database. Also, it is good to know about SQLite as it is quite handy for smaller datasets and can be easily imported with the application because it is just a file.
I like to start my projects with MongoDB because I feel very well about changing things and experimenting more freely. Although a lot of people use platform-specific Databases like CosmosDb and DynamoDb. I honestly prefer to stay away from technologies that bind me to a platform. If I do not have a very good reason to use any of the Cloud-Native Databases I would personally go with MongoDB because it can be used both with local development, deployed for On-Premise solutions, as well as deployed on the cloud.
Of course, Redis and ElasticSearch are also very important. Redis is mainly used for fast caching access and ElasticSearch is usually used for its searching capabilities and for logging with Kibana. Both of the technologies have a lot more features and can be used as full databases. I have used ElasticSearch in projects where aggregations need to be fast and I enjoyed it. What is also interesting is that Redis and ElasticSearch are some of the better-paid technologies coming right after DynamoDb.
So as I said, databases are very very different and the field is quite full of great technologies. My personal time investment for 2022 would be in ElasticSearch, Redis, MongoDB, and PostgreSQL.
In the last years, a lot of different ideas have been tried in the space of Cloud Development in regards to architecture with a lot of buzzwords. I think currently think started to be a little more mature and the hype moved more to Web 3.0.
Nevertheless, I think still the most important thing to start with is Domain Driven Design and mostly the part of understanding your Domain and the Domain Boundaries. This is the core to do Microservices as the most important thing to get right in the Microservices world is to divide the boundaries in a way that makes sense and let the teams be independent and not coupled to each other.
Even if you are not a big fan of Microservices and do not need them in the heart of Cloud solutions is the integration between different services. Even if you are in a monolith world and just using external Cloud services for different things I think this would to some extent make you part of the Microservices world. That is why I think it is quite important to learn more about the concepts of Microservices.
There is also Clean Architecture. No matter if you are building a monolith or a Microservice you can benefit from knowing this type of design. I personally use it in each of my projects because makes the codebase quite clean and I feel like it is easier to know where to put what. I usually go with 3 layers Infrastructure -> Application -> Domain. Then I have multiple UIs that call the application layer.
CQRS is another concept that I use a lot. I usually write the application layer with Commands by using Mediator project. Of course, the idea behind CQRS is not just some kind of good-looking design but is actually segregation of Queries and Write operations. In this way, you can scale independently your Writes and Reads to have better performance for your application.
There is also Event Sourcing. I think this one is quite harder to master and you can use it partially in your application if you need to do so. I do not have much experience using it although it seems very cool to try. One of the biggest advocates for Event Sourcing systems is Greg Young so you can go and listen to some of his videos to understand more.
Another thing to know about is Serverless. This means using separate functions in the Cloud that would be scaled on demand. Azure Functions and AWS Lambdas are in this category. But serverless technologies should not be used randomly through your application because they also have specific use cases and drawbacks. You can easily misjudge where to use it and instead of benefits, it will only bring you disadvantages.
Cloud technologies were very hyped but they have already reached mass adoption and businesses continue to move to the cloud. You would rarely see any Job Description that does not include understanding Cloud solutions. There are a ton of services and things you can use in the cloud to help your development but they would vary to some extent between the different platforms. I think application development in the Cloud is very good investment of the learning time. I would concentrate on Azure in 2022.
This is another topic that has been trending in the last years. The field of deployment, testing and production environment is so vast that it even brought entirely profession. In my understanding the field of DevOps include Build Tools, Containers, Orchestration, Provisioning, Continuous Integration and Deployment, Monitoring of the infrastructure.
Each of this topic has its own technologies and skills. I would personally in 2022 try to gain more knowledge in Containers and Orchestration with Docker/Podman and Kubernetes. Also I would try to get deeper into CI/CD with Jenkins.
Maybe the biggest hype today is about Web 3.0 which includes blockchain technologies, NFT, Machine Learning, and Virtual Reality. These are all core concepts that would define the Metaverse world. I already started with Machine Learning and had quite a lot of use cases where I could apply it. From the above-mentioned technologies, I think Machine Learning is the one that makes most sense to learn for 2022. For others, it is still too early but they will be a good investment of time in 2023–2024 probably, especially I am very enthusiastic about Virtual Reality.
To start with Machine Learning I would recommend starting learning the basic concepts and trying to use different algorithms in Sklearn. One of the great resources you can use with a ton of people that try to help out is Kaggle. I found it a little bit late but it helped me a lot.
If you want to go deeper into Machine Learning you can check Tensorflow and Kears for creating Neural Networks. But if you are new to ML and want to get something done for a use case you have then probably Sklearn is the better choice.
Kaggle also had its survey for 2021 and you can check it out: