We couldn’t do a C# course without briefly talking about its history. If only to understand where we come from, and some of the peculiarities of the .NET environment.
In the late 1990s, Microsoft faced the serious challenge of competing with Java, the language that dominated enterprise application development at the time.
Java, created by Sun Microsystems in 1995, promoted a “write once, run anywhere” philosophy thanks to its use of the Java Virtual Machine (JVM).
Java, as a language, was very good. But Microsoft’s access to Java was limited due to licensing issues and legal conflicts with Sun Microsystems.
So Microsoft decided to develop its own language, shamelessly copying heavily inspired by Java, but designed to integrate with the Windows platform.
Under the direction of Anders Hejlsberg, a renowned software engineer who had worked on Turbo Pascal and Delphi, development began on a new language that would eventually become C#.
They named it C#, inspired by C, and C++. The # is supposed to be four + symbols, two above and two below, trying to imply that it is the natural evolution of C++.
The .NET Framework Era
C# was first introduced in 2000 as part of Microsoft’s .NET initiative. The first official version of C# was released in 2002, along with the .NET 1.0 framework.

The .NET platform was an ambitious attempt to create an environment that would allow developers to build all kinds of applications and run them on different devices and platforms (it was Java’s virtual machine).
As I said, C# was heavily inspired by Java. (well… when it started I think we all thought “my goodness, a bad copy of Java from Microsoft” 😆). But little by little they started adding things to it, and it gained its own identity.
In 2007, version C# 3.0 introduced important improvements to the language. Furthermore, it came with .NET Framework 3.5, which added WCF and WPF technologies. By this point, it was starting to become a great programming language.
For me, the consolidation of C# was achieved with version 5.0, released in 2012, accompanied by .NET Framework 4.5. For better or worse, it’s one of the most used versions (I say “for worse” because many projects never moved past it).
The .NET Core and C# 6.0 and 7.0 Era
C#‘s popularity was doing quite well. It was never as popular as other languages (Python, JavaScript, or C++), but it had its niche… it had decent popularity.
But Microsoft (and us developers) had a thorn in our side. No matter what they told us at the beginning, cross-device compatibility was almost non-existent. C# only worked on Windows.
So Microsoft went a bit crazy and said “let’s make it great! 🤡”, let’s split the entire .NET Framework into pieces. (because if something works, why not mess it up).
This is how, in my opinion, one of .NET’s biggest blunders emerged: the launch of .NET Core in 2016. A modular and lightweight version of the .NET Framework, designed to run on Windows, Linux, and macOS.
Furthermore, .NET Core would be Open Source. It has its repo on Github, you have all the code available, and you can even report errors or collaborate. A huge and terribly positive change ❤️❤️.
In short, .NET Core was an important step forward (necessary? probably not) to become a truly cross-platform language. But in return, it complicated… everything, it complicated everything a lot.
But the thing is, with all their guts 🥚🥚 they also kept .NET Framework, in parallel with .Core, Standard, Xamarin… a crazy idea.
So just a few years later, Microsoft basically had to backtrack and reunite what had been separated. 👇
Unification with .NET
In 2020, Microsoft unified .NET Framework, .NET Core, and Xamarin under a single platform. So starting with version .NET 5, there would only be one platform, called .NET (just that, plain, nothing behind it)
Could they have made the names a bit easier? Well… maybe. But at Microsoft we don’t do things that way!
This version represented a consolidation and simplification of the .NET ecosystem, offering a unified platform for developing applications on multiple operating systems and devices.
A consolidation that wouldn’t have been necessary if they hadn’t started chopping up the Framework… but oh well, what do I know 🤷
The Present and Future of .NET
And we arrive at the present, where .NET continues to evolve by leaps and bounds. With the arrival of .NET 6 and .NET 7, Microsoft has continued to improve the performance, compatibility, and ease of use of the framework.
Furthermore, new technologies are continually being introduced, such as ASP.NET Core, Entity Framework Core, MAUI, or Blazor, which have opened up new possibilities and attracted a new generation of developers.
Additionally, its integration with Azure (Microsoft’s cloud platform) offers a wide range of services and tools that facilitate the deployment and management of applications in the cloud.
In short, we hope that it has plenty of life left, as it is a great programming language, Open Source, and truly cross-platform.
