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.
You can also use any other text editor like Sublime Text, Atom or even Vim. If you’d like to see the source code of Microsoft’s technologies, navigate to the github.com/dotnet.
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).
Awesome initiative! Good luck!
Thanks! Luck will be needed for recording the audio & video without any issues ;).
I came across your course by accident (looking for some developer courses) and watched the entire video. Great stuff! Looking forward to the rest of it!
Thanks, I’ve just published it, so it’s great to see that you were able to find it somehow :).
Pingback: Become a Software Developer – introduction – Patryk Huzarski | Personal Blog
I found your course on wykop and that’s what I was looking for long time. I want to write code just for my needs. I don’t understand concept of how to start coding and where all of this thinks come from. I believe here I will learn everything, finger crossed 🙂
Great to hear, just make sure that you’ll make use of the listed resources (at least a part of it), as it’s really needed to study on your own. I want to describe some general concepts as well as good practices and focus on these part of the language that I found difficult at the beginning.
Sorry for my bad English
Thanks, and your English is good so far :D.
Pingback: Doing things pro publico bono | Piotr Gankiewicz
Pingback: Becoming a software developer – episode I | Piotr Gankiewicz
Thanks Piotr, great job!
I will be waiting for next parts, great conception.
Hello, thanks! The second episode will be aired in the next few days :).
Nice to see that all materials are in English (even though YT videos are in Polish). I have stumbled across your course by accident and boy I am happy I did. Gonna try to create some sort of system of learning to not give up on it on the way.
I gotta admit it, you break the stereotype of looking like a typical programmer (skinny or overweight). Due to that fact from my honest side it brings more value and motivation (oddly?) towards it.
Fingers crossed m8, I can see a potential in it. Keep up a good work! Like the say, true results come after few lines of not giving up. Best of luck!
Thank you very much! We did record it in Polish to make it more available to our local community, however, all of the rest is in English. I hope that one day I will be able to record videos again in English – I was thinking about subtitles, but I think it’s not that good idea anymore.
I do like to workout a lot, some of my friends being programmers enjoy it as well, so it’s cool to hear if that makes you more motivated :). Thanks, and best of luck to you too!
A long time after the release of this course, but I have a question about sources for learning. Hopefully, you will respond 🙂
Do you know any classic, paper books about topics you’ve mentioned in this introduction?
I mean, for example, about how compilers work, an organization of heap & stack and memory in general, multithreading and processes or even about some good practices mentioned in the first/second chapter (neat classes, encapsulation, the overall architecture of applications etc.).
I’m aware of two things. You will perhaps suggest googling on my own. Ok, I understand the purpose of being some kind of searcher, especially within software engineering, but not everybody graduated successfully technical university – you must have read some good stuff or just heard about it. The second thing, you will definitely share some links – that’s really great, but from time to time people (cause I assume not only me ;p) have a need to turn-off computer and read same real book – do you know some titles (written in polish or english) you would recommend for person who didn’t graduate technical university, but works as developer (and wants to be better at job)? With plenty of examples, written in simple language and not obsolete? If yes, could you give some, please? If not, no problem, I’ve just trained my english 🙂
And of course – you are doing a really great job or actually you did! 🙂
Thank you very much. Actually, I have no other resources other than these few websites and books that I recommended. I got a lot of knowledge about things such as compilers, threads etc. during my studies, thus I can’t really recommend any book related to such topics, however, I’m pretty sure that there are plenty of them available.
Personally, I like to browse reddit (dotnet, programming, opensource), hacker news, MSDN weekly etc. and look for the interesting topics.
It’s a pity you don’t know any other paper resources but thanks for your reply and for your course in general
I have a question. Which distribution of Linux are you using? Now i have a lot of troubles on Fedora 26, mainly with docker, so i think about changes.
Thanks a lot for your work 🙂