Self-Taught C# Programmers?

Are there any self-taught C# programmers out there? If so, were you able to land a job? Any advice? I’ve been watching some C# beginner series on the basics. I’m curious if people are getting rejected because they don’t have a CS or Software Eng degree.

Thanks in advance!

I’m mostly self taught on C#. I started out with an open source background and got a job helping to maintain some sites running Drupal, then inherited a few other applications written in C# and learned it on the go. Not the situation you’re describing, but not at all uncommon either.

1 Like

I think the big thing you’ll need is some sort of project you can show as work you’ve done.

Without some sort of education history you need something to show the quality of your code.

2 Likes

The biggest thing with landing a job without a degree is proving to the company you can actually write the code.

They love to see projects you have worked on, especially if it’s similar to the jobs they want to hire you for.

3 Likes

tl;dr: Either experience or showing you can actually solve problems rationally start to finish stand out way more in hiring than credentials*. (* in most places)

codedcosmos has it right, being one of said self-taught C# programmers myself and someone who does hiring interviews for years at this point, I’m not particularly interested in hiring based on resume or school credentials. You learn the hard way that people are overly reliant on that badge despite not necessarily having chops, and many a Masters CSCI graduate you wind up hiring can’t do basic problem solving if you’re not careful. Resumes are practically ignorable these days as an exercise in buzzword bingo IMO.

Having (good) projects that you have created on Github, Bitbucket, or Gitlab for display on your resume will stand out way more from the crowd. Any language. Or similarly being able to show pull requests you have put in to other well known projects that eventually got merged, if you had a conversation with the maintainers and had to make changes, even better. That would immediately put you in top 5% of candidates, despite anything on your entire resume or education history.

Imagine someone that claims they have 10 years experience digging ditches, vs a person who shows you photo evidence of the 1 year they have been digging ditches and getting much better at it. The former is a gamble, but the latter you know for certain you can train.

The main thing people are looking for are whether you really can dig into a problem, think of a strategy to solve the problem, come up with and implement that solution and explain your choices rationally, and be successful in the solution. All of hiring is an abstraction around trying to find that person, and is why previous experience and showing your work is so highly valued.

2 Likes

Why is this even better ?

If you tried to make a commit, got rejected due to technical reasons, and then fixed your broken code so that it now fit the project well enough to be accepted, this means you not only got the skills to fix other people’s code, you also accepted criticism of your work, and improved your own code to the point of acceptance.

This means that I will have a much better employee after six months. Solid hire, in other words.

3 Likes

I really appreciate the advice!

Education trophies are going away thanks to Elon. No doubt you’ll learn things in school, but all that info is freely available online now.

I can’t recommend Design Patterns : Elements of Reusable Object-Oriented Software enough. Its pseudo-code based examples cover pretty much everything you’ll ever encounter in imperative code. Design patterns are the meta-code.

Don’t stop at C#. Learn Python, C++, JavaScript, SQL… all of it. Learn functional programming too. F# is amazing.

I’ve been coding c# since 2001. Got 3 programming job offers, last one is my current job. No formal CS degree - if you’re obsessed and think about this stuff all day - others like you will know.

I don’t think you really need a CS degree either. It certainly helps to have something to point at to get the first job. But other than that not super required. Personally, did not study CS however in my country there are high schools that take 1 extra year to include job focused education. So it’s somewhere in between studying CS and not doing it. Certainly can’t hurt to have basically 5 years of familiarity with programming. Still, Id say it’s fair to say that I only really learned to program after school.

As far as recources to learn go one that I can recommend is this guy

One of the few C# youtubers I don’t get bored by watching. There are lots that I either don’t like the presentation style of, the topics are not interesting or I conclude they just don’t know enough to teach me anything useful. Either way this guy makes very good videos and knows what he is talking about. Not sure how good his more beginner oriented courses are (many of those might be paid for content). He has very cutting edge or advanced content too (which is what I end up watching his content for even now).

I like learning from videos that are enjoyable. If that does not work out I tend to grind threw documentation, look at source code if documentation is lacking. Many C# libraries at this point are open source. And if they are not C# is a very easiely decompiled language. More often than not you get completely readable code using dotpeek.

Would second this. Maybe substitute with technologies you actually care about. But knowing multiple languages can really help broaden your horizon. If I was an employer that employs people for a C# project I would not even necessarily care much about their C# experience. Even if they have absolutely none. If they have lots of experience in java, go, python, javascript and what not. Learning new languages at some point from my personal experience really is not that big of a deal. I would expect somebody who I end up determining to be a good programmer to outperform one that knows only C# in a very short period of time (as in like a months or two tops and he will do better than the guy who just learned C#). Though, many employers might either not get that or not agree. In the second case they might just look for a senior/specialist and not consider you as a beginner anyways.

Re: CS degree, no you do not need one to be a successful programmer. But I would like to make the argument that it is still the most efficient path to learn a bunch of useful and related skills to the programming you wll do. While CS isn’t about programming, a lot of it is very helpful to know.

For instance, knowing things like how an OS is constructed, how a modern PC architecture works and how to program in a highly constrained embedded space where you usually have 4 MB of working memory or something like that, the concepts of data structures and algorithms and how to analyze your code to avoid many bottlenecks from the beginning. I feel those kind of courses have made me a much better programmer than I was before those courses.

At the same time, a lot of the things taught in CS is just to fill in a 3 year degree. If you are lucky, you’ll spend the majority of this time in projects of different kinds, in fields that are fun and exciting to you. Examples that come to mind are web development, 3D graphics programming and Artificial Intelligence. If you are unlucky, you’ll need to take advanced math courses that will have a very marginal application to what you do, and learn a few niche languages that you in all honesty probably isn’t going to come back to.

As for programming itself, I always recommend you learn four specific and different languages, Python for it’s simplicity and widespread availability, C# for the OOP, C for the memory management and JavaScript for the functional and event driven (asynchronous) programming. Been holding steady for the last 15 years, even though Rust might soon replace C. :slight_smile: