How would I learn to code if I could start again

How would I learn to code if I could start once again

A few days ago my friend asked me a question how would I learn web development if I could start once again with my current experience and what I would do differently which inspired me to write this post. After a few years of experience as a .NET developer, I have plenty of reflections about that and I hope some of them would be a good starting point for beginners. In this article, I will assume that you want to focus on back-end development of web applications and object oriented programming.

Pick only one technology and start with a good book

For people new to web development choosing the right technology to start from can be quite overwhelming at the beginning. I started from developing web applications in ASP.NET. However, I had a big problem what to start from: C#, ASP.NET MVC, HTML, CSS, JavaScript, SQL Server, Entity Framework, HTTP, IIS configuration, unit testing, dependency injection, SOLID principles, design patterns, git… Everything seems to be necessary when you are trying to build your own project from scratch and it’s almost impossible to narrow down the technologies you need to one which you can start from.

If you are completely new to coding the good book covering basics will be a good starting point for you. There are plenty of them, but please skip all of the “learn C# in 24h” and take the proper one. I would recommend starting by reading Microsoft Visual C# Step by step. The book covers a lot of aspects of object oriented programming and explains very well the .NET framework and C# features with great examples. When you are reading a book about development try to implement all the examples and play with them to create your own implementation of the feature that you are trying to learn. Without implementing all of these things you will finish the book and forget most of it. Don’t worry if you don’t understand everything. If the book is not enough, try to find some blog posts or articles about the particular feature you have a problem with and do more exercises. Don’t skip it because it will bite you later on.

Find online resources related to the technology you want to master

After covering the basics try some online courses – I recommend Programming in C# by Edx, or something from Pluralsight, Coursera etc. The course will force you to implement some small functionalities which will be beneficial when you start a bigger project. After mastering basics of C# you can try to learn more about ASP.NET platform. Microsoft provides an amazing library of step-by-step tutorials and free courses on Take your time and understand how HTTP works, get some basics of front-end technologies. You don’t have to be an expert in everything straight away but you should know the basics mechanisms behind web development. Try to do the tutorials and then build your own projects based on the lessons learned. You will find a lot of challenges and extra things to learn but nothing can substitute experience gained by building things yourself.

Get a rubber duck

If you can’t find a solution to your problem try to explain it aloud to the rubber duck (or any other object). It’s a debugging technique which quite often helps you to find a solution by explaining your code line-by-line without asking about it someone else and it’s quite efficient in helping you to realize what’s the answer.

Team up and find a mentor

At the beginning of your career, it’s very important to find a right people who can help you develop your skills and will inspire you. Try to go for meetups, find your local .NET developers group, learn to collaborate with other programmers, do some pair programming, find more experienced people willing to share their knowledge, take part in someone else’s projects. You learn the most when someone more experienced does the code review for you. If you don’t know anyone like that you can use online resources like If you have a problem don’t be shy and ask the senior developer colleague or try, otherwise, you can get stuck for hours on something simple because the solution is invisible for you. I wish I had a mentor who could point me in the right direction at the beginning of my career, it would make a lot of things easier and less stressful than trial and error.

Code, code and once again code

Try to get your hands dirty and code as much as possible. Find a project that you care about. You won’t learn to code by reading books or watching videos, you need to implement everything on your own to be sure you know how to use things properly. Don’t start from very complicated projects with many new technologies at the same time, it will discourage you and make learning much harder. Separate things you want to learn and try to master new technologies one by one. Master debugging in Visual Studio, you will have to use it a lot and it will make your life much easier if you use it properly. Something doesn’t work properly? Try to write a unit test to find the issue faster.

Life starts out of your comfort zone

Do not implement things that you already know well, try to get out of your comfort zone as much as possible. Try new languages, new frameworks, different approaches to doing the same things. Do not use shortcuts and from the beginning try to do things properly in a clean way. Read about the best practices and SOLID principles and try to use them in your code. There will be a lot of moments when you don’t really understand why your code doesn’t work, or (even scarier) why it works fine. Don’t be lazy and take your time to find out why. Don’t allow yourself to implement dodgy things just because you are super tired or you don’t know how to do it properly – you will learn much more if you ask someone and find a better solution.

Remember, that everyone learns differently so there can be a better way to learn new things for you. Find your own way, I hope that my experience will be useful for you at the beginning of your programming journey.

Please if you read this leave a comment below with your thoughts about learning new programming languages!

Leave a Reply

Your email address will not be published. Required fields are marked *