Need advice quick!

Started by
13 comments, last by Brain 7 years, 3 months ago

Hello friends,

Quick background: I'm a 29-year-old former restaurant chef who barely made it through high school. In the past few years, I have turned my life around and am now in community college while working part-time. My goal is to get a job programming in the games industry(indie) a.s.a.p. I have recently caught up on math and am taking Precalculus and Trigonometry this semester with the goal of Linear Algebra down the line. I have also taken a computer basics class and an introduction to C++ which covered the basics like variables, if statements, i/o, arrays etc. My plan was to take the second level of C++ this semester and that is where my problem arose. The teacher for this class was undetermined over the break and what we ended up with was an old school programmer, who barely speaks English and has never taught a class before. He blitzed through the first lecture with none of it being relevant to what we learned so far. When questioned about all of this new material(like memory allocation) which he seemed to assume we already knew he mumbled and drew some very small, illegible, writing on the white board then just said, "read the book, it's fine". He then assigned 3 pages of in class homework out of the book and said, "I'm not going to grade or review this, but do this for work". I think it will be a waste of time to learn like this. I'm not looking to be coddled, but I am looking for insight/feedback and I don't see a lot of that being given in his class.

This leaves me with 2 alternatives, both of which are online courses provided by my community college. One is the exact same class with a different teacher, but online. I have some hesitation about delving deep into C++ through an online course, because of its complexity. The other is to switch over to an online C# class which is a replacement for the 2nd C++ class. This sounds tempting to me as C# sounds easier to grasp online than C++. My real goal is to be able to work with other indies to make games a.s.a.p. and while I'm sure C++ would be great in the long run maybe it's better to learn C# now so I could get up and running with Unity and start making games with people faster? I know I will have to learn C++ at some point, I'm just wondering if the sidestep over to C# could actually get me to my goal of a job faster? Especially since I'm specifically looking to work with indies. My community college doesn't have any C# courses after this one, while they have one or two more C++ classes. I would need to either switch back to C++ or find alternative resources after this semester. Keep in mind I'm not going after any sort of degree only relevant skills. I have until Friday to decide all of this. Thanks!

Advertisement
C++ is hard to learn, and with a bad teacher it will be worse.

In my opinion, what a beginning programmer needs to focus on is general programming concepts that can be applied to any language. C++ hinders this by also forcing you to learn an incredible amount of language-specific nuances that basically no other languages are burdened with.

Even though the C# course might be sketchy (I've never tried an online course), I suggest switching to it for now. C# is much simpler and you'll be able to get a more useful programming foundation more quickly.

You will eventually need to learn C++, but you can do that more quickly later on.

Hi hi,

C++ is not recommended as first language to learn, it's a complicated language, and it doesn't mind if you do stupid things. It's great if you know what you're doing, but until that time... :)

Instead, here we recommend Python or C# or Java or so as first language. They are simpler to learn and use, and try to help you, avoiding some of the traps along the way.

If you have one of the latter under your belt, switching becomes easier, although C and C++ have a few surprises with variables being values rather than references :)

In general though, experience can be re-used to a large degree between different languages. In addition, knowing more languages makes you more aware of the strong and weak points of each, which never hurts.

So yeah, other language like C# is recommended to start with. Unity is generally considered very good too (never worked with it, maybe I should try it some day), so that should be fine.

https://www.gamedev.net/resources/_/technical/game-programming/your-first-step-to-game-development-starts-here-r2976

may be of use to you, for getting inspiration of what to make.

Otherwise, just dive in, experiment, ask questions, and above all, have fun! :)

Welcome

Hello. Few words of advice. Also, I have a few civil disagreements based on my education and work experience.

C++ is not recommended as first language to learn, it's a complicated language, and it doesn't mind if you do stupid things. It's great if you know what you're doing, but until that time..

