What technologies or framework should a C#.Net developer know about?

in #framework5 years ago

It is difficult to know what level you are at so forgive me if any of this seems trivial. This answer is aimed at someone in or just out of High School/College

VB.NET is an excellent beginner’s language and whilst it can offer classes and advanced data structures it can also feel like you are just programming a line at a time.
I wrote some dreadfully formatted code in college on VB.NET but the learning outcomes you get are just the best. It is from the “dodgy code” that you learn the most and the quickest and the satisfaction of finding your own hacky solutions to problems will stand you in very good stead for the future.

Now that you have advanced to C#, I would say spend some time in WPF (Windows Presentation Foundation) - simply because you can use it to write any front end program - very nicely.

I was writing 3D animation software (albeit a little sloppily) within 18 months exposure to C# with the WPF Canvas element.

Unless it’s massive performance you want for games or music software production you want in which case you are probably looking for direct access to the sound/graphics card anyway and C++ is probably your best candidate.

So, you’ll make one of those horrid “Restaurant Calculators” and then probably space invaders and after that the world is your Oyster.

Next steps, I’d connect a database using “System.Data.SqlClient”, a pitfall to watch out for is that it is unpleasant to say the least running SQLSERVER Express as a service on your home machine as it uses all the ports for reporting etc.

So good practise would be to run your database in a Virtual Machine. If you have hyper-V (Windows Professional only) you can do this easily with a technology called Docker.

The alternative would be to run MySql (on linux) in a Oracle VirtualBox environment.

THE MOST IMPORTANT THING when connecting to databases is to get used to using Parameters in C#. They eliminate SQL injections.

Write anything with string manipulation in your SQL queries and you will be laughed out of that job interview.

It’s not difficult and it works beautifully.

So given you can do WPF,

and you have made your first dodgy architectural building block app, that counts the glass bricks and tells you the cost of all the materials and can output it to a text file.

Your next step must surely be to find some free resources on the web.

Libraries exist for more or less anything:

writing PDF files,

making VoIP calls,

validating phone numbers,

Optical Character Recognition

You need to get used to using them and adding them to your C#. Sadly they are often written in C++ which can be tricky to compile but if you can get .dll files you can simply add them as a dependency.

But, why am I banging on about WPF so much?

The truth is, what all companies want is not to install a third party .exe file on all their machines and manage updates and wonder if it contains a trojan…

What everyone really wants is browser based software - or Software as a Service.

The classic examples of this are Word/Excel 365 which look like the real thing, actually have the same “back end” (I am reliably informed) but run all of the User Experience (UX) in HTML Angular Bootstrap etc.

I would rate WPF highly because: unless you know what you want to create and how you want it to look moving on to SaaS-like apps will be a drag.

Anyway, after WPF you should move to ASP.NET MVC.

The Models, Views, Controllers paradigm will get you a very long way for any kind of business of info based web application.

The notion is instead of having many variables and just outputting them into HTML via strings, quotes, unquotes, etc.

You actually look at what you data objects are:

A person has:

a name

a job

an age

and address….

oh what’s an address like:

line1,

line2,

town city.

That’s the model, and it’s basically a C# class.

then you have the view:

if it’s just 1 of them: how do you display it?

If there are a list how you you display them?

Finally the controller:

If the browser asks for person number 10 how do I get it from the database.

SO, IN CON-CLU-SION:

get to grips with WPF and ASP.NET MVC,

Git everything you can: even your photoshop projects and music sequencing (if you do that) (turn on large file support)

don’t be afraid of Linux, the web runs on it and you can spin services up cheaply and easily.

Use Docker to compartmentalise your web projects.

Get libraries going.

Download some open source,

libraries such as OpenCV (open Computer Vision)

(stick with simple programs or you will get lost trying to pick bits of code out)

get as many resources as you can from the web (3d models, graphics, datsets)

MSDN is awesome for explaining things in the C# framework.

Bon chance and happy coding.