1. C# is simple, readable and easy to use

As a developer, like it or not, you spend most of your time reading and understanding code rather than writing it. This is why, one of the most important quality I consider in a programming language is readability. The effort language designers put in creating constructs and new syntax to make the code readable, elegant and compact is extremely valuable for optimising modern team-based software development. A language should not get in the way of readability but, on the contrary, it should provides ways to express your intent clearly. C# was designed from the ground up with simplicity and readability in mind. C# was inspired by languages like C, C++ and Java but the designers took the best parts of them and innovated further by introducing new concepts like value types, properties and events. For example, C# does not allows to use raw pointers directly to memory and it does not offer multiple class inheritance. C# provides a garbage collector that is handling the memory on your behalf. For the majority of scenarios, you don’t need to worry about memory management and that is just an example of what makes working with C# a lot easier. The C# language is also easy to learn because by learning a small subset of the language you can immediately start to write useful code. More advanced features can be learnt as you become more proficient, but you are not forced to learn them to get up and running. C# is very good at encapsulating complexity. Sometimes, you can successfully use C# features even without fully understanding how they work under the covers. You can work with iterators for years without ever understanding how they work. You can work with async and await without knowledge of all the intricacies about how the feature is implemented by the compiler. This is the important OO encapsulation principle applied to the language itself. I find this to be remarkable about C#.

2. C# is all about developer productivity

Developer productivity is another key design principle for C# since the first release.

C# is a strongly typed language developed to make it easy to build powerful tools on top of it. Visual Studio and Visual Studio Code are best in class software development environments used by C# developers. The R# Visual Studio extension provides incredible productivity, code analysis, code-generation features to 10X your developer experience. Rider is a new powerful and popular cross-platform IDE for C# software development. As a developer, I really care about productivity. I love to work with tools that help me to be more effective in my job. I like that I can rely on the powerful C# compiler to find errors even before I run my code. With C# 8 you can even get the compiler to help creating null-safe software. C# also contains a tons of features, explicitly introduced to the language to improve productivity and make common tasks easy to do: The null-conditional operator enable developers to do null-checking in an incredibly succinct way.

enable developers to do null-checking in an incredibly succinct way. Indexes and Ranges allows to intuitively create slices from collections

and allows to intuitively create slices from collections Var reduce the need to duplicate type names

reduce the need to duplicate type names Generics avoid duplicating code that only varies by type while preserving type-safety

3. C# is a multi-paradigm programming language

C# started as a strongly object-oriented language and over time become a multi-paradigms language supporting imperative, declarative, generic and functional programming styles. Generics introduced in C# 2 enabled developers to implement algorithms and data structures that were parametric with types. They key thing was that this feature was implemented natively in the runtime, making generics completely efficient and type safe. LINQ introduced functional programming to C#. The combinations of features like lambda expressions, anonymous types, extension methods, expression trees introduced a functional and uniform way to query data sources. LINQ is one of the most elegant and powerful technology inside C#. The query syntax also provides a declarative, SQL like experience directly inside the programming language. LINQ introduced an unmatched readability to our C# code, transforming the way C# software was developed in the wild. C# 7 and C# 8 continued the functional journey adding capabilities like switch expressions and advanced pattern matching to the language. C# 7 and C# 8 continued the functional journey adding capabilities like switch expressions and advanced pattern matching to the language.

4. C# is a flexible general-purpose language

C# is very flexible and allows you to develop a big variety of systems.



With C# you maximize the return of investment on your skills because you can build almost any kind of applications:

Console applications

Desktop applications (Windows Forms, WPF)

(Windows Forms, WPF) Windows Services

Web Services and Web applications (ASP.NET Core, Blazor)

(ASP.NET Core, Blazor) Native Mobile Applications (Xamarin)

(Xamarin) AI Applications (ML.NET)

(ML.NET) Distributed and Cloud Applications (Azure)

(Azure) Games (Unity)

(Unity) IoT applications

