I have been asked a question multiple times – how should I plan for learning .NET ? Where should I start from ? In this article, let’s see how a learning plan can be devised for beginners with no prior experience with .NET.
Why answer to this question is difficult ?
These questions can be very difficult to answer. The plan depends on your style of learning. The plan also depends on whether you have some background in computer science / programming.
Many people give advice that if we want to learn some new framework or technology, read about it and then use it for small pet projects. I think this advice may be useful for people who have prior experience in the area which is similar to the area they want to learn. But this advice may not work for some.
When this question was asked to me for the very first time, I started talking about some things. Later I was thinking about the answer I gave to it. Honestly, it was not a satisfactory answer. Because, I used many technical words specific to .NET and computer programming while the person who was asking me had very little background on these fronts.
So, I started thing from different perspective – what would I do to learn a framework / technology which I do not know yet ? How do I plan my learning ?
In this article, I am going to present the “a way” I use for learning any new thing. If you find it helpful, you can also try and let me know if it works for you.
Suggestion – Learning Process
The process of learning is different for different people. Some people prefer video tutorials, some prefer reading. When it comes to learning software technologies, some people directly like to jump on coding and learn by practice.
I generally use combination of these three things. Below is the sequence I follow:
Start with Video Tutorial
This is helpful to see and understand how things are done. Video tutorials can also be helpful in understanding some jargons related to the area of learning. Remember, it is not a movie or a Netflix series to watch in one seating. So, go step by step. Take just one small concept from tutorial. Finish watching it. Make sure you understood the explained concepts.
Get your hands dirty
Once you have seen a concept in video tutorial, you should try using it. If the concept is about coding, try coding few things you learnt. If the concept you learnt was about configuring few services on some cloud platform, login to the cloud platform app and try to configure those services.
Note that this step is very important because of two things:
- It will help you understand how much you really perceived from the video tutorial. Video tutorials are passive. Hence we may never get what we perceived and what we did not, until we really start work on the concept.
- While practicing, our mind is actively engaged and thinking. This would result in getting more ideas and it would also raise more questions in our mind about the topic – this would help in forming stronger foundation for the new learnings.
Read About the Concepts
I believe reading is more active that video tutorials and hence reading helps in remembering more stuff. It would also help in remembering terminologies. Also because you have written the code, you would be able to relate to theoretical concepts
Other advantage is – if the video tutorial you are referring is bit older, then reading documentation would provide latest information. Also, you can choose to read blogs from other fellow developers. This would help in knowing opinions and results of some experiments they have done.
Repeat these steps for learning next concept
Repeat first steps for learning next concepts. Sometimes, even for learning same concept, we may want to repeat and refer some other resource that used before to get different perspective.
Try Building Small Projects
Once you feel you know basics, you can start building projects on your own. Of course, you have a lot of resources available on internet to refer (sometimes the code itself is available). So, we cannot resist the temptation of copying and pasting the samples.
Try to at least create high level design and start coding it. You can surely take inspiration from other designs as long as you thoroughly understand the implications. That way, you are not only practicing writing new code, but also you are practicing to understand the existing codes and designs.
Suggestion – Plan for learning .NET
Previous paragraphs are only telling about general process of learning that I have used in the past. But we have not touched yet to the original question – what is the best step by step plan for learning .NET ?
First Step – Start with Code
Below are some basic things that you can start with. Once you are comfortable with them, you can understand the code written by other people. Knowing language would also help understanding some advanced concepts like JIT, intermediate language, etc.
You can refer a PluralSight path or MSDN learning center for guided paths to learn below items.
- Learn C# (or any other language that you want)
- Learn basic constructs –
- Basic data types –
- Learn about methods, parameters, access modifiers, namespaces, etc.
- Exception handling –
- Read and Write into files or streams
- Serialization and Deserialization
- Then focus on code organization related concepts- Solution, Projects (class library, console, API, Web APP, etc)
- Start with writing console app and few class libraries
- If you are not familiar with
OOPS concepts, it is the time to get familiar with them
dotnet CLIcommands to create projects
- Unit testing framework (like xUnit, NUnit or MSTest)
- Entity Framework Core (an option for writing data access layers)
- IoC containers
Second Step – Framework Concepts
Once you are comfortable with language, you can start learning the concepts related to framework. Some of the basic concepts are listed below.
- .NET Common Language Runtime
- .NET Standard vs .NET Framework vs .NET Core
- JIT compilation
- Memory Management
- Types and Assembly
Third Step – Specialize in specific areas
Once you know language and .NET, then you can pick the type of application development you want to focus on. The applications can be broadly categorized as shown below:
- Web – Web apps or SPA or APIs or gRPC apps which can be accessed using HTTP(S)
- Desktop – the apps which can be installed on a PC. You can focus on
Windows Formsapps or
WPFapps if you want to develop desktop apps.
- Mobile – the phone apps (may be xamarin)
As you know the language already, you can already browse the sample applications / projects on GitHub and try to understand how the code is written in those apps.
Main aim is to understand features specific to the platform you want to target. For example, if you want to be a web app developer, you should know how the incoming http request is processed step by step by the request processing pipeline. This knowledge may not be crucial if you want to focus on Desktop apps.
Optionally – General Tools and Skills
If you already know other frameworks, you might have used the tools mentioned below. But if you are new to the programming, then the below mentioned tools/skills can be very helpful to troubleshoot issues quickly.
Most of the below mentioned tools are not specific to .NET. These tools are being used by many developers who use various frameworks and platforms for application development.
- Source Control – Git using
- IDE –
- SQL – Querying a relational database (
- NoSQL – Querying a NoSQL database (
- dotnet CLI
- Swagger – for quickly verifying Web API contracts. Sometimes it is called as
- Fiddler – for quickly checking HTTP request details
- Postman – for debugging and troubleshooting issues from the Web APIs
- Chrome Debugging Tools – for different types of troubleshooting. There is a full course available on freecodecamp.
Resources for Learning
If you search on internet, a lot of resources would show up – including official documentation and some blogs providing information about their experiments and opinions.
Below are some resources than you can use for learning C# and .NET:
- YouTube Channels
- Channel 9
- MSDN Learning Center
- GitHub Repositories –
Do not get overwhelmed by the keywords and tool names used in this article. Start step by step. Start with first bullet point. Do not look at the next bullet point in the list until you are comfortable with first one.
If you are new to programming, I would suggest to follow all above mentioned steps. Initially, the suggested process may appear to be very lengthy and slow and boring. But once all the concepts are clear, learning any other framework or any new concept would be easier.
Of course, these are all my opinions. This is not the only way to learn new technologies and frameworks. You can always try it if you want and customize it as per your experience and needs.
Note that the steps mentioned above can be helpful if you are beginner. Once you know all the things mentioned here, you may still want to continue learnings to know more about advanced topics (e.g. authorization, authentications, customizing default features, code analysis, patterns and best practices, etc.)
Do you think this post has helped you in any way ? Do you think I have missed any important steps / tools ? Let me know your thoughts. You can also reach out to me on twitter.