What should I do next? (learning c#)

I guess my main question is: When can I say I am “fluent” in C#. I am coding my own games, doing my own basic software, and game addons in C# using the below concepts and some more but am I ready to put fluent in a job resume?

I feel like I am in that no-man’s zone after beginner/intermediate programmer where I can do a lot on my own but NOT enough to currently sustain a career. Maybe I am just insecure. I was using a checklist a user on here helped me make to master basic/intermediate C#:

Syntax
Variables, and how to use them
Arrays, Dictionaries & Lists
If & Switch statments
Loops (While, do-while, for, and foreach)
Methods
Calling methods with parameters
Constructor methods [Edit]
Method Overloading
Classes and class composition (classes with class variables)
Calling methods from outside sources
Classes and inheritance
Method Overriding
Enums
Namespaces
Object Initializers
Indexers


Now that I have mastered everything on that list to where it’s second nature, I am having trouble figuring out what to do next. There is always more C# to learn but when I look at advanced C# books and course they are filled with stuff that I won’t really use in scripting and game development at this point in time meaning if I spent the time to learn those concepts I would likely end up losing that knowledge over time due to lack of practical use.

It’s a morphing, ever changing language.

So this is a thing you see a lot with folks who’ve been around for a few years. The thing to keep in mind that writing code and software architecture are two very different things. Are you specifically trying to get a job in game development or just software development in general? If you’re looking at enterprise software then go get an entry level job writing code somewhere. Read lots of code written by other people. Understand why it works. Come up with ways to improve it. Bring those ideas to management. Ask lots of questions. Sit in rooms full of people who are more experienced than you are.

For game development (do all that stuff above as much as you can) but otherwise just make games. Get yourself into situations where you look at what you’ve built and say “ok - this works but holy shit is it ugly”. Then make it not ugly. Then make it run faster. Then make another game in a different genre.

Learning the ins and outs of a particular language is only one step. Albeit a big step, but just the first one. The nice thing is, as you get better at Software Development (capital SD) you can apply those principles to all your software, regardless of what language it’s written in.

1 Like

Agree with everything Kelso says, but would like to add that the next logical step after learning a language is really to learn the frameworks and platforms you already use at a deeper level. Knowing how C# works doesn’t tell you how Unity works, or how .NET works- it’s just the prerequisite knowledge to begin to understand those things. Start going through the decompiled Unity source code, and the portions of .NET that they’ve made the source available for. Learn about what something is supposed to do from the documentation, and then dig into it and see how the gears turn.

Kelso’s absolutely right that you should read a range of others’ code, and think about how to improve on it, but I submit that there are some terrific examples there in Unity and .NET that would also improve your knowledge of tools you use on a daily basis as well as benefiting your long term software development skills.

1 Like

If you are looking at a career, you probably need to start building a portfolio of projects you have done from start to finish, making sure to put copyright statements in the code. Also, get certification from Microsoft by taking their test, and keep constantly coding, but branch out to other applications besides games, especially database and web related coding. Once you get a portfolio, apply for a lot of jobs so you get your foot in the door. Be willing to relocate if necessary, because those types of jobs are only in certain areas.

Don’t do this, it makes you look like a pretentious butthole :slight_smile: If you’re worried about people stealing your code then don’t make the raw source public; and be wary of companies that want you to just hand over code samples. (Unless you’re explicitly putting stuff out there for public consumption under something like MIT or Apache in which case the license information should be in a text file alongside the code and also included on your Git page or wherever you’re letting people download it)

And don’t fork out the money for this unless you’re absolutely sure you can’t get your dream job without it. There are tons of things you can learn before you start paying for certification courses. And if you land in the right company, they’ll pay for them so you don’t have to.

1 Like

I just said it so you have proof you actually wrote the code. I have no idea what someone hiring would think about it, but one thing they would be a little more certain about is you wrote the code. Personally, I would never bother, but I’m not trying to get hired.

You only have to pay for the test, which wasn’t that expensive the last I looked. If you don’t have a degree, you need some proof you are capable of doing the job and certification is pretty cheap. If you are worried before taking the test, there are some prep type books for about 50 dollars.

If you’re copying/stealing code to try and get hired you’ll get sniffed out by a phone interview. And I can’t reiterate strongly enough to not just hand out code samples to companies unless basic throwaway exercises are part of their hiring process for some reason. Which leads to…

The proof comes when you go in for an interview and know what you’re talking about :slight_smile: (Trust me, I have a Fine Arts degree and no certifications)

1 Like

Agree with Kelso- putting those horrible little copyright notices in your code is completely pointless. They can just remove it, and if it becomes an issue at some point, it’ll be compared the same way it would be anyways- based on when copies that are attributable to you surfaced (harddrive timestamp, server timestamps, app submissions on websites, etc…). The only thing that comes from stamping your scripts with those is looking like a jackass.

Also, my degree isn’t in a related field and I have no trouble at all with jobs as a software developer, because I know what I’m doing. On the other hand, I had a degree AND certifications, and had a lot of trouble with my last career, because I really didn’t. Don’t bother with certifications unless there’s a specific reason to bother, like an actual technical requirement for your dream job, and only if you’re absolutely sure you can’t make it through the interview process without it. Your work should speak for itself, and YOU can speak for yourself- by the end of an interview, there should be no doubt at all that you know your business.

Besides, requiring specific degrees and certifications (to the absolute exclusion of all else) rather than just looking for the best person for the job is a good indication that you’re dealing with a company you might not like working for. At least, I wouldn’t want to.

1 Like

Of course it is throw away code. It’s there as an example of what you can do. And if they are looking at people who are equally qualified, except one has a certificate, most will pick the certification. That’s if they are equally qualified. You have to have some proof that you can do the job. It’s equally easy to lie about your accomplishments. This is proof, more or less. It would be hard to pass the test without knowing the stuff, and showing them your site with code examples and working programs at least shows you took some time to do it.

I’m not trying to be rude here but…you’re derailing the conversation. If you don’t have a career in software development or much (if any) experience trying to get hired in the industry (which it appears you don’t in either case) then please refrain from contributing to this thread as it pertains to getting hired at a company that develops software (game or otherwise).

Spend the time you’d waste on getting a certification improving yourself, improving your porfolio, and making better products, and it won’t be between two equally-qualified candidates.

I don’t know what to tell you- everything I know about the industry and about the hiring practices of companies worth working for tells me that you’re wrong and there’s simply no point to certifications. Only ‘machine’ companies care to that extent, the revolving-door style jobs with massive turnover where they’ve made a business of burning their employees out immediately. Temp jobs, not careers.

Well, OK. But this is an open forum and I don’t think I qualify as a troll or anything. I’ve been to a 2 year associate programming but I still had a few credits left and never finished. These were pretty much drilled into everybody. You did a project of your own for completion which was obviously meant to show your work, and they encouraged getting certified. What I found was I would have to relocate because I live in the country and I didn’t really want to do that. I apologize if I’ve offended anyone, but it is my opinion those things would help for an interview and the school encouraged it.