• Advertisement
Sign in to follow this  

Studying Material for a Regular C++ Job, Please Help.

This topic is 448 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I searched for entry level jobs but the posts seemed to be for game development.  This is a post about entering the workplace in general c++ programming.

 

Please help me if you can.

 

I posted a message back in June of 2015 in the game programming forum for recommended studying material.  The following books were recommended:

 

# "Effective C++" Scott Meyers   -  2015
# "More Effective C++" Scott Meyers -2014
# "Effective STL" Scott Meyers  -2014 (ended up not being recommended.)
# "Exceptional C++" Herb Sutter -2014
# "More Exceptional C++" Herb Sutter -2010 

# "The C++ Standard Library" Nicolai Josuttis -2013

 
I have read two beginning level books and understand them okay with a little review.
 
I have also learned some knowledge on c++ strings, smart pointers, exceptions, lambdas, templates, Standard Library: iterators, adapters, containers, and some design patterns.
 
I am fairly certain I am at the intermediate level now.
 
I read all 6 of these books and they were pretty difficult for me, I gained some familiarity, I guess.
 
Now I am going to read all of them again and I think they'll have more meaning for me.  At the time of the post they were said to have "aged fairly well" I wanted to make sure that these books would still be considered worthwhile before I invest all my time in them again.  I am really hoping they are not to outdated.
 
 
 
I read somewhere that most programmers don't make it past the beginner's level.
 
 
 
My plan now is really to get a job as a "regular" C++ programmer instead of game programming and perhaps than break into game programming later.
 
I think this is more sound and would be a lot easier and there would be more jobs.
 
So what I'm wondering really is for regular C++ programming at the entry level can someone who has completed the beginner level be hired or is more intermediate level work needed.  And If so, how much more?
 
In college I seem to remember that "there are easier level programming jobs and difficult level programming jobs." 
 
 
 
I also read : C++ Common Knowledge - Essential Intermediate Programming -2005.
 
This book alarmed me because it had knowledge that seemed pretty common place and was taught on a more beginner style than the in depth.  It made me wonder if there are broad concepts that haven't been touched upon yet.
 
However I am hoping that by now everything I need is in the books I have read.
 
Perhaps it is because I didn't read the recommended :  "Accelerated C++" Andrew Koenig and Barabara Moo.
 
The material that alarmed me were mainly : function objects, pointers to class, and pointers to member functions.
 
Perhaps it is possible that these topics were also covered though.
 
 
 
So, how much of all this needs to be learned for an easier, easier career of C++ programmer (not games yet?) 
 
 
Thank you so much,
 
Josheir
 
The C++ Standard Library text-like book ended up being easier to read than the in depth series books.
Edited by Josheir

Share this post


Link to post
Share on other sites
Advertisement

What have you programmed?

 
We'll maybe about five years I worked on a tile-based adventure game, I took a year off and never completed it.  I'd say I finished 92% of it but after the break it was just to ill formed to continue.  There was also an organization/backup issue.  It had three maps, movement, 2 dungeons, three stores, attack screens, conversations with characters that were dependent, graphic blits, save/load, and a hardware serial screen that I ended up not using.
 
I learned some lessons from it like keeping it simpler especially variables and more modular (much smaller functions) and the need for great comments.  Things people tell you about but you might not do immediately right.
 

What I am missing in your list is algorithms and data structures. Did you study that?

 
Yes, I did study some data structures in C.  And in C++ I studied stacks, queues, and linked lists.
 
I'm hoping all this will be enough for an entry level job.  Like I said I don't remember to much about what I had read and If I don't know it maybe that's okay is what you all are saying I think.  Without learning what's  in the books I just wouldn't know these things and I don't know if I need them.
 
 
Someone mentioned that things like inheritance have to be learned practically.  And  it is difficult to find examples for actually using classes, and friends.  The program  I worked on only used one class and I haven't found to many examples for example code of classes.  That's what I really name.  I turned to design patterns because I couldn't find this.
 
To learn for example special syntax on partial specialization templates, you know what I mean, I need to do the reading.  That's why I asked if knowing beginning code is enough for a job, so I demonstrated my actual programming ability to everyone.  Maybe there is a mentor at the job that explains things and there is code to look at to do things like this?
 
I would still like to know if I know enough and you all said I do really if I can get it through my thick head!  I know plenty and if I don't have enough experience I need to do that.  I think I mostly I do, and there are some practice problems I could work on that don't have to be big.
 
I just can' t believe how much knowledge there is and I want to be confident.
 
Lastly, I have a serious concern for exception handling.  A real serious concern.  I understand catches, throws, tries, etc. But are people really using this all over the place for non-built-in types , or would it not be a major concern for me.  
 

It might also help you to be more specific on what type of programming job you want to eventually be doing.  Just saying "c++ programmer" is too broad, because oftentimes getting a job in one field wont require the same types of skills as in another.   I've interviewed many, many programmers for game dev positions who are experts in some unrelated programming specialty, but I would not hire them as an entry-level game or engine programmer.

 
Well, anything entry-level really that seems interesting, I don't understand how entry-level has a specialty really, but maybe you are saying I should study in that area too.  Something general I guess, maybe GUI and I should try to use a library.  Networking seems cool, has it been all done yet?  Like brick houses I guess.
 
Thank you, I do have five years experience, I don't need more knowledge so they'll help me I guess,
 
