What’s the difference between 2 and 4 years of C++ programming experience? I know, 2 years of C++ experience. But other than that, what’s the difference? I was talking to a recruiter and I have 2 years, he says my C++ experience isn’t enough for his client that requires 4 years.
Huh?
Shouldn’t what I actually know about OO programming and C++ matter? I mean, you can have all levels of programming experience. You might sit and edit existing C++ source code to change tiny little features and do that for 4 years. That makes you a better C++ programmer? They don’t seem to be interested in what you know about OO programming and C++, only the number of years experience. This requirement is ludicrous!!!
I don’t know if there’s a factual answer to this question.
My take on it, as a software writer who has had to deal with recruiters, is that hiring managers and recruiters don’t have nearly the understanding they need to effectively screen people.
Thus, they use checklist items such as years programming. I’ve had recruiters tell me I wasn’t qualified because I have C++ on my resume (more than 10 years) but they were looking for Visual C++. Idiots.
Anyway, it doesn’t mean anything meaningful. Just try to talk your way past it.
The difference between 2 and 4 years of C++ programming experience is the experience of seeing many strange errors pop up and recognizing and fixing them. It’s also the experience of dealing with other people’s code. These are things that can’t really be taught, imho.
Of course, that’s not nearly as important as distinguishing between applicants who use underscore_style and those who use CamelBackStyle.
As a software engineer with 8+ years of C++ experience, my take:
On the 2 year vs. 4 year difference:
This is not specific to C++ or any particular language. My take would be just sheer experience level. For example, there is coding and there is coding that is “understandable” (readable). EVERY programmer believes their code is readable/understandable. But a 2 year experienced programmer hasn’t had to pick up something he wrote 3 years before and make some modification.
In having more experience, you’ve either had the rude awakening of having to pick up some piece of code you wrote years before (that you swore both was understandable and that you’d never expect to have to pick up again). OR you have had to pick up someone else’s code that they swore was understandable. And found otherwise. From this experience, you gradually start to appreciate just how you document and organize your classes and code. This is the kind of experience you only pick up over time (arguably, there’s no guarantee you’ll have these experiences, but the chances are more likely).
As to C++ vs. Visual C++:
There is C++ the language, and then there’s Visual C++ the environment-to-write-programs-for-MS-Windows. And there IS actually a big difference between the two. And unfortunately, learning all the tricks and how-to-get-things-done in Visual requires a lot of time. You may be an ace C++ programmer, but if you’ve never written in Visual, you will be lost for a long time - trust me on this. Despite the plethora of books available, my experience has been that most of the actual knowledge of how to develop programs comes from “osmosis” (having more experienced developers available as resources). It is almost an “in crowd/out crowd” situation. And making the leapt is not trivial. The problem comes with all the stuff MS provides for you to develop software for their OS. It is expansive and therefore very powerful, but finding what you need/want is a bitch. You end up getting really familiar with a given subset, and go with that. But learning that subset takes time and “osmosis”.
In my experience, recruiters often know very little about how to evaluate the technical requirements of the applicant, so they get a set of (generally) arbitrary requirements from the customer and blindly select for these without reference to actual and applicable experience.
In my line (mechanical engineering) a CAD software package called Pro/ENGINEER was the hot topic about 8 years ago. It had only been in commerical release for about 5 years before that, and yet recruiters were demanding 10,000+ hours of experience. This could only be found in some theoretical Case engineer who spent 100% of his time behind a monitor being a CAD monkey, which is both unlikely and isn’t exactly the kind of guy you want as a well-rounded design engineer anyway. Several couple years later I started seeing prerequisites for 5+ years of experience on competing CAD packages (SolidEdge and SolidWorks), despite the fact that neither package had been around that long.
Never mind that the jockey whose spent five years modeling up library parts has a lot less experience, both with the software and general design engineering practice, than the kid whose spent two years creating major assemblies and working with the proto shop.
Back when I had less hours (but plenty of experience and the full range of training classes…ah, to work for a company that took training seriously) I would “estimate” the hours to the top end of the range to get past the recruiter and HR and then demonstrate to the hiring manager or technical collegues my actual level of skill with the code. Ditto with finite element software and the like.
As for the OP, I never was a master C++ hacker, even back when I was writing code (university job), but I found it pretty easy to evaluate a candidate’s skill level on the languages we used (C, Pascal, Lisp, ToolScript) by asking a few leading questions and pretty much ignored the amount of experience stated on a resume. I can’t imagine any technically-literate interviewer not doing the same.
Fair points, but my resume also had that the vast majority of my experience was in Windows, and I had (at the time) 8 years’ experience with the MFC libraries. Also, my experience was in off-the-shelf retail software for Windows.
Further support of the assertion that it comes from idiocy: I had a recruiter tell me in 1993 that they were looking for someone with at least 5 years dotNet experience.
And a hiring manager who was looking for someone who knew Fortran (in 1993) but was an entry-level programmer.
This is the strongest argument, in my opinion. Writing maintainable, modular, reusable code is a skill that only comes with experience.
Here are some more reasons:
Anybody can write beautiful code, but experience helps you write it more quickly. Volume of output is as important as quality.
Anybody can write beautiful code but not everyone can rescue ill-conceived or neglected code. Nobody has much use for programmers who refuse to soil their hands with others’ messy code.
Experienced programmers have gained more exposure to libraries and development meta-tools that help economize time
Experienced programmers immediately recognize Bad Ideas, having either created them or been forced to implement them in the past.
There’s also the experience – applicable to any language – of what approaches to a problem work without problems, and what will give you headaches down the road. Pointer management, dynamic vs. static arrays, assumptions and optimizations, field sizes, etc. The nice thing is that such experiences can usually be transposed across languages, but you still need the exposure to get that experience in the first place.
And “picking up someone else’s undecipherable code so you can expand/modify/port it” comes up far more often that it should…
(Software engineer, 15+ years experience, too many languages to recall)
If the employer doesn’t have the sense to ask whether you’ve spent your 4 years as a developer or a maintainer, yes, I agree this is completely ludicrous. And many employers don’t ask.
This is a different rant, but in my experience, technical companies are really bad at hiring. A inordinate degree of importance is placed on the opinion of, say, a senior programmer. Such a person may be too inexperienced at interviewing to know whether he’s overlooking a diamond in the rough or being outright lied to. They look for candidates whose experience most closely matches their own, and often insist on a silly litmus test like straight C experience or vi editing. Can’t tell you how many times I have seen someone hired for, say, Unix shell experience, and showed up at work the next day with the equivalent of “Teach yourself Unix shell in 24 hours.” :rolleyes:
I don’t follow. Do you mean that you only have two years of professional experience? Or that in the last 13 years you have used C++ sporadically, but the total amount of time was only two years? Or something else?
Seems like I have seen you in C++ GQ threads for at least two years.
I have a BS in computer science, graduated in 1977. I actually wrote my first program in 1968 on a paper tape system, our shop teacher had a link to some IBM mainframe. My first punched-card program was in Fortran in 1974 in college.
I started working using mostly DEC PDP-11 assembler language and Basic for about 8 years. Then mostly C language on and off for well over 10 (or maybe 20?) years. I did some COBOL and other things mixed in here and there along the way. As far as C++, I took a college course in OO languages and C++ in 1992. I worked on a Borland C++ project in 1993, that lasted about a year, then I did a VC++ project in 1996 that lasted about a year.
The recruiter has been a real nice guy, and he’s no kid either. I argued with him about this 4 year C++ requirement, but I think I might try to do a bit more hand holding. I’m going to send him an e-mail about my 10+ solid years of C and how the majority of C++ language structure is based on C, and that should convert to at least 2 years of C++ given my total years of programming experience.
But I kind of doubt that argument is going to float with him. He asked about my RBMS experience, I told him I have experience with Oracle, Informix and Sybase. He questioned me about the Sybase in particular, and about embedded SQL with Sybase. Now, with all the embedded SQL I have done with different RBMS, I have found VERY little difference in how they work. But he suggested there’s a strong distinction between them all, indicating to me that he doesn’t have a clue.
I need to go back to school and get degree in sales.
It seems like the easiest way out is to just lie to recruiters. You started programming C++ in 1992? Bam, you have 13 years C++ experience. Save the real facts for when you get to the interview.
Yeah, honesty will get you nowhere in the job hunt. I need to write a resume generator that changes the programming language and database on my projects per their request. You worked on 11 projects ALL with C++ and Sybase?