My .NET Developer Roadmap for 2023
HTML-код
- Опубликовано: 8 мар 2023
- Give the roadmap a star on GitHub: github.com/Elfocrash/.NET-Bac...
Check out my courses at dometrain.com
Hello everybody I'm Nick and in this video I will show you my brand new roadmap for .NET developers for 2023. This roadmap includes everything that a .NET and C# developer should know to excel in their career in 2023.
Workshops: bit.ly/nickworkshops
Don't forget to comment, like and subscribe :)
Social Media:
Follow me on GitHub: bit.ly/ChapsasGitHub
Follow me on Twitter: bit.ly/ChapsasTwitter
Connect on LinkedIn: bit.ly/ChapsasLinkedIn
Keep coding merch: keepcoding.shop
#csharp #dotnet
Extra things to consider like: learn how to use the IDE (vs studio, code) or command line efficiently, api client (postman, rest client, curl etc), db client.
Definitly an important point in my eyes, as it really can boost the productivity of a developer :)
vs studio can ruin your first impression of C#😁
(i really know few people that picked another language as their first because of a visual studio)
Glad we got Rider
True, fun tip. Find a laptop with an awful touchpad and spend a couple days coding on it without a mouse. You will learn the shortcuts and hot keys fast.
@@stefano_schmidt sometime you really have to experience a not so good one in order to appreciate the good stuffs 😅
@@NickSteffen or move the mouse to the unnatural side yours
I love how this starts with the basics and moves up to being a complete standard of everything that can help your team build, deploy, and maintain complete back end products. This isn't just a checklist of what someone new to coding should know, it's handy for senior and principal developers. I'm keeping this handy.
Super agreed
I'm honestly shocked as someone entering their second decade in this biz that a lot of junior devs lack sql knowledge. It's super useful in so many situations.
Yes , SQL/RDBMS/Postgres is very important.
SQL is so underrated as a programming language
This is a fantastic roadmap. Im embarrassed to say after two decades experience doing windows and web apps, theres a few things on this list I had never heard of. Thanks for clueing me in on what I need to add to my tool belt next.
This is so helpful, especially since you've compacted the roadmap. Thank you!!! Also, it would be great if you made some sub-categories for "Understand how the web works" bc it's alot of info in and of itself.
I would say thanks to you for your tremendous effort and in flawless explanation. Love your way of doing code and taking approach. ❤
Hi Nick! I have just seen that you started as a passionate L2 player. That's exactly what brought me to IT too! What an incredible journey, sending love from Italy, keep up the great work!!
Consider making this colorblind accessible. 1 in 12 males is colorblind and has difficulty distinguishing green from yellow. Using different stroke widths could help differentiate boxes on your chart without depending on color perception. Alternately, Google around for colorblind accessible color palettes. Great video though, and thanks for sharing this updated roadmap!
Great point, sorry for that. It's something I take for granted but I shouldn't. I will take that into account next time.
No worries! As a colorblind person I make this comment all the time ;) I just opened an issue on the GitHub and I am happy to help work toward making this roadmap accessible!
Thank you, Nick! I really appreciate your C# roadmap. It's very helpful for me
Thank you so much for providing this awesome roadmap! :)
Great video. Some extra items I recommend like machine specifications, apim/apigee, open api spec, source code generator, circuit breaker pattern with Polly
Thank you so much for showing me what to learn! Thank you!
What a list and what a great video and it's free. Thanks Nick for your effort ❤
Thats a great list. Its highlighted a few areas to focus on. cheers
Awesome list thank you.
Awesome, Nick!
Good info thank you Nick
Thank you, useful for me!
I think the Liskov substitution principle is quite important and not only good to know.
I have seen a few times where a derivation is significantly different from what the base class specifies just to make it "work" and that is the beginning of the end.
Of course this is also related to the other principles that a base class or interface (interface segregation principle) must be written in such a way that you are not forced to make such detours.
Are you able to give a specific example of this?
I always struggle with the reasoning behind this principle... I don't think I've knowingly violated this principle, but I'm not an amazing developer where all my class hierarchies are perfect. Ie, I've never thrown an exception on a method because the class isn't supposed to do it (like the classic "fly" on a duck class).
Thanks!
I would add NSwag to the library's SDK API as a means of automatically generating REST client code based on the OpenAPI specification
Very nice video. Nice to see some alternatives to look into, never heard of Refit or ReSharp before. Always used Flurl which I think is amazing already.
Also personally would remove Stored Procedures from the list :D. I have rewritten SO many stored procedures into Dapper sql queries it's unthinkable. So much easier to handle. :)
Wow! Thanks for this detailed info 😊… wish this is a PDF
This is an outstanding Roadmap. I am a C# developer, in many years I have interactions with most of the topic mentioned on this roadmap.
loved your Flurl pronanciation :D
Hello Nick! Thank you for your really insightful video. Currently trying to relocate to Swiss where people mostly use .NET / Java Spring Boot! 🙏
thank you very much!!!
I've been devving for the past 15 years, and I must say that is a very neat and comprehensive list. Well done man.
One important thing missing in my opinion is Domain Driven Design and it's correlation with microservices.
One very important, frequently overlooked lesson is, learning the principals well enough, to know when it's ok to break them.
Hi Ali
can we connect?
Cool thanks
Perfect! I am a mid .NET developer and this list, I believe, will help me conquer the next level.
I hope you will do some Entity Framework video's in the future. And some Blazor. Or in a course form. I'm not a real developer but do it next to several other things. And I'm learning a ton from all video's and the courses, of which I have done them all.
Damm i wish to have a roadmap like this for PHP and Java.. good job !!!
Couple of things I would add:
To the API section an Orange Carter.
To the ORMs section FluentMigrations (especially if you are using Dapper since EF has in-built migrations)
If you aren't doing strictly APIs I think learning the Post/Redirect/Get pattern is a good idea too.
One category that I think it good to know is the discriminated union options (emulators???) like OneOf or ErrorOr and/or Korikovs CSharpFunctionalExtensionsLibrary that has Maybe and Result implementations.
Perfect!
Some thing I would do differently:
- .NET CLI: "Good to know" in stead of "Must know" (I've never used this, except in CI pipelines)
- Version Control: add "Azure DevOps Repositories" as "Good to know".
- EFC: Lazy loading, eager loading, explicit loading as "Good to know"
- Logging: add Nlog as "Good to know"
- Task scheduling: Quartz seems to be another popular one
- Perhaps add a section for general things like DDD and CQRS.
- Could also maybe add a section for "project management" with tools like Trello and Azure Boards.
- Maybe even a section about documentation with conventions and tools for building proper wikis.
Hey nick! excellent video! Thanks man as always you're true pro! Your videos have only one flaw and I wish u will be able to make it up. A hair in the soup thing is you not using Visual Studio:))) And I wonder where are u from? I wasn't able to determine your accent...
Absolutely agree with this. Chat GPT was a huge bonus but you really need to give it the right context and understand what you're asking it for in order to get a good answer!
And, you also need enough knowledge to identify when it is confidently wrong. I like it for brainstorming, but I can't trust it for real implementations yet.
Hey Nick, Thank you for your awesome content. Could you share your thoughts on Raven Db. Do you think is it a powerful database?
I would include Azure Functions under Task Scheduling, not sure what AWS equivalent is but likely should be there as well.
AWS has Lambda with EventBridge
I'm getting there 👌
Thanks
I'd like to add Autofac to Dependency Injection section, because it one of the most popular DI containers in the .NET world
as a matter of just sharing my experience, I've been using Bing since the end of 2009 and so far I still preferred instead of Google: too much ads or not the answer I was looking for.
Great video! Not sure I 100% agree with Stored Procedures and Triggers leading to bad code. These are tools that have their place and in the hands of users who know how to use them in the correct scenario/context they can be quite powerful and effective.
The problem is that there is no correct scenario because there is always a better alternative
@@nickchapsas Im also curious about this. What’s the problem of abstracting your application from the raw sql code and putting it in the sql server instead of hard coding it in your c# code with dapper, while at the same time you get a few perks of using stored procedures like security, precompilation, optimization and maintainability.
I’m legit curious about your posture on stored procedures being a “bad alternative” by nature.
@@nickchapsas Nick , make video about this topic . I want to hear your opinion.
The problem about not using store procedures is that relational databases tend to increase on complexity (more joins, more columns). Thus, store procedures perform better than ORMs on these scenarios. This may not be your case, but enterprise projects and more over legacy projects tend to have SP for retrieving data quickly
Agreed. One of our complex query process in our enterprise app require thousands line of code in a single SP. We've tried other options and SP is the better choice!@@nicolaseckell9691
I haven't heard of half of this stuff. I guess I've got some stuff to look up. Thanks, man! PS. I'm so used to American spelling in tech that when I saw Authorisation, I was like huh....oh duh
Good explanation
Thank you, what would you recommend for the front end? A frameworks like Vue, Angular, or React? Something else? Blazor?
Great video by the way. As an ex Microsoft employee I know I am showing my bias but you did not mention Azure Active Directory which fits many more use cases in the Authentication and Authorization space than Microsoft Identity. I am guessing I will have to get caught up on more of your videos to understand why you appear to avoid much of that space as I myself will be spreading my wings a bit more. Congrats on your channel's upward mobility. You are a powerhouse and I look forward to seeing where you take your brand.
The only comment that caught me off guard was not using Stored Procedures. I would love to hear your thoughts on that in a video. Obviously, every use case can be different but how do you manage the performance of large databases without them?
They are an absolute no-no in every company I worked for that wasn't dealing with legacy software. Maybe worth a video?
@@nickchapsas performancewise it's still (if done right) the best solution and allow fine tuning like no driver does. But it requires SQL knowledge and understanding of execution plan to make it right.
In real world companies, you ever only see stored procedures in old old old projects, and they are a pain in the but. You are much better off learning ORM's like Dapper and EntityFramework, or whatever ORM is good/popular for your language
I've experienced more pain trying to use EF than I have with stored procs to the point that I hate EF with a passion that burns hotter than a thousand suns. I've only worked for companies that used stored procs though so I would love an explanation.
The company I work for uses store procs to not put the raw SQL CRUD Operation in the code base. We have a rule that no logic is allowed in store procs unless there are massive preformance benefits. I would love to hear your thoughts on this topic.
Also please make a video on what topics in C# we have to learn and practice as a developer.
Like what topics really gonna help us to improve my coding standards and efficiency of coding & building logic faster. 🙏🙏
Very suprised by your stored procedures comment.
There is not a single library (EF, NHibernate etc) that can write as performant Sql syntax as a Sql developer, especially for complex queries. To implement a large complex object can require 10+ table joins. When one understands the underlying structure of the tables (read indexes and foreign keys), it is quite simple to create sub-queries to filter data first, then using the outer query to retrieve additional non-filtering data. This allows the query optimiser to use multiple indexes on a table.
I've just come off a new project where the first decision we made was to use stored procedures as they allowed us to tune Sql performance.
Hi Nick - looking forward to seeing an updated roadmap for 2024 if you're planning one soon? Be good to see some security-focused aspects included such as Github Advanced security (codeql), Sonar, or Zap etc make their way into your list :)
Please do a video on configureawait!
You could do a video on how you start a project from clr and version control etc, once asked for a simple project demo, this wouldn't be for the project itself, more like "welcome to my crib" i have this use that yada yada, a run down from start to finish using clr since you say is important and wtv else you do
It's definitely nice roadmap, tell you as a developer with 15 years of experience.
Hi Nick, I'm a Developer for about 20 Years. In my last interviews as a Senior Developer there were questions about Stored Procedures, GraphQL, gRPC, Dependency Injection, Response Caching, MediatR. There are so many companies that use a lot of niche products and have legacy code. Especially the last company said my knowledge was not deep and wide enough. o__O Feel like an idiot.
Don't. You're never going to learn everything and every company you will work at will use a ton of tech you have no or very little experience with. If there are things that pop up everywhere, focus on that and make sure you have some sort of learning plan. Otherwise just make sure you have some level of understanding of what certain tech is and why it could be used. Like I've never used GraphQL and gRPC professionally, but I have pretty good understanding of what it is and how it can be used. It's not difficult to build that knowledge with just few hours of reading blogs, etc. Don't let 'em get in your head :)
Survivorship bias and Peters effect could take place here.
You should not take into considerations opinions coming from someone's arrogant egoism.
May be your experience makes you a Frontend heavy developer, so you don't need to go deep in backend, because you prefer to focus on things in which you are an expert.
If you don't know some technology deep it is not a problem. How you do relate with that is what actually important.
I would aware what was the problem with the interviewer if he was a team-lead and allowed an offensive behavior to people he saw in the first time - it would not become better in future.
Other sample is when you worked as developer in companies where responsibility segregation was at high level. Then you are allowed not to know how to configure CI/CD servers or even pipelines, or how to configure a specific message queue server, because you did not do it, you designed solutions and wrote code within your scope.
I hope I delivered this message clearly. Sorry, if my grammar suffers, thanks 😄
Hi, with which applications have you built the structure of the roadmap?
cool video)
In my workplace, we heavily rely on stored procedures for the system that we're interacting with, in an Oracle database. However, it was built as early as 2008, so it could simply be legacy code that we unfortunately don't have the time to get away from. Though I will say that using stored procedures for some tasks might not be too terrible, because the advantage is that you can deploy bugfixes without deploying the entire project. Would like to get some input from other systems and projects, in case this one is completely out of touch with the modern reality.
I work in a startup and we use stored procedures when we have really complex queries that require either lots of joins, or access to other databases through linked servers connections, etc. We decided to abstract that from the actual C# code and rely on them for that task. I know some devs hate on them but I guess it’s like everything in life that has its own pros and cons
That's what I would imagine stored procedures still find grounds for. Outside the database, you lose a lot of performance because of the constant querying, whereas stored procedures let you be free to perform the queries you need knowing that it'll be highly performant.
Same here; we use stored procedures becuase of the sheer number of left and inner joins for so many tables; they preform better; I just don't see how not using them would make things better; not to mention being able to tweak queries and deploy them right a way
I was about to declare the same as people here. Store procedures are quite important in enterprise environments cuz data tables are long enough to be done like that
@nickchapsas In Azure cosmos Db which Api's do you recommend to learn and are the most important ones?
Would be cool to add marks on side that say JR Devs pos here, then senior here. That way to give idea of what level needs what. Great video tho, thx
hello, i was just wondering what do you prefer rather than stored procedures. i also dont use them but i have heard when dealing with millions of requests then stored procedures should be the way to go. could you help me understand that a little bit more. thanks for everything. have a great day
@nickchapsas please can you include the resources where to learn these all skills from that much more helpful
When in your opinion should you use a Background Service or Periodic Timer over an Azure Function TimerTrigger?
Hey, thanks for the overall roadmap.
Can you do like "minimum" requirements in order to apply for a jr job as a .net dev ? the "absolute must have"
What I would add is the evolution of concepts like this:
Don't repeat yourself (DRY) -> Write everything twice (WET) -> Avoid hasty abstactions (AHA)
And I would add also maybe some Object Oriented Programming concepts, maybe Test driven development (TDD), Domain driven design (DDD) or even some functional programming concepts to understand purity of a function and no side effects while writing code.
Test driven development - definitely just a thing to read once, there is a good book about it, but writing tests before coding itself is nasty. If it's a startup you won't have time for this. Better write code and test it after.
Dear which tool you have used for this tree like diagram , please share the name of that ? , your kind input will be highly appreciated , thanks in advance
I appreciate your channel doesn't really focus on Frontend (Blazor, Winforms, WPF, MAUI etc...), but do you have any plans on covering those technologies in the future?
Indirectly. There is something coming soon :)
@@nickchapsas WinUI3 😈
C# is powerful when doing oo, without follow strictly Liskov substitution, easily to abuse oo inheritance.
Seems like a fine list to be a web-focused C# developer but as a general .NET developer I'd expect some knowledge of IL and CLR internals. Also knowledge of another .NET language like F# or one of the .NET dynamic languages like IronPython.
Nice roadmap! I have been watching a lot of your videos lately. Great content! :) One question regarding NoSQL databases: Did you try out RavenDB at some point?
I have. Just not good enough for the systems I'm building
@@nickchapsas That would be interesting topic for a video, I can't image which requirements you couldn't make work and IMHO it allows the most architectural freedom with (filtered) replication, ETLs, Subscriptions and even adds attachments, counters and time series support . In addition it has the best testing story of all DBs as a .NET dev 😉
@@nickchapsascurious - can you share more? Is it DB features, operation side or something else?
Hi Nick what is the name of the tool you used to create this tree?
Love this list, but I would have put AI as must know now. I don't mean trying to make it wriite 100+ lines, but how to use it to write small snippets of code that you don't know as well. It is more powerful than a lot of beginer devs I have known over the years. So if you are a beginer it will make you so much better.
Hi Nick, Thank you for the sharing your advise. I have a question on this. As you said Stored Procedures are not must have as they are not considered to be followed as good practices, however, you mentioned Dapper ORM is a must have. But I guess Dapper uses sql stored procedures or queries to do crud operations. Shall we use Dapper ? Or Dapper has another alternative to using SQL Stored Procedures ?
Hey Nick I think some basic azure stuff like Azure AD would be good to know
hey nick you have a image of the roadmap to download like last year?
after that you can code, yet you should be humbly aware that it is still dangerous half-knowledge, and that can be dangerous in the productive. So I agree with @InkFPS that gaining a deep understanding of how things work could be the roadmap for 2024+, optimally in parallel with a job as a junior developer, because theoretical knowledge is one thing. The ability to apply this knowledge in practice to real problems can only be gained through daily practice. Maybe then you'll make a profit someday.
I am surprised you didn't say anything about micro-services, mapping and Angular. The last is front-end, but here job postings are requiring it very much.
Do you use a tool to generate these roadmaps or sample something like photoshop?
Maybe design patterns can be added under the solid title. sorry if I miss it
I am in the middle of your unittest course, where can I find the downloadable content for the unittest course?
Great roadmap! I have been watching a lot of your videos lately. Could you please let me know what software you used to create the Roadmap? Thanks
I wondered the same and investigated the GitHub repo. It seems to be a Mind Map created in MindMeister.
I must have missed a video where you stated why Liskov's sub principle has fallen out of favor. How do you protect from common generics issues without it?
Late to the conversation, but I might suggest one thing missing: Python. C# is a grown-up, professional language and my favorite for development. But at the rate the industry is adding ML and IoT, I'm finding it essential to be able to work between C# and Python. Over and over in data science applications, I need to learn what has been prototyped/scripted in Python and then "engineer" it in C#. And with MicroPython, there's now a growing need for interop skills at the CPU/microprocessor boundary. I'm finding I can translate more and more of my C# structures and code to MicroPython and have shared definitions/contracts/etc.
Did you skip "Streaming" Category? I was really interested in that one!
Hi, Nick. Could you change the colors for the Must know and Good know branches? Because color-blind people and their varieties could not recognize differences. I have 3 more people with the same problems in my circle of friends. And we can't (or it is difficult to) determine its color.
If you decide to add some symbol for each - it will be extra solution)
Thanks for your videos and researches :)
Seconding this comment as I am red-green colorblind as well
Which course will you recommend to start with c# and Dotnet.
I want something from scratch to complete.
For somebody that tells me that the "no no stored procedures" and chooses "postgres" as being a better engine makes me wonder based on what the recommendation was done...
its for middle or senior? i work few years, but know and use just half of that. So i middle or still junior?
Thank you that shared your mind)
Hi, I am an experienced developer and I continue to gain more knowledge through your videos. Kindly add your courses to Udemy. My employer will pay for me to take them.
FYI the Bing ChatGPT won't provide full code samples. It will only give example snippets now. If you ask for a full sample it says how its the responsibility of the developer to know how to code. So if you want a larger code sample you may want to stick with ChatGPT.
Hey Nick! Awesome video. I would love to know more about why you think Stored Procedures lead to bad code and bad practices.
Maybe a good idea for a video?
@@nickchapsas I think so!
Having your SQL queries in stored procedures is good for performance because the database server will cache query plans and statistics for the query. But in my opinion I don't think they're worth it and that's because of version control and code maintainability. When the queries are in your code, you can track changes like you would any other code change in your git repository. Also, if the schema changes on some table (e.g. a column renamed) and you need to go and update everywhere the table is used, it's easier to just ctrl+f in your code than try to query the database to find and update the stored procedures. Also, I think it's easier in general for development when making changes to a system or building new features as the modified queries are in your application running on your computer rather than in the database, unless I suppose if you were to have your own copy of the database on your machine. Lastly, there is software out there that will help you do version control on the database itself, but never tried any as they look expensive, and rolling your own doesn't work very well (I've tried).
Edit: One more thought I had - when you're actually reading code especially if written by someone else, you'll have to go to the database and look at the stored procedure to know "what does that do/how does it work" when you see a stored procedure being executed.
SQL queries inside or outside stored procs generate identical execution plans and they are cached in the same way.
@@nickchapsas My understanding was that plans and statistics were stored/kept in the database for stored procedures, while adhoc queries are only cached in a pool and will be eventually removed from the pool after enough different queries being run - but I'm happy to be wrong. I will have to research that. In any case I'm not using them.
NLog is quite comparable to Serilog in popularity, so it is probably a must too
I've never seen it used in anything but legacy projects in the past 8 years
An important one if someone wants to become a *professional* developer - learn how to TALK ABOUT IT.
If you know how to do stuff but can't put it into words, not many will be able to properly appreciate your abilities and won't employ you.
Any idea where to learn each topic mentioned?
Should this be updated with ChatGPT in the "learn how to search for solutions"? or maybe generative Al deserves it's own section? 😅
very good roadmap, but i'd add Docker there. imho it becomes more and more useful even for juniors
Docker is there
@@nickchapsas yes, really, sorry
Respect Νικολα.
what application did you use to make these diagrams?
I would suggest NLog as an alternative to Serilog