My personal history with .NET. I am sorry that I did not publish a new…
By: Marek Sirkovský
Tags: Microsoft, Dotnet, Software Development, Software Engineering, Csharp

My personal history with .NET

I am sorry that I did not publish a new article last month. I spent a lot of time in one company training their developers on C#. We touched upon the future of .NET a bit there, which has inspired me to write a summary of my opinions concerning .NET and its future.

Actually, creating the following post has been incredibly funny because it brings back memories of C#’s ancient times.

Disclaimer

In this text, I am going to touch on .NET 5 only a little.

So I am not going to describe at great length the contents of .NET 5 which will be released this November. To get a detailed insight, please refer to the following great blog post.

Now I would rather give you my opinion and my own personal history with the .NET framework.

Ancient times

I was lucky that I started programming even before the release of .NET framework 1.0. I played and wrote a bit in languages like Basic, Pascal, PHP, and C++(good old DirectX). Then, I came across a .NET book, which resulted in my falling love with C#.

I still remember my feeling when I stumbled upon one particular comparison in that book. The example illustrated how to open and read a file’s content in C++ and C# — just three lines of C# code compared to twenty lines of C++.

Unfortunately, or maybe, fortunately, I had no opportunity to write any code in the 1.0 version because I accepted my job offer as a C# junior developer when version 1.1 had already been stable for two years. That was a wonderful time. Even in those days, the Visual Studio seemed fantastic, and I immediately noticed significant improvement compared to my former PHP or C++ experiences. Of course, it had plenty of quirks and mysterious bugs. There were unexpected glitches while renaming files or moving them in the solution. Occasionally, VS needed to be restarted to fix the compilation, and so on. But after we both got used to each other, I was really satisfied.

History of .net

Looking at the history of the .NET development, we could see many mistakes and blind paths Microsoft had chosen in previous years. Windows workflow foundation, Card space (have you ever used it?:), Silverlight, WCF, to name but a few.

Even in the “modern days of .NET,” things went down the wrong way from time to time. The notorious JSON format of the project, for example. After a few months, MS killed it and returned to the good old XML format, leaving many developers in anger and despair.

I remember that MS has especially struggled with versioning their framework and untransparent decisions. E.g., the 3.0 version was just a marketing campaign bringing only a few libraries. While 3.5 was a pretty nice improvement over the last “real” version 2.0.

The lousy and mystical relationship between the C# version and the framework version represents another big issue.

Just short illustration:

C# 4.0 was introduced in .NET framework 4.0. Ok, that seems clear.

However, version 5.0 and 6.0 were published with .NET 4.5 and .NET 4.6, respectively.

Additionally, version C# 7.0 was in .NET 4.6.1 but Version C# 7.1 in .NET 4.7.

Ugh, you see, it was, and it still is, a real mess. It might not trouble you so much if you have been using C# every day for a many years. But I expect that beginners could be confused.

The new approach planned for .NET 5 should “fix” the mess by being much more predictable. MS has revealed that they are going to publish a new major version of .NET and C# every year. Of course, there is no guarantee that MS will fulfill their long-term promise. Yet, we should stay hopeful. :)

Anyway, I don’t just want to mock. We have also seen a considerable effort from MS to fix the above-mentioned problems over the years and to provide innovation while staying backward compatible. Actually, maintaining backward compatibility must be super laborious. I feel that they have tried so hard not to break anything that their exertion must have hindered innovation.

Inclusive

When I was thinking about the history of .NET and .NET in general, I was surprised how often I came upon the term “inclusive.” .NET tooling and environment seem to me as pretty comprehensive and beginner-friendly. You do not need to hassle with your own build pipelines and chase compatible versions of libraries like we have to in JS these days.

You just install VS, choose a project template, and start coding. And that exactly is the experience we have had here for nearly 20 years.

I am aware that VS has not always been free of charge for small businesses or freelancers as it is today, but those days are fortunately gone. And to be utterly honest, the community version of VS had really contributed to my decision to leave my job and start freelancing. :)

Intellisense in VS has always been state-of-the-art. I can’t stress enough how much the user experience has improved having this type of support. In comparison with anything I have ever worked on, I am super happy that my path was .NET.

Nevertheless, the truth is that the combo TS+React ecosystem+VS Code is getting closer to achieve the UX quality that every C# developer experiences daily.

Hidden revolution

I personally called the transition of .NET a quiet or hidden revolution. The overwhelming majority of my twitter-sphere or social bubble, lives in a world of nodejs, react, svelte, docker, and other fancy stuff. .NET is quite often put aside as something bulky and merely for corporate purposes. But the “Core restart” has been an amazing step.

Actually, we could notice hints of the revolution before .NET Core 1.0.

I spotted the first evidence that something had changed when the free of charge “Visual studio community” was released. That was a time where I felt something had begun to shift in Microsoft. I am not sure if we could attribute that to Nadella, who had replaced Ballmer as the Microsoft CEO, but I would bet on it.

Another amazing trend has been the movement to open-source anything that could be open-sourced and the improvement of performance in .NET Core.

I remember days where .NET has not viewed a fast framework. But today, looking at the performance test, I am astonished by what progress has been made. Moreover, .NET 5 promises additional improvement in this area.

As time goes by, additional things have happened. VS Code has been a marvelous step, as well as Typescript, the support of Linux in Azure. The acquisition of GitHub and the offer of “free of charge” private repositories for everyone are just the icing on the cake. :)

To sum up, I have tried many languages and tools to build stuff. However, C# in combination with Visual Studio is something I have really fallen in love with. And I am firmly convinced that the concealed revolution would inevitably bring another wave of popularity to the .NET ecosystem, Microsoft or C#. Because without any hesitation, it deserves it!