Every developer needs one solid technology stack under their belt. You can have many, sure, but I think you need to work towards the mastery of at least one.
My tech stack this year, is essentially the same one that I've been working on for almost 20 years now.
Except not quite. Because things change quickly in the developer world, and my stack from even 10 years ago, looks slightly different in 2021. New things have been added and some things might be going away.
Which means that I will need to adapt and rearrange some of the blocks in order to future proof my code and my projects.
So let's dive deeper into my current stack and see where it is headed and why after 2 decades, it is still my go to. And maybe if it is right for you.
I've been a .NET developer since 2008 roughly when I first started working professionally as a programmer.
But, I started to learn it and use it actively almost the same year that it came out, in 2003. The official release (1.0) I believe was released around 2002.
Needless to say, I liked it then, and I still very much enjoy it now, even the latest changes that have transformed it into something completely different, which I will get into further down below.
But for the most part, the .NET stack primarily relies on the following 4 elements:
- .NET Framework
- C# / VB.NET
- SQL Server
Essentially, a server, a programming language, a database technology and a framework.
But for the most part, they all rely on these 4 technologies to make them work.
While, you have several options when it comes to choosing a programming language for .NET, I tend to always favor C# for a variety of reasons.
- It's still the most popular .NET language
- Heavily documented
- Well maintained feature set
- C-style syntax
- Plenty of questions answered on StackOverflow
The first programming language that I learned and used heavily was C++. I spent around 3 years in university mainly focusing on it for the most part.
And transitioning to C# was a breeze because of that. Both languages follow almost the same syntactical rules. So while they differ in their use cases and in the built-in classes and objects, the operations, looping mechanisms and declarations are almost unchanged.
VB.NET is also another popular .NET language though. And I have used it in the past as well, though it has a much higher learning curve since it bases its syntax mainly on Visual Basic.
You can essentially code the same functionality in either language, but it will just look completely different.
I tend to prefer C-style languages as they make it easier to pick up, or at a minimum, read other languages as well.
SQL Server / MongoDB
I've encountered SQL Server in almost every single job that I have worked at and there are many reasons for that, that I will get into further in a future post. But for now, I will say that as a relational database system, it has a large market share in the corporate world.
It's also essentially designed to work with the .NET Framework and with Visual Studio (the IDE). It's all one integrated package that runs with ease right out of the box.
And by that I mean that performing the basic database operations, such as reading, writing, updating and deleting data is relatively straightforward in .NET. You also have the option of using a data modeling framework, such as the Entity Framework, in order to map your database tables to class objects.
However, that does not mean that you are stuck using SQL Server as the only option for data storage. The .NET Framework overall is relatively agnostic when it comes to how you want to use the built in libraries. Which is why other vendors, like MongoDB, also have official C# drivers that you can download and install that give you the ability to perform the same operations on a cloud hosted MongoDB server.
As of late, I have been spending more time learning to work with NoSQL database like MongoDB which bring many benefits that a relational model just can't provide.
But in the end, I will more than likely integrate it into my current stack and not replace SQL Server. Both have their use cases.
Internet Information Services (or IIS) is essentially the web server software that runs the compiled code in a .NET Stack.
While I don't have too much to say about IIS, it is a relatively quick and extensible web server that can also run PHP applications as well.
Many people don't realize that if you have an official version of Windows installed on your machine, that it also comes pre-installed with IIS, however, it is a feature that is turned off by default.
I can't leave an article about my current tech stack without talking about .NET Core. More specifically .NET Core 3.x, which is the latest stable version.
But also .NET 5.0, which will become the follow up to .NET Core 3.1 with the "Core" part of the name removed. It's kind of a confusing scenario if I can be honest. One that I will probably go into further on a future post, as it is somewhat complex and involved.
.NET Core is different than the .NET Framework. For one, it is cross-platform and open-sourced. That means that you can develop .NET Core applications on Linux and MacOS as well, which you can not do with the standard .NET Framework.
It is also not a replacement for the .NET Framework, though in future implementations it could very well be the de facto standard when it comes to .NET Development.
And let's not get that confused with ASP.NET Core 5.0 which is the ASP.NET development subset of .NET 5.0. Not to be confused with ASP.NET MVC 5.
This is what I meant earlier when mentioning that technology stacks will change at some point in their timeline to account for changes in hardware and software.
I will say now, that I am still heavily focusing on the .NET Framework as my development tool of choice and not so much the Core components. Though in the near future, I will definitely need to begin to transition as the Core libraries begin to become the default.
This was my more "formal" breakdown of my current tech stack. It's essentially the server and database technologies needed to run and render my code.
Because these days, a tech stack really is more than just the server and the programming language.
But anyhow, that was a look at my current 2021 tech stack. It's involved, it's ever changing and I definitely do my best every single day to try and keep up. And to blog about it as much as I can to keep you up to date as well.