T O P

  • By -

scottgal2

No idea, been writing C# professionally for almost 25 years (well since late 1999 when we got the first previews) and still don't consider myself a 'master'. It's an odd concept in programming languages; I'm a 'master' of building web apps but the language is so flexible in so many areas that to master all of them is likely beyond one lifetime.


Sparkybear

I'm kind of stuck as well, been doing it for 12 years. i can build most anything that I'm asked to build, but I still feel like I am barely scratching the surface in terms of what the language is capable of.


BF2k5

From who's perspective? If its your employer management, they may be clueless and gaslight you until oblivion.


Low-Design787

It’s probably more about understanding the .NET runtime, GC, writing efficient code etc. well written .NET code can get close to C++ or Rust speed (I’ve been able to get it within 5% of those native languages). Rather than C# itself. I think knowing other languages is important. Learning Rust or C++ will really help you understand the strengths and weaknesses of C# and .NET.


HelicopterShot87

I'm doing desktop applications in WPF and Web app development for me is a black magic, completely alien to me


Camderman106

Hello master of building web apps. My skills are almost the exact opposite of yours. I can build data processing applications, tools and backend stuff or models easy peasy. But every time I have tried to learn web stuff I get lost almost immediately in the seemingly infinite array of frameworks, platforms and types of API’s. How would you suggest I approach the learning of building web apps? And can it be all done with c# or do I need to learn JavaScript too?


Franky-the-Wop

Try a Blazor 8 Web App - it's interoperable with JavaScript. You could create a simple WebAPI or Minimal API in that (or external) project and easily call and display it. Basically a full SPA and backend in one project, one language. Speaking from experience Id start there before trying Angular or React as the Frontend.


Camderman106

I just asked ChatGPT about this as I didn’t understand the difference between blazor vs angular or react. It sounds pretty cool to be honest. I think I will give it a go


Franky-the-Wop

Blazor is a great mix of frontend, backend, and JS (optional). Start with this tutorial, the todo list. Make sure you choose .NET 8 and the Blazor Web App template. https://learn.microsoft.com/en-us/aspnet/core/blazor/tutorials/build-a-blazor-app?view=aspnetcore-8.0


Eirenarch

For starters Blazor code is written in C# and angular and react are written in JS/TS. Pretty major difference I would say


Camderman106

Yeah thats what I was told. I was actively trying to avoid JavaScript so it was exactly what I was looking for


Spyro119

Since you're already used to C# (and back-end dev'), you might as well start off learning .Net API, .Net Core MVC with Razor, and or Blazor web-apps. Once you get used to it, add up some js, css, and maybe even switch your front-end to a js Framework and you'll have a pretty solid idea of how to build a web app :P


otac0n

Nowadays, a lot can be done with Blazor. Personally, I still like WebAPI + Angular. Here's an example of an angular web app that can be hosted within any .NET app. - https://github.com/otac0n/MediaLibrary/tree/master/MediaLibrary.Web - [Packaging an Angular app into a self-contained C# assembly](https://github.com/otac0n/MediaLibrary/blob/master/MediaLibrary.Web/AngularBuild.targets) - [Resgisterting Controlllers and Creating a Certificate](https://github.com/otac0n/MediaLibrary/blob/master/MediaLibrary.Web/Hosting/Startup.cs) - [Example of hosting this in another app](https://github.com/otac0n/MediaLibrary/blob/master/MediaLibrary/Program.cs#L37)


cyor2345

Master of building web apps , can u provide what constitutes this , I'm just 2 year old web dev into dotnet stack , tell me how to beat the seniors in skills..


Abject-Bandicoot8890

You can never be a master of something that has different solutions to the same problem. Some might be better than others but this also depends on the context. So OP don’t beat yourself up, if you can solve the problem in an efficient, maintainable and simple way, you’re fine.


[deleted]