Reusable libraries It's important to say C# was not design to develop system-level performance critical software. It was not designed to compete directly on performance and size with the C and C++ languages.

5. C# runs on a solid well-engineered .NET runtime

C# was not designed in isolation but as part of the overall .NET framework project. The .NET runtime (called CLR) is an outstanding piece of engineering that provides memory management, JIT compilation, assembly versioning and loading, security, thread synchronization, exception handling, common type system, attributes, interoperability with unmanaged code, culture and more. In the recent years .NET Core was developed from the ground up and improved on the original .NET implementation in some significant ways. .NET Core provides the ability to develop cross-platform applications, new deployment modes, incredible performance and much more. .NET and .NET Core will converge in .NET 5 in 2020 to set the foundation of a single modern unified platform for C# software development.

6. C# is cross-platform

At the beginning C# was a language exclusively reserved for Windows developers because the .NET framework was tightly coupled with the Microsoft operating system. This was certainly a limiting factor in the adoption of C#. Finally, this is no longer the case! The new .NET Core framework has been designed from the ground up to run on multiple operating systems including Linux and Mac. Xamarin and Mono provides the ability to run your C# code natively on mobile platforms like Android and iOS. You can now run your C# on multiple operating systems. This is fantastic! You can now run your C# on multiple operating systems. This is fantastic!

7. C# is mature, popular and in very active development

C# is almost 20 years old. C# is a very mature language that evolved significantly over the years. The C# language is one of the top 5 most popular programming languages and .NET Core is the most loved software development framework in the world. C# is in very active development. The latest stable release is C# 8 that was released in September 2019 and introduced significant improvements to the language. From 2020, new major releases of C# are expected to be released every year alongside updates to the new unified .NET framework.

8. C# is Open-Source and led by Microsoft

C# is now fully developed in the open on Github. The last 2 releases (C# 7 and C# 8) were developed using an open-source model and future releases will continue to be developed in this way. Everyone can provide feedback and propose new features by creating issues on the official C# Github page. All notes from official design meetings are publicly shared with the community. Behind the C# development language there is Microsoft, the most successful software company in the world with 125 billion dollars in revenue in 2019. Microsoft is ultimately responsible to preserve the key design principles of the language. In my opinion, this is a very good thing! Microsoft is a different company then what used to be in the past. They truly embraced open source and recently become the largest contributor to open source software. Microsoft is developing C# following these four key strategy guidelines: We will keep growing C# to meet the evolving needs of developers and remain a state of the art programming language. We will innovate aggressively while being very careful to stay within the spirit of the language. We will prefer language and performance improvements that benefit all or most developers. We will continue to empower the broader ecosystem and grow its role in C#'s future, while maintaining strong stewardship of design decisions to ensure continued coherence.

9. C# has an active and vibrant community

I love the C# and .NET community. The community is probably one of the major reasons why I decided to invest on C# for my professional career. I started by attending local .NET events in Italy and I met some amazing developers over the years. Despite my very limited experience, one of them convinced me to create the official .NET community in Tuscany that I led for 8 years. In the past 5 years, I led the official .NET community in Cambridge, UK organizing events every month for 800+ professional .NET developers. Developers love to meet regularly in a safe environment to learn and grow from each other. It's fun. It's rewarding. It's useful for your career to practice speaking skills and to build your network. I even found my latest job thanks to a community event. The .NET Foundation is an independent organization to foster open development and collaboration around the .NET ecosystem. It provides support to .NET community leaders to run communities and it’s currently actively supporting 344 .NET meetup groups around the world. In my experience local communities are the best but developers also love to meet online in addition to attending conferences. There are many online communities but C# Corner is the largest online C# community in the world made of 3 million members. If your level of contribution in the community is high enough, Microsoft also rewards individual with a very special award called Microsoft MVP. I am honoured to be part of such a group. We meet regularly at a special event called the Microsoft MVP summit organized in the Microsoft headquarters each year. If you are a community person and you love to interact with passionate developers, you will certainly love entering the C# world.