Skip to content

Let's Play: Full Stack C# Developer

A coworker of mine in IT operations is beginning to learn how to program!

We were discussing the most pragmatic ways to become a holistic dev,
        I didn't have a perfect answer, but I have a gut feeling road maps are great:

roadmapsh-backend.png

So I will begin a quest to "Let's Play" (1) a road maps.

  1. The act of aimlessly narrating something with no end in sight!

Let's 0-to-100 as an aspiring .NET developer, while making our own road map on the way!


Article Updates
Date What
2023-09-20 Game Plan
2023-09-23 01. The Adventure Begins

Game Plan#

I'll be starting from scratch like a beginner would! (1)

  1. I am a systems administrator w/ strong emphasis on PowerShell & Python. I will be dogfooding this strategy to ensure its appropriate for all I recommend it to.
Material & Road Maps

I put this material in the basic order I'd be trying to start them.

Some will lay incomplete before beginning the next one, but I intend to finish all.

Material
01: Microsoft + FreeCodeCamp Foundational C# Certification
02: C# Learning Roadmap
03: Roadmap.sh ASP.NET
04: Roadmap.sh SQL
05: Roadmap.sh PostgreSQL
06: Roadmap.sh MongoDB
07: Roadmap.sh Docker
08: Roadmap.sh Kubernetes
09: Roadmap.sh GraphQL
10: Roadmap.sh Frontend
11: Roadmap.sh UX Design
12: Roadmap.sh Design System
13: Roadmap.sh Javascript
14: Roadmap.sh Typescript
15: Roadmap.sh Node.JS
16: Roadmap.sh Frontend Performance
17: Roadmap.sh React
18: Roadmap.sh React Native
19: Roadmap.sh Code Review
20: Roadmap.sh QA
21: Roadmap.sh Backend
22: Roadmap.sh Devops
23: Roadmap.sh API Security
24: Roadmap.sh AWS Best Practices
25: Roadmap.sh CyberSecurity
26: Roadmap.sh System Design
27: Roadmap.sh Computer Science
28: Roadmap.sh Software Design Architecture

C# Academy will be used as self guided exams to test comprehension.

If all goes well, the goal is to make my own roadmap.sh style map for you all!


01. The Adventure Begins#

Beginning as a Beginner#

Did you know 99.5% of people can't program?

image-20230923140317.png

So let's jump into the mind of an anxious beginner:

  • Where should I start?
  • Should I jump straight into code?
  • Maybe setup an IDE or text editor?

Turns out, Microsoft and FreeCodeCamp got together to make an Intro C# Certification.

image-20230924203825.png

The first module even has a built-in coding panel, how friendly!

image-20230923032354.png

They get you into action almost right away, while explaining just a little theory.


Gripes & Mindset Fix#

This material is (mostly) great! It doesn't treat you like an idiot.

However, one gripe is the occasional use of terms without definition:

image-20230923040433.png

Alluding to untaught subjects both under-explains and over-explains!
        Younger me would panic: "I've missed something big!"

I find an effective strategy to stop this anxiety is to just write it down:

image-20230923142625.png

If our source doesn't do a good job answering the question, we'll just google it later!
        I treat it like patiently asking a question after a lecture.


Cheat Sheets#

As a slightly-more-than-beginner developer, this exercise is helping me build my site!

Anything I find useful will be added to either of these glossaries:

I highly encourage you to keep a terminology cheat sheet! It helps tremendously.


Rapid Experimenting#

God, how lucky are we to be alive in this very moment.

Microsoft made an extension to jupyter notebooks to allow C#, F#, PowerShell, and more!

image-20230924204836.png

I Highly Recommend installing it, as it will help you visualize what's going on.

For instance, here's an easy to follow class & object assignment:

image-20230924220722.png

Now check how I can output normally & via Jupyter's variable examination:

image-20230924220747.png

Take note how I didn't have to use any using statements or boilerplate!

This brings my favorite feature of shell-like languages to C#: Organically Messing Around!

The only thing I see being a thorn is the fact Console.ReadLine() doesn't work, rather this:

image-20230924225444.png

If I ever decide to teach, I'll have to determine how to address this if it isn't fixed.


Non-Windows People Rejoice#

Good news!

VSCode & the official C# Dev Kit extensions work on all major operating systems. (1)

  1. VS Codium had issues w/ the C# extension for licensing reasons, which is the same general terms as the Visual Studio EULA. This isn't FOSS at all, and you need to be cautious when using for a commercial product!

The C# Dev Kit provides a lot of Visual Studio features to VSCode, like project creation:

image-20230928204049.png

And the Solution Explorer allows adding project files nicely.

image-20230928204026.png

Testing has a nice interface as well!

image-20230929203310.png

.NET Framework stuff is mostly stripped, but that's beyond OK!

Let's see how far we can get w/ VSCode!


VSCode Idiosyncrasies#

Oh geez... how will I explain this sanely?

So, the normal debug launch.json and the top right debug buttons are controlled separately:

image-20230927220554.png

The top right button is controlled by the (mostly working) C# Dev Kit via the settings.json file.

Basically the only annoying thing is the default behavior to use the debug console.
         It doesn't allow for the Console.ReadLine() to be input:

image-20230928193551.png

This can be fixed, however integratedTerminal is tricky to use until they fix it!

As such, we'll use our preferred terminal for console apps:

.vscode/settings.json
{
    // ...
    "csharp.debug.console": "externalTerminal", // or integratedTerminal when working nicely
    "debug.internalConsoleOptions": "neverOpen",
    "debug.openDebug": "neverOpen",
}

Here's the external terminal in action:
Note: VSCode doesn't hold the console open, so you can add this code to hold it open:
if (System.Diagnostics.Debugger.IsAttached) Console.ReadKey(true);

image-20230928203751.png

If you don't mind the debug menu focusing (or its fixed), here's the integrated terminal:

image-20230928201013.png


Part 1 Complete!#

Wow, that was a lot more comprehensive then I thought!

We are introduced into types and general programming logic.

image-20231001104911.png

It also got pretty deep in Console.WriteLine() formatting, I learned a few things!

With the projects, they'll let you cheat yourself if you're not careful.

image-20231001105315.png

The projects are done at the skill level they want and are great!

The editor on the side was pretty easy to work with too.

I will say that this is a great interactive way to get someone started from nothing.
         It will save you time in seeing if someone is serious. Usually they're not!


Part 2#

Hey, I'm glad I decided to use VSCode for this in the background.

Our first assignment is to setup VSCode (and will be used all the way to the end).
         Note: The instructions are mostly Windows w/ small mentions of Linux & MacOS.
         You can easily follow along, but just be aware its not dynamic based off user agent.

image-20231001113235.png

They introduce you to it very nicely as well:

image-20231001113830.png


Learning to Swim#

Very shortly into part 2 does it start asking you to RTFM.

This is excellent, they introduce where to look (that is, search engines & M$ docs).

Here's an example:

image-20231007102603.png

I initially searched "Largest" instead of "Larger" and couldn't find anything in the docs.

So I consulted the internet, and StackOverflow introduced Math.Max()

image-20231007103304.png

I really like that it introduces the main problem solving workflow early to the student.