Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411468 Posts in 69368 Topics- by 58422 Members - Latest Member: daffodil_dev

April 23, 2024, 12:29:48 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Proficiency in C++
Pages: [1] 2 3 4
Print
Author Topic: Proficiency in C++  (Read 8630 times)
paste
Level 6
*


BARF!


View Profile WWW
« on: March 02, 2012, 10:22:55 AM »

I was looking at what kind of requirements some game companies ask for when hiring programmers, and one thing I come across over and over is the nebulous idea of "proficiency in c++".  I was hoping people who actually know what this means or who have (preferably from experience) a good idea of what companies mean when they say this could expound on it.

I've also heard that some places will give impromptu quizzes to see how proficient candidates are, and if you could share some examples of that, that would be great, too.
Logged

PompiPompi
Level 10
*****



View Profile WWW
« Reply #1 on: March 02, 2012, 11:07:47 AM »

I was looking at what kind of requirements some game companies ask for when hiring programmers, and one thing I come across over and over is the nebulous idea of "proficiency in c++".  I was hoping people who actually know what this means or who have (preferably from experience) a good idea of what companies mean when they say this could expound on it.

I've also heard that some places will give impromptu quizzes to see how proficient candidates are, and if you could share some examples of that, that would be great, too.
Hmm, I don't know about game companies, but I had job interviews in GE and MS requiring C++. I suppose it is similar.
First of all, don't assume all interviews are the same, so no one can tell you how to be prepared to ALL interviews.
Secondly, I belive that the interview will be tailored for the job in question, and it will also depend on the skill of your interviewers. Interviews are also a good time to figure out if you want to work there.
In my MS interviews, the technical test part was to implement several multi threading related problems. Something like, if you have n threads, how are you gonna synch them(I got the MS job).
In GE the interview was a little different. At first they asked me some basic C++ questions, what is a virtual function, why do you need a virtual dtr.
After that they asked me some algorithm implementation question, but skipped it as they see I didn't solve it so quickly.
The most important part was, the "design question", They asked me how do I design my software\code and I didn't really know how to answer that. (Nowadays I know a lot better how to design software).
So perhaps, there are 3 different types of C++ questions I can think of. One is C++ language questions. Two is implementing algorithms with C++(mostly to see how you think, rather than test your proficiency with C++). And third are how to design a software in C++, which is what I think the most important questions when someone want to know how proficient you are in C++.

