This post is part of the C# Advent. You can find twice-daily advent posts here.
Do you know .NET Core? How about Blazor? Azure? Async? SOLID? GoF? MVC? WPF? MVVM? TDD? PRX? OK, I made that last one up but give it a minute and it will probably be a thing that you have to know. Does that ever feel overwhelming? Like maybe you can’t keep up or that you just don’t know enough? Have you ever tried to learn a thing that everyone is talking about only to get stuck?
Guess what? We’ve all been there (and are there). The lie we are tempted to believe is that we must know all the things in order to be a good developer. The truth is that knowing how to use all these tools (and the SO MANY MORE that are out there) isn’t the measure of a great C# developer. Let’s first look at what makes a good C# developer:
Knowledge of the Actual Language
The quickest way to stumble as a C# developer is to skip this step. Often, the flashy areas of C# draw new developers’ eyes. Xamarin, WPF, MVC, etc. are all good examples. These aren’t the starting point of C#. They are well down the path towards really understanding C#. They build upon OOP, which in turn builds upon common syntax. If you don’t understand C# objects, how to create them, what inheritance is, and how events work, how can you even understand a basic Windows Form application? It is built upon all those things. Sure, the drag-and-drop designer tries to hide all of that but to actually understand what you are doing, you need to know C#. So start there.
Attention to Detail
When I wrote my Top 10 C# Best Practices video, the big theme throughout the list was consistency and detail. What pushback I received focused on how it was “too basic”. Some people who considered themselves to be beyond such basics, were looking for more advanced best practices but here is the trick: everything comes down to the basics. And nothing is more basic than attention to detail. Even if you aren’t detail-oriented, there are things you can do to help yourself out. Patterns are a big one. Do the same thing the same way every time. Create small little habits that help you avoid mistakes.
Continual, Directed Growth
Here is the most overlooked area of learning C#. Let’s put this in terms of running. If you want to become the world’s best marathoner, what do you need to do? Sure, picking the right shoes is important. So is foot placement, leg movement, arm movement, breathing levels, and more but the most important thing a person needs to do to train is run. Run often. Run consistently. So why is it that we think that learning C# involves watching videos, reading tutorials, or attending conferences? Those things are all great but the most important thing a C# developer can do to learn C# is build applications. Lots of them. From the small test projects you build that help you test out what you are learning to the full projects that put the pieces together, building applications is extremely important (small plug: I offer free weekly challenges to help you practice).
From Good to Great
Want to take the next step and go from good to great C# developer? It has nothing to do with how much you know. Instead, it is what you do with what you know. Bring others along. This includes:
- Sharing what you know with others to raise their skills.
- Include those who get pushed to the side.
- Encourage those who are struggling.
- Be a beacon of positivity in a sea of negativity.
Great C# developers are leaders who lift others up in whatever way they can. Those developers, regardless of their skill in C#, can change a team for the better. Conversely, a C# developer that knows the language like they wrote it can kill the morale of a team by being elitist or even just by writing complicated code.
There is both more and less to becoming a great C# developer than just learning a bunch of new technologies. Setting a good foundation and building on that foundation over time is a good way to start. However, to truly be great, you need to look outside of yourself to those around you. So, my challenge to you is to lay out your plan for what you need to do next and then execute it. Become a great C# developer.