Programming is a great job and a great hobby. Often, the path people take into a career in software development is by teaching themselves how to code. The vast array of books and online courses ensures that it is easier than ever to learn how to be a C# developer. If I was teaching myself C# again, this is the path that I would take…
The Path From Beginner to Junior Developer
Firstly, I would learn how to make my first console application. In C#, you can create command line applications. Starting with a console application is great because you can focus on the problem to be solved rather than worrying about what it looks like. An example problem could be searching through a Windows directory and writing all filenames matching a given pattern to a text file. You will need an integrated development environment (IDE) to create a console application. As such, I recommend Visual Studio 2019 community which is free.
Secondly, I would learn how to use databases. I would learn how to use Entity Framework. There are some great guides out there, such as Getting Started with EF Core by Microsoft. I recommend using SQL server, which has a free version called SQL Server 2019 Express. Using Entity Framework and SQL Server, modify the example problem so that instead of writing to a text file, you write to a database.
Thirdly, I would learn how to write automated tests, such as xUnit. Test projects allow us to quickly run our code with various scenarios to see whether it performs correctly. This is vital for making sure that any changes you have made to the code have not broken a previously working feature. In our example project, we can use xUnit to check that for given sets of inputs our program will always provide the same results. You will quickly find that testing against real databases and file systems is difficult. Perhaps, the solution is using interfaces, so that you can create fake versions of your repository pattern and file system search…
My example project was simple and quite dull. I recommend thinking up your own problem and using the steps above to solve it as this will make the learning process more enjoyable.
Once you are confident with the above technologies, you are pretty much ready to apply for jobs as a Junior Developer. If, however, you would like to take your learning a step further, please see the recommendations below.
Taking Learning One Step Further
1.Learn developer operations – OCC uses Azure DevOps. This cloud service can be used for free for up to 5 users. Learn how to use the git repository to store your code. There are plenty of ways to interact with git, including the command line for the hardcore – most of my team use the git module in Visual Studio. Now you have your git repository and automated tests, learn how to create a build pipeline in Azure DevOps that will build your code when it changes and then run all your tests for you automatically. An alternative to DevOps is GitHub, which is very popular with developers creating personal portfolios of work.
2.Learn how to make a website using ASP.NET Razor pages. Out of the box you get templates, which will help you get started. If you need help with HTML and CSS, I find w3schools a great resource. Continuing with our previous example, you could build a website that allows a user to explore the data stored in the database by your console application. Today, we install most of our websites on Microsoft Azure. It is possible to install websites to Azure on the free account however, after 12 months any SQL database you have will cost a minimum of £4.56/mo. on the Basic DTU service tier (see Azure pricing).
If you are at this point, you are doing great and I hope you are applying for jobs. If, however, you would like to to learn even more, please see below.
1.Learn how to make a windows application with WinForms or WPF. I find WinForms much faster at building quick applications, but WPF provides a much more polished result if you have the time to learn it. Continuing with our previous example, you could replace your console application with the Windows application. Having a UI allows you to add more options, and the FolderBrowserDialog will allow you to make it easier to select the directory to search.
2.Build a mobile application using Xamarin. Xamarin allows us to build iOS and Android mobile applications using the C# language. (Developing Android applications is easiest, because you can build APK files from Visual Studio and copy them onto your device to install them). Continuing with our previous example, you can replace your console application with the mobile application and instead of searching folders, get the user to collect interesting data using the mobile phone’s sensors.
At OCC, we do not only use Xamarin for mobile applications, we also use Flutter and React Native. These are not C# based, but are another avenue to explore if you discover that mobile applications interest you.
At this point, I hope you have found the area that interests you the most. Play with it. Try different personal projects. There is no substitute for experience. The process to complete this list is not quick but if you manage to make it to the end, you will have acquired a wide range of skills that employers would love to have.
If you want to become a professional Software Developer, I would advise you to get a job at a company like OCC. We will take your self-taught skills and turn you into a professional Software Developer. Our careers page shows our current vacancies.
Good luck on your journey.
Tim Palmer, Head of Project Delivery.