This is my humble experience. And as I said, I can't predict what company A or interviewer B will ask you.
(By the way, I didn't get the GE job, heh)

Edit: GE not GM XD
Logged

Master of all trades.
J. Kyle Pittman
Level 6
*


PostCount++;


View Profile WWW
« Reply #2 on: March 02, 2012, 12:38:24 PM »

I'm not sure how to answer this except in the form of a tautology. Having proficiency in C++ means you are proficient in C++. Shrug You should be completely comfortable writing C++ code and be able to speak knowledgeably about its features and limitations.

Most studios will send applicants a programmer test before proceeding to an interview, but the nature of the questions is usually similar. Most questions I've seen have dealt with data structures and algorithms, design patterns, 3D math, and yes, sometimes obscure C++ knowledge. (E.g., "Explain what the 'mutable' keyword does.")

Programmer tests might also have essay questions designed to get a sense of the applicant's personality and gauge his or her passion both for programming and for games.

In interviews, you'll sometimes get the Microsoft sort of questions that don't have correct answers and are just designed to show the interviewer your thought process, stuff like, "Calculate the number of telephone booths in London," or, "Describe how you would blow up the moon."
Logged

Klaim
Level 10
*****



View Profile WWW
« Reply #3 on: March 02, 2012, 01:51:04 PM »

Basically, it means you need to grok 5 things and know about a 6th thing:

 1. R.A.I.I.
 2. templates
 3. the Standard Library
 4. smart pointers
 5. object orientation (BUT DON'T USE IT EVERYWHERE)

and not so required

 6. meta-programming (through templates)


The 4 you have to 'grok', I'm using this word because just reading it isn't enough. You have understand, breath and easily manipulate those. In particular 1 so fundamental that any safe code just HAVE TO rely on it.

So, once you get so familiar with 1-4, 5 is good to know but should only be used in cases where there are clear benefits and accepted problems.


That said, as other already told you, it depends on the company and real context requirements. But to me, those are necessary for someone to be able to work with any C++ code. (including Boost implementation).

Also, old shops might not use or even know about the current state of the standard library (of their compilers) so they don't care about it and have custom code (that they only know well). That makes my advice really virtual and not always practical.


So, the real advice is this:


    You have to be able to express ideas by writing them in C++ in the same way you could in English or another lang you're at ease with.



Just make sure you're at ease with expressing anything in the asked language.
Logged

ham and brie
Level 3
***



View Profile
« Reply #4 on: March 02, 2012, 02:18:24 PM »

Also, old shops might not use or even know about the current state of the standard library (of their compilers) so they don't care about it and have custom code (that they only know well). That makes my advice really virtual and not always practical.

Yes, certainly at interviews I've been to there was no interest in testing knowledge of the standard library and smart pointers, since they are not used in run time game code. Not a whole lot of interest in templates or RAII either, though those are things you have to deal with. Where I work, to some extent I think the people who do interviews would actually be nervous of someone who came across as keen on meta-programming...
Logged
BrianSlipBit
Level 1
*



View Profile WWW
« Reply #5 on: March 02, 2012, 02:58:19 PM »

Yes, certainly at interviews I've been to there was no interest in testing knowledge of the standard library and smart pointers, since they are not used in run time game code. Not a whole lot of interest in templates or RAII either, though those are things you have to deal with. Where I work, to some extent I think the people who do interviews would actually be nervous of someone who came across as keen on meta-programming...

I'll second this. I'll also say that places I've actually worked at did not use any of the above.  And in some instances, even hinting at using STL in game code immediately got the wrong kind of attention. i.e. some places don't care about STL, don't want to care about it, and don't want it coming anywhere close to their code.  The same went for smart pointers and RTTI.  Templates to a lesser degree.
Logged

Theophilus
Guest
« Reply #6 on: March 02, 2012, 03:11:00 PM »

grok

grumble

i hate this word
Logged
Klaim
Level 10
*****



View Profile WWW
« Reply #7 on: March 02, 2012, 04:25:05 PM »

I don't have any feeling about this word but I find it good to explain the feeling.
Logged

J. Kyle Pittman
Level 6
*


PostCount++;


View Profile WWW
« Reply #8 on: March 02, 2012, 04:55:51 PM »

Grok is a perfectly cromulent word.
Logged

InfiniteStateMachine
Level 10
*****



View Profile
« Reply #9 on: March 02, 2012, 06:53:26 PM »

^^^ hahahahahah



I go to school across the street from EA and the word is that C++ hires often get asked to do some c string manipulation on the whiteboard.
Logged

PompiPompi
Level 10
*****



View Profile WWW
« Reply #10 on: March 03, 2012, 12:18:33 AM »

Don't neglect learnning how to design programs in C++. I think in a senior position they would be more interested on how you design software. Of course this is not exclusive to C++, but even if you know all the features of C++ and can write complex algorithms, it won't help you in a game industry job where you need to write large software and work with a team of programmers.
For me being proficient in C++ is knowing how to write readable, maintainable and neatly designed software.
Even if they don't ask you about that, "sharing" your knowledge about software design would add you a lot of points. And it's something you should learn if you want to improve your coding SKILLZ.
Logged

Master of all trades.
ntdb
Level 0
***



View Profile WWW
« Reply #11 on: March 03, 2012, 05:52:05 AM »

I've waded into C++ on a few occasions, thinking "well, it's industry standard so it must be worth my time." Interestingly, I've been told repeatedly to just not worry about it. "The language sucks," "it's falling out of use," and so on. Any thoughts on this?
Logged

rivon
Level 10
*****



View Profile
« Reply #12 on: March 03, 2012, 06:08:13 AM »

It won't be dissappearing from the game industry for the next few years for sure. But if you aren't interested in the game indutry then C++ isn't used much. Java and C# are the kings.
Logged
BrianSlipBit
Level 1
*



View Profile WWW
« Reply #13 on: March 03, 2012, 06:14:31 AM »

C++ is going to be around for a lot longer than the "next few years".  This next generation of consoles which is still 1-2 years away will likely have a life cycle of a decade.  Those consoles will all be programmed using C++.  Not to mention C++ is evolving with a new standard.  Bottom line is--it ain't going anywhere.  And if you want mainstream industry work, you absolutely need know it and know it well.
Logged

ham and brie
Level 3
***



View Profile
« Reply #14 on: March 03, 2012, 06:19:25 AM »

Use of other languages is expanding, but C++ is not really falling out of use.
Logged
Klaim
Level 10
*****



View Profile WWW
« Reply #15 on: March 03, 2012, 06:50:23 AM »

In fact with the new standard, Microsoft pushing it in Visual Studio AND in Windows 8, a lot more of efforts going on in the C++ committee...

... also the fact that embedded hardware are becoming present everywhere and is far more economic when programmed with something that is cheap on memory & speed...

... I think you'll se more C++ in video gaming.



That said, video game developpement is far wider today and it means C++ isn't the only good choice for your specific game. It's good to be able to use it, as it often need a mindset a bit harder to get than other languages (functional languages taken appart) but it's better to know at least a bit about other language for non-system programming.

Also, anyone telling you a technology widely used will die is just victim of the hype curve. See: http://programmers.stackexchange.com/questions/87972/oop-technology-death

So, don't listen to them, just inform yourself about the initial goals, history and direction of your tools (languages are only tools) if you want to know if it's worth learning & using them in your very specific context.

Logged

paste
Level 6
*


BARF!


View Profile WWW
« Reply #16 on: March 03, 2012, 12:05:15 PM »

Thanks to everyone who gave answers, very helpful!

Don't neglect learnning how to design programs in C++. I think in a senior position they would be more interested on how you design software. Of course this is not exclusive to C++, but even if you know all the features of C++ and can write complex algorithms, it won't help you in a game industry job where you need to write large software and work with a team of programmers.
For me being proficient in C++ is knowing how to write readable, maintainable and neatly designed software.
Even if they don't ask you about that, "sharing" your knowledge about software design would add you a lot of points. And it's something you should learn if you want to improve your coding SKILLZ.


Yeah, I've been writing programs in c++ lately just for the hell of it, trying to incorporate a new c++ topic whenever possible and appropriate.

I am decent with pointers and good with many programming concepts in general, but I still stumble with specific c++ syntax.  So I figure, like with natural languages, just using it everyday will help me become fluent.
Logged

Average Software
Level 10
*****

Fleeing all W'rkncacnter


View Profile WWW
« Reply #17 on: March 03, 2012, 12:42:40 PM »

Like others have said, "proficiency" depends very much on the job you're interviewing for and the person doing the interviewing.  Proficiency will mean something totally different in an embedded environment than in does in a super-computing environment.

In the C++ job I got (not video game related) I did well in the interview mostly because I'm a proud language lawyer, and so was the guy interviewing me.  I was able to answer most of his technical questions, which the other candidates certainly couldn't do.  When I learn a programming language, I really learn it, and I try to use as many features as I can in every program I write (I have this goal of using every language keyword in every program, I don't think I've ever actually met it).  Understanding a complete language (or as close as you can get) can go a long way in interviews.

In general terms, I would recommend the following:

Read as much Stroustrup as you can find

The man has written a lot, and it's almost all worth reading.  Everything in C++ has a good reason behind it, and he's explained almost everything at some point.  I would recommend picking up his book The C++ Programming Language, but with the recent finalization of C++2011 I would wait for a new edition that covers that.

C++ is a multi-paradigm language, learn them all

C++ really isn't about OOP anymore, and it's quite arguable that it never was in the first place.  Generic programming is the current focus of language, and it's also an excellent imperative language as well.  Not all problems fit the OOP mold, and there are too many programmers that only own the OOP hammer.

Learn C

C and C++ have diverged significantly since C and C++ were originally standardized.  Looking at how C has evolved and handled various issues will probably give a better understanding of how and why C++ approached the same issues.  Also, knowing how to write C style programs will allow you to use C++ as what Stroustrup calls "a better C" and this is valuable knowledge.  Sometimes the C style approach is simpler and faster.

Most importantly, keep programming

I program almost every day.  I've always had some kind of project going for at least the last ten years.  There is no substitute for experience.  I had to interview some candidates at my last job, and it's really easy to tell the difference between "programmers" and "people that know how to program."  Most jobs want "programmers," but some are fine with just "people that know" (these companies are best avoided, if you ask me).
Logged



What would John Carmack do?
paste
Level 6
*


BARF!


View Profile WWW
« Reply #18 on: March 03, 2012, 01:59:20 PM »

@Average Software: I've been reading that Stroustrup book on and off lately. What book would you recommend for C? I'm guessing Kernighan and Ritchie's? What do you mean by "a proud language lawyer"? Why aren't I asking you this stuff on IRC?


Logged

Will Vale
Level 4
****



View Profile WWW
« Reply #19 on: March 08, 2012, 01:35:03 PM »

Learn C

Yes, yes, a thousand times yes. Preferably before learning C++ - C is much easier/smaller, and everything happens in the open where you can see it.

If you're a good C programmer then C++ provides an awesome box of tricks that you will want to use, but naturally have some suspicions/reservations about. That's healthy. Too many people learning C++ go straight into the OO "class Car is-a Vehicle" paradigm and get stuck there. They also tend to accept or not even realise the costs of various language features.

Will
Logged
Pages: [1] 2 3 4
Print
Jump to:  

Theme orange-lt created by panic