Joshue 
 
Maybe you have suggestions on a specialty?
 
 
 
 

Share this post


Link to post
Share on other sites

 

 
 

 

Well, I can expand on what I said about different fields sometimes needing different skills.  And BTW I'm speaking just for what I typically look for in an entry-level game or engine programmer.  If you're looking at non-game positions, this might not apply.

 

But, when I've interviewed people for entry-level positions, by the time the resume gets to my hands it's already gone through a bunch of other people in HR that compared it with others.  When I look at it I'm looking for any relevant education (degree in CS, math, physics, etc) and relevant experience (game jobs, hobby experience, shipped games, demos to show, etc).  Then in the interview (and the phone screening before that) I look for some basic knowledge of things like 3D math, general game engine/tools concepts, and general C++ knowledge.  The C++ stuff is never the majority of what I look for because to me if you're not at least competent in 3D math... I cant really use you.  If you dont know what a shader is, or what alpha blending is, or what a game editor does, or why game updates and render need to be separate... then again, I cant use you, even if you're really good at C++.  The thing is, I and the other programmers cant take the time to educate you on basic non-C++ stuff that you need to know to do the job and work with the designers and artists, the tools, the engine programmers, the tools programmer, the gameplay programmers and scripters, etc, etc.

 

So if it's between a good C++ guy who knows nothing about games and a less-good C++ guy who knows the basics of game development and has some hobby experience writing a small game or some shader demos... I'll take the latter.  

 

Like I said, I've interviewed people who have worked in C++ for 20 years, but I just cant use for an entry level position.  But someone just out of college with some hobby experience might be just fine if he's 1) competent in C++, 2) competent in 3D math, and 3) has basic understanding of game engine/tools/art/pipeline stuff.

 

Hope that helps.

Share this post


Link to post
Share on other sites
We'll maybe about five years I worked on a tile-based adventure game, I took a year off and never completed it.

 

 

 

I do have five years experience,

 

 

These don't really fit together, for me. You spent five years on one project, then took a year off, and then decided not to finish it? And you write no other software in the interim? Technically that might count as five years' worth of programming but it's not going to be a five years that rates very highly. 

 

Also it's worth noting that it doesn't count as professional experience, so I'd be careful how you frame it when you apply to jobs. Often recruiters and interviews expect "experience," unqualified, to mean professional, and this project isn't, so if that comes out and they thought you meant professional experience they'll be very unhappy. Your safest bet here is to make sure you always describe this experience as "hobby experience" or similar.

 

 

 

Yes, I did study some data structures in C.  And in C++ I studied stacks, queues, and linked lists.   I'm hoping all this will be enough for an entry level job.

 

This is really, really foundational stuff. That you know it doesn't rate at all; this is the kind of stuff that's only remarkable if you don't know it. So hopefully you know it backwards and forwards and upside down in your sleep. Maps, hash tables, trees, and such also fall into that category, among others. You didn't list those; if those are alien to you, you're in trouble.

 

 

 

The program  I worked on only used one class and I haven't found to many examples for example code of classes.  That's what I really name.  I turned to design patterns because I couldn't find this.

 

This is a huge red flag and really just reinforces the idea that you need to spend a lot more time actually writing practical code before you're going to be ready for the workplace. 

 

 

 

To learn for example special syntax on partial specialization templates, you know what I mean, I need to do the reading.

 

Knowing syntax is not what makes a programmer. My mother, a children's book author, could tell me the syntax for partial template specialization: she knows how to use Google. Being a programmer is not about memorizing these sorts of things, it's about problem solving, and specifically knowing how to solve problems using these programming concepts like partial template specialization. It's more important to know why partial template specialization is useful and when one might consider it versus avoid it than to know the syntax, the details of which you can always look up if you forget bits and pieces of them.

 

 

 

Maybe there is a mentor at the job that explains things and there is code to look at to do things like this?

Larger companies often do have somebody assigned to mentor new programmers, but this generally considers of spending a handful of hours with them walking through things that are unique the company, such as setting up source control accounts, et cetera. Nobody is going to hold your hand as a programmer, generally.

 

 

 

I would still like to know if I know enough

 

You don't. Sorry. But even if you have retained 100% of the information in every book you read, that doesn't mean you'd know enough for an entry-level job. You are missing so much important stuff that you learn by actually doing, over and over, and failing, and re-approaching, and finishing projects.

 

 

 

But are people really using this all over the place for non-built-in types

Yes. But don't worry about, it's not what you should be worried about right now.

 

 

 

Well, anything entry-level really that seems interesting, I don't understand how entry-level has a specialty really, but maybe you are saying I should study in that area too.  Something general I guess, maybe GUI and I should try to use a library.  Networking seems cool, has it been all done yet?  Like brick houses I guess.

 

 

I think what 0r0d means is do you want to be a programmer in games? Financial applications? Banking software? Missile guidance software? Fancy Web 2.0 server stuff? What field do you want to work in?

 

 

 

Maybe you have suggestions on a specialty?

 

 

Specialization is not for junior programmers.

 

 

 

 

 

 

I will re-iterate:

 

You really, really, really need to write more programs. If you have no idea what you want to write, given the wide-open space of being able to write anything, that's problematic. If you'd like you can join us in the chat and somebody can probably help you think of something with a scope appropriate to your skill level.

Edited by Josh Petrie

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement