Welcome to the first, or actually, the episode number 0 of my first online course ever named “Becoming a software developer”.
And I’m here to help him and all of you who will follow us – simple as that.
Now, you may wonder – why would I need another course? There are hundreds of them available online, and yes, you’re probably right, yet…
This is not going to be a typical course e.g. let’s learn some Java, just give me 5 hours and I’ll guide you through all of the keywords, if/else/switch statements, methods, generics etc.
No, no, no – for sure, I’ll be talking about the language (C#) and the platform (.NET Core), however, this course will be all about becoming a programmer in general. I’d really want to share my experience by teaching you good patterns and practices and most importantly by telling you what it means to be a software engineer – what drives me, what makes me excited about programming, what’s the reasoning behind some particular decisions, what questions should you ask yourself while building a software and so on.
This is going to be a holistic course about becoming a software developer, who not only knows how to code but moreover is aware of how the software is being built from the scratch.
And it won’t be easy – you will feel like a student at the university taking some difficult lectures. What you can expect from me, is a vast number of learning resources that will be attached to each one episode. However, you will need to study them on your own, as I will guide through the core concepts of programming and creating a real-life application (back-end HTTP API with database and tests), but not particularly through all of the basic keywords of the C# language or theoretical concepts related to the software engineering.
But trust me, it will be worth it – the more you’ll study, the more practice you’ll get and eventually become a better programmer.
It’s also worth mentioning that Patryk will be publishing posts on his own blog about the whole process of learning how to become a software developer – so make you sure you’ll follow him as well.
Before we start, I guess that you’d like to know better who we are – me (the tutor) and Patryk (the student). Therefore, let me give you a few links to some of our public profiles:
- Hacker News
- YouTube (official)
- YouTube (unofficial)
And finally a few important remarks – everything will be written in English, however, the episodes will be recorded using Polish language, yet one day I might decide to add English subtitles and make it understandable for folks who do not speak Polish, which is the reason of using English language for everything else. Also I’d like to encourage you to ask questions and please write them below the particular episode so we can keep them in a single place. And one more thing – be a critic to what I’m doing, as it’s very for me in order to make this course better with each next episode.
The whole course has been divided into 4 parts containing 4 episodes each that will be released every weekend. The first episode will be available in 10 days (26th of January) and the next ones every next 7 days.
I hope that by now everything should be clear, so let’s dive into the actual course.
The starting point
- https://www.microsoft.com/net – if you’re using Windows OS, download .NET Core from here.
- https://www.visualstudio.com – probably the best IDE while using Windows OS.
- https://code.visualstudio.com – make sure you install the C# extension.
- https://www.jetbrains.com/rider/ – great IDE, but still a little bit unstable.
From this day on you have 10 days to get familiar with at least part of the following topics:
- .NET Framework & .NET Core
- C# programming language basics
- CLR, MSIL
- Managed code
- Compiler & compilation
- Thread, process
- Value type vs reference type
- Heap, stack
- Object allocation in memory, processor registry
- Big O notation
Especially please take a look at the basics of the .NET Framework and C# programming language. What is a variable, class and method, how to control the flow of application using if, else, switch, case statements, what are loops for, foreach that allow you to iterate through collections like List or Array etc.
You should play with the language a little bit, try to write some very simple methods (e.g. add two numbers and write the output using Console.WriteLine()) and some basic classes like User that will contain for example FirstName, LastName and Age properties. Also please take a look what the static does and what are the access modifiers: private and public. The protected one is related to the inheritance that I’ll talk about during first episode.
On top of that, it’s very important to study the very basics of the software engineering theory – you should know the difference between the thread and process, understand what is a compilation and the difference between value type (all of the primitive variables like numbers or characters) and the reference type (all of the objects like classes). Finally, take a look at the Big O notation, as it’s crucial when it comes understanding topics related to the performance and amount of computation time required e.g. to sort a collection of some objects.
In the first episode I’ll mostly talk about the following:
- Designing proper classes.
- Why we should strive for abstractions.
There are a lot of great books and I’d like to recommend especially the following one C# 6.0 and the .NET 4.6 Framework – a few years ago I read one of its previous versions and all I can say is that it is a perfect book, as it guides you through the most basic concepts into more advanced ones with a lot of examples and very clear explanations.
I do realize that most of the books are for free as well as video tutorials on pluralsight.com and udemy.com, yet if there’s something worth spending your money for, studying and science, in general, are definitely one of such things.
However, you can get free access for 3 months to the pluralsight.com simply by creating your account on Dev Essentials and generating promo key. Moreover, if you’re a student you can use the DreamSpark and generate additional keys for Pluralsight here (as long as your university belongs to the MSDN Academic Alliance, but most of them do).
Below, you can find some of the resources that you can use for studying on your own, but I encourage you to start searching for even more (just like in regular studies).