This is bad advice. NOT learning something because it is complicate is the antithesis to learning. AND you won't even learn to "know what you're doing" until you learn it. Learn the core, then the rest will come. Yes, it will be hard, yes, it will take time, but if that is too much for you, then you need to reconsider your path. Something like web app programming would be more suitable. To paraphrase my bagpiping teacher, "if you keep learning and doing things the stupid way, you will continue to be stupid". I cannot begin to stress how many bad software engineers and programmers I have come across who learned the "easy way".

what a beginning programmer needs to focus on is general programming concepts that can be applied to any language. C++ hinders this by also forcing you to learn an incredible amount of language-specific nuances

Memory allocation, templates, mutability, references, and values are all common programming terms - not nuances. A lot of high level language classes don't teach this (as I learned when applying for several TA positions, which i rejected because of this fact). Not know them or learning them after the fact will only hurt you. Yes, there are things you may learn that you don't need to for 'higher level languages' such as move operators, constness, and sweet memory swapping tricks, heck - even memory allocation and management. But, learning the foundations of computers and programming leads to a better understanding of programming. Yes, design is important. But you can learn that in C++ as well. In fact, you don't even need to learn a language to learn system architecture and design. Usually there is little code involved in the books that discuss this, just non-language specific psuedocode.

Moving away from that. My personal experience, which puts me somewhere you are right now:

I learned programming starting with C in high school (class of 2010 so I am not some old firmware/electrical engineer who had no other option than to learn C). Then all through college we learned only C++. I took internships where I work in Java and C# - they came easy because I had to learn the hard stuff first. Besides, most languages based on OOP are the same and really only take about 2 - 4 weeks to pick up. The hard part is learning all the frameworks and libraries for each solution you are trying to make. When I interviewed for any of those jobs, understanding how real programming works only helped me in the process.

Stick with C++. Even if it is hard. It will be required for any serious programming position, whether they ask for it or not. More so, most AAA and popular game engines are written in C++. There is nothing worse than a programmer that doesn't even know what memory allocation is (it happens). C# is easy, but if you do the hard stuff first, the easy stuff won't be a challenge. C++ is to programming languages like Latin is to the Romantic languages - the core, hard, but easier to pick up derivatives if you learn it first.

Secondly, I spent my entire time at University doing online classes. It is lonely and difficult to get answers to your questions, especially good ones. The root of college is a Latin word meaning "community, society, guild" and it is definitely a bonus to stick with it. If you find this teacher insufferable, so will other students. Get together with them, do study groups. It helps a lot. Intelligence breeds intelligence. I feel I fell behind because I was alone online learning programming. Plus, online learning is even more heavy on the independent learning path than having a bad professor. Oh, and you get bad professors online as well, which is even worse than in person.

Best thing I did for programming was A) take onsite courses with like minded individuals, and B) join a local, physical group of hobbyist game developers (look for a meetup or igda guild or something). C) learned the hard stuff no matter how frustrating.

I really hope you take my advice.

Also, take lots of high level math courses. And, after reading your post again, it looks like switching to C# for only one class and then back to C++ will only hurt you even more. Struggling is a part of learning. All programmers struggle and don't understand when they first get into it.

EDIT: P.S. There is nothing stopping you from learning C++ in school and C# with a group of hobbyists in Unity

I recommend getting a good introductory C++ book and just working through the entire thing. This is basically how I learned C++ after taking a single "Intro to C++" class at university. After you finish that book and worked through all the examples, then you can move on to other mid-level books and start working on some projects on your own.

The whole "C++ is too hard for beginners" thing is b.s. My 10-year-old niece is learning C++ from me teaching her a bit and her doing some online stuff and reading a book I gave her... so I'm sure a motivated grown intelligent person can do it.

Thank you for the quick replies, everyone! There are a lot of good points I'm seeing on both sides. It really helps to see the reasons laid out clearly. A less educated version of this argument has been constantly going on in my head for some time. I feel like this is why so many people say "it doesn't matter what language you choose, you will get there." My situation is a bit different than your average college kid, though.