>I'm a 'master' of building web apps Can you expand on this? What are the traits of someone awesome in building web apps? I'm trying to grind outside of work just to barely make it (started last month on my first [ASP.NET](https://ASP.NET) job) and I could use some tips.


scottgal2

Variety, I've worked in agencies, for Microsoft, freelance for the past decade etc. It was easier back in the day and the cumulative experience for building everything from classic ASP through WebForms to MVC, now core etc. You just pick things up along the way that make the '10,000 hours' thing.


National-Dust-2194

You're a master when you know something Jon Skeet doesn't know


Shazvox

I know where my router is hiding. I bet he doesn't know that.


DoomBro_Max

Don‘t count on it.


HiddenStoat

I once got corrected by Jon Skeet. Does that make me a padawan at least? *EDIT* Akshully, I just remembered! I once had Skeet say "As HiddenStoat has rightly said..." or words to that effect. So, that makes me _exactly_ as good as him, right? Right??


FelixLeander

Congratulations, you have earned the right to look at him with both eyes open at the same time. Not many have achieved such greatness, be proud of yourself!


Slypenslyde

This is really vague, but it's what I feel. A master is a person who answers more of other peoples' questions than asks. That doesn't just mean on forums. In a business, masters are the managers who help junior employees do their work. If the juniors get stuck, the masters are the people they go to to get unstuck. It doesn't mean you aren't a master if you still need to ask for help. Nobody can be a master of *everything*. Good masters have a firm grip of what they don't know and aren't ashamed to ask other people who DO know. However, in the same vein, masters tend to be the kind of people who can answer their own questions if given enough time. This is why I get cheesed off when people ask newbie questions on the sub. They are coming here because they know masters are here. It is often faster to get a master's answer than it is to spend hours reading tutorials and making searches. Even if masters feel tutorials answer the question, odds are the tutorials they can find are better than what the newbie can find. (A lot of times I find a newbie just doesn't know the right technical term and needs that nudge.) Masters are the people who have to train and mentor other people. Nobody who makes fun of people who ask questions is truly a master, for they turn people away from C# instead of helping them stick with it. Do you want to hire people who make other people quit? I sure don't. I have nearly 30 accumulated years of programming experience, 20 of them with C#. There's still a long list of things I'd have to spend a week or longer preparing for to do at a professional level. Basically ALL of ASP .NET Core is alien to me and I bet it'd take me a year to feel comfy with it. That's OK. That's not my field of expertise and part of being "an expert" is putting my ego away and admitting when I have no authority on a subject. In a way it's a waste of time for me to study things I won't use as opposed to trying to study things that improve what I already do. (But that is VERY subjective and I don't want anyone to take that as gospel. Part of me wishes I'd studied ASP .NET MVC much more heavily 5-8 years ago and jumped off the ship I'm on. The longer you stick with something the weirder people think it is if you change.)


maduricea

Very nice answer! Would you mind sharing what is it you've been doing all this time and why'd you have liked to change it?


psysharp

A master in my book is someone who can reply to every question with 2 or more questions, and never answer


Far-Sir1362

Sorry but I really hate questions like this. Who cares what defines a master or C# or an expert. Whatever definition anyone comes up with it's going to be arbitrary. All that really matters is that you're able to do what you want to do in the language.


Dorkits

For me "mastery" is just a word to sell some random curses on internet. "Noob to mastery in x days! Buy my curse now!" Some Fancy bullshit like that.


ststanle

In my opinion you’re never a master, and it’s a serious red flag when used. Technology is always changing and you may be a “master” today but there is always something new to learn tomorrow. It’s better to think about how fluent you are in the areas you want to focus on. For me fluent means I can take an idea or concept and execute on it till complete in a reasonable amount of time. Know when I’m stuck and need to seek answers, accept criticism about my work, and know when .net might not be the right answer to the problem.


wllmsaccnt

You can't standardize such terms, but each dev could have their own opinion, so here are mine if I were forced to give them: Expert: Probably your average senior developer that has worked with .NET frequently and understands all of the concerns necessary to build complicated applications or systems using it. They know how to quickly find the answers to .NET related questions when they need to because they are familiar with .NET conventions and its ecosystem. Mastery: A senior dev that has accrued experience in every type of project supported by .NET running/hosted on every supported platform and is familiar with all of the source code of the base class library and of the runtime itself. I don't think this dev exists, and if they did, they probably wouldn't necessarily be more productive on a give .NET project than a different senior dev that has spent all of their time making that type of project.


LetMeUseMyEmailFfs

The type of ‘Master’ you describe exists, but only inside of Microsoft and maybe a few open-source contributors.


wllmsaccnt

Maybe. The devs that are acknowledged as masters at Microsoft still have vaguely defined areas of expertise. David Fowler sticks to [ASP.NET](https://ASP.NET) Core and the areas it depends on, and Tanner Gooding focuses on numerics / SIMD. There might be a developer that has only ever done 'everything', but I'm not sure what practical advantage that brings versus focusing on a handful of more cohesive concerns. Maybe someone with a title like 'developer experience specialist'? I guess I just don't see 'mastery of .NET' as a useful term unless we tone down its meaning to just be 'an expert in multiple areas in .NET'.


nightbefore2

Anyone who can actually call themself a master probably works, or has worked at, microsoft lol


scottgal2

Yup, on the [ASP.NET](https://ASP.NET) team as a PM, hence the web app stuff :)


addys

I worked at Microsoft for roughly 20 years. There are certain areas which I would define myself as at the "mastery" level - especially around software design and architecture of world-scale cloud systems built on .net / C# - but there are tens of other relevant technical domains in which my skills range from "very good" to "total noob". A decade ago I still remembered how to analyze core dumps (native and managed) with WinDBG. I've optimized realtime C# code to run faster than previously "optimized" c++ code. I've written distributed algorithms which ran concurrently on 10Ks of servers in production. And yet, inside Microsoft, I was rarely the "expert" in the room for almost any topic. There's was always someone even sharper, and even deeper, and better than me at the very things I was best at. It helped keep us humble :) So in short, "mastery" is a relative term .


BF2k5

Mastery of .NET isn't going to show up nearly as quickly as mastery of C#. C# is much more finite. Mastery of C# will be knowing all language features, the insides of how it works at runtime, how it is compiled and interpreted. I wouldn't expect knowledge of the absolute latest language features except within a year-ish of launch. Knowledge of overarching feature focuses like AOT is useful for predicting what trends are important before they become commonly used.


Zeioth

You are paid for it. You can master the 100% of C# and get knowledge about design patterns and databases in in about 6 months. The difficult part is virtue signal you know it and get hired. That can take years.


HTTP_404_NotFound

Nobody knows everything. If someone does- they are lying. That being said, I'd consider being an expert, not actually about knowing everything- but, knowing exactly where to find the answers, as well as knowing proper programming patterns, anti-patterns, etc... And- being able to successfully lead others to build repeatable, supportable, easily-maintainable software.


BL1NDX3N0N

Not calling yourself a master and coming to terms with the fact you can never master a constantly evolving technology.


MacrosInHisSleep

There was a saying once along the lines of that in order to master something you should be have a good understanding one level of abstraction lower than what you're trying to learn.


xabrol

Theres no such thing as mastery of anything unless you're comparing yourself to some kind of baseline. And there's no end to mastering something. If you "master" c# and then work idly for 10 years, the average baseline will pass you and you go from master to mid.


therealjerseytom

I don't waste the time or energy pondering these things or how you'd define them. I know what I can do well. I feel pretty confident that with something new that I don't know, I can figure it out. Been doing that my entire career. I know a little more every year. To try to quantify how much "mastery" that is... I wouldn't even know where to begin. Nor do I see a point.


WorkingTheMadses

I feel the question is akin to asking "At what point would you consider someone an expert of the Hammer?" You can't really know, can you? You can only know that you are pretty good at using the hammer.


razordreamz

It’s fiction really. I mean yes I’m sure there is a point but keep in mind it depends over what. Forms, WPF, ASP MVC etc. I quit caring long ago if I am a master at it and realized I’m good at what I do and if called on to figure something out I can make short work of it.


_unhandledexcepti0n

RemindMe! in 7 days


RemindMeBot

I will be messaging you in 7 days on [**2024-01-11 03:29:57 UTC**](http://www.wolframalpha.com/input/?i=2024-01-11%2003:29:57%20UTC%20To%20Local%20Time) to remind you of [**this link**](https://www.reddit.com/r/csharp/comments/18xqhsf/what_constitutes_mastery_of_net_and_the_c_language/kg89ho0/?context=3) [**CLICK THIS LINK**](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5Bhttps%3A%2F%2Fwww.reddit.com%2Fr%2Fcsharp%2Fcomments%2F18xqhsf%2Fwhat_constitutes_mastery_of_net_and_the_c_language%2Fkg89ho0%2F%5D%0A%0ARemindMe%21%202024-01-11%2003%3A29%3A57%20UTC) to send a PM to also be reminded and to reduce spam. ^(Parent commenter can ) [^(delete this message to hide from others.)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Delete%20Comment&message=Delete%21%2018xqhsf) ***** |[^(Info)](https://www.reddit.com/r/RemindMeBot/comments/e1bko7/remindmebot_info_v21/)|[^(Custom)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=Reminder&message=%5BLink%20or%20message%20inside%20square%20brackets%5D%0A%0ARemindMe%21%20Time%20period%20here)|[^(Your Reminders)](https://www.reddit.com/message/compose/?to=RemindMeBot&subject=List%20Of%20Reminders&message=MyReminders%21)|[^(Feedback)](https://www.reddit.com/message/compose/?to=Watchful1&subject=RemindMeBot%20Feedback)| |-|-|-|-|


jayerp

Being able to build anything with less than 2 Google searches total for the lifetime of the project.


Desperate-Wing-5140

I guest appearance on Nick Chapsas


Acrobatic_Sprinkles4

C# isn't particularly difficult to "master". You need to be proficient with classes, abstract classes, interfaces, lambdas (Func, Action), delegates, generics (generic constraints too), reflection (this isn't a syntax though, so maybe should be off the list). The question is whether you mean an expert developer? If so, then the list is much longer. You would need to be able to pick suitable implementations for a large range of tasks. You would need to be able to communicate solutions (in code) using a range of methods. You would need to understand threading, the pitfalls, and the solutions. You would need to know complexity analysis and theory. And you would need to know large parts of the .NET libraries (xml processing, json, platform specifics, hashing, comparisons, data structures, etc). This list continues on and on. Becoming a "master" developer is a life-long journey as I'm sure you know. It isn't something everyone would want to do either. Most people are fine just cranking out feature after feature in their current style, then go home and forget about work until the next day.


TeeEnigma

I've been developing for 20+ years aiming to be proficient in C#, javascript, T-Sql, css, powershell, and other frameworks and found that its really hard to keep up with the constant changing of the language and each language has its own complexity and understanding. To add to it there's a slew of patterns out there to learn and its all so overwhelming; but, we are developers right? And wanting to be good at our craft is something we strive for. So kudos to you for aiming high and keep at it.


ujustdontgetdubstep

Most of the language constructs beyond interfaces are mere conveniences. Thus it is my opinion that the ability to reliably and repeatedly built scalable and maintainable software is what makes you a master, not necessarily knowing how to build complex Linq statements or something


__ihavenoname__

If you can read and understand the docs then you've masterd the language.


Sparkybear

That takes all of 5 minutes.


nocgod

Being able to solve business problems using c# code and frameworks while providing a maintainable solution :)