I am perfectly willing to stick out the times of confusion to learn C++ and get a great programming foundation. The biggest factor that has me wondering if C# is better for my specific situation is the time it will take to become useful. I need no sympathy, that being said I am completely miserable at my current dead end job, which pays badly and does not engage my brain in any way, shape, or form. I'm also bleeding money as I can only work part-time to keep up with my classes. I have found a creative living situation but I need to get out of all of this a.s.a.p. It is not sustainable. So, bottom line I know C++ is better in the long term, but am I wrong in thinking that if I dedicated complete focus on C# with the idea of getting Unity proficient I would be able to get a job with a small studio much, much faster? Instead of learning all of my foundation with C++ and then moving out from there? Certainly, if I did C#/Unity and landed a job I would continue my learning and get C++ under my belt as well. I want to be a good programmer, but I also really want to get in as fast as possible. Opinions greatly appreciated!

So, bottom line I know C++ is better in the long term, but am I wrong in thinking that if I dedicated complete focus on C# with the idea of getting Unity proficient I would be able to get a job with a small studio much, much faster?

With you being so early in the game. I think it would be better to continue learning but pursue a job at a legitimate game company RIGHT NOW by applying for Quality Assurance positions. First off, looking at some of the positions posted on Indeed, some of the requirements are a GED, experience playing games. Here is one from Cloud Imperium Gaming:

Required:

• High school diploma or equivalent is required
• College degree or equivalent work experience preferred
• Strong bug-writing and communication skills
• Ability to stay organized, meet strict deadlines and exhibit great follow-through
• Ability to be flexible in a fast-paced and always-changing work environment
• Detail-oriented and quick learner who works well with a cross-discipline team
• Familiarity with Microsoft Office
• Strong passion for gaming

An what is even better, learning C++ is seen as a plus for these positions. Then, when you are done with school, you have experience and credit in the gaming industry already! Also, the pay cannot possibly be worse than what you are getting now, and even then, you get industry experience.

TL;DR, keep doing the C++ thing, apply for QA positions RIGHT NOW

ALSO, you could probably find a mentor if you get one of these positions.

If by some chance you have the time, energy, and resources then it might be a good plan to learn both.

Being a "good" programmer is going to take years of experience and is somewhat subjective. Getting an entry level job with some company is going to depend on what's in demand. So, I'll suggest doing a search for the kind of jobs that you're hoping to land and get a feel for what it is that companies are looking for. Tailor your education and training towards those results. If demand is more or less equal then take the path that is most interesting and convenient for you.

I would do the C++ class. C++ is mainly challenging to learn because the language is one giant corner case. What something is doing or how it is working can change a lot depending on context or how you write something, and the only real way to beat that fact is through practice and memorization, after awhile the facts start to work their way into your head.

That said if OP has a bad teacher then frankly their best chance to really getting to know the language will be to use their other resources, i.e. the internet. Keep in mind just because you're taking a class doesn't mean you're restricted to the class, you can look things up online, ask us questions, ask other people questions, use sites like stack exchange. I don't think learning C# just because "it might be easier" is a very great strategy.

C++ Is a strange beast because it actually is pretty easy to learn the basics. You can pick it up in an afternoon. The problem is all that syntax you learn has a lot more depth to it that only really pops up in different context and such.

Thanks, very helpful replies. Seems like a consensus that C++ is the best foundation to build from.

QA isn't something I've considered seriously because I've heard so many bad stories. It seemed like a gamble if you'd even have access to the development team let alone them be open towards helping someone new. I will have to research it more deeply in my area. I'm in East Bay, California(across the bridge from S.F.) if anyone needs a passionate QAer : )

One worry I've had about C++ is I see people with years of experience who are still searching for a way into the game industry. My guess is because their programming experience doesn't equal game programming experience? Do any of you have recommendations on how to best tailor my C++ learning towards game development? Obviously, if I went with C# I would jump into Unity, Unreal seems more intimidating and less indie/beginner friendly. What are the best ways to learn game making utilizing C++?

This topic is closed to new replies.

Advertisement