28

I feel that the often seen C/C++ doesn't really describe my skills in my CV. So I'm planning to separate it into advanced C++ knowledge and mediocre C skills.

Do you think this is confusing for the reader? She could think: "C is a subset of C++, so what is this guy trying to tel me?" Well, what I'm trying to tell is: I have done several real world C++ projects while pure C projects where just a hobby thing. Do you agree that a skilled C++ programmer not necessarily is a qualified C guy or do you think that this switch is done easily?

gnat
  • 21,442
  • 29
  • 112
  • 288
h0b0
  • 641
  • 5
  • 14
  • 2
    related: http://programmers.stackexchange.com/questions/23760/languages-on-a-resume-is-it-better-to-put-c-c-or-c-c – Adam Lear Nov 01 '11 at 15:22
  • 1
    That is exactly what I do. It has not hindered me finding a job. – Martin York Nov 01 '11 at 17:24
  • 9
    Haven't written a CV in a long time, but I always talk about C and C++ as two totally different languages. – Rei Miyasaka Nov 01 '11 at 17:39
  • 2
    @ReiMiyasaka - Good, because they _are_ two totally different languages. Both have been updated and have diverged from when C++ was created as an addition to C. – Izkata Nov 01 '11 at 18:09
  • i believe that C/C++ are not the same thing and they are totally different languages,the only common thing is the 'C' in the name(not to mention the close syntax) – Qchmqs Dec 05 '11 at 16:25

7 Answers7

31

You have asked so many questions in one; let me try to answer while segregating them. I hire many people which falls in this profile type and quite often i have to take so many interviews and reject people because often they don't quite have clear answer to the questions you asked.

  1. Is having good mastery in C or C++ is good enough to qualify you for the other program?
    If you are at a senior level actually NO. i.e. if you have been something like 6 years doing C++ programming on some core enterprise applications, and now i am trying to put you in embedded systems which is all in C - likely that your programming syntax and how to debug stuff is not an issue. But If you need think through of a problem - you are certainly very messy. This is true from either side to the other language. The more years you have been spending only one type of language - less easy to transform in other form! It is not about whether you can learn the syntax of language but you actually think differently when you are in C, C++, Java, perl and Python. To stretch the question - most often - C++ and Java guys can be used interchangeably and so is Perl,PHP, Phython. C is quite a different breed!

    If you are a relatively young guy - chances are that you can catch up fast.

  2. Does it mean that i have higher skill when i know C++ rather than C
    Actually No. No because, as a general rule, if you are capable of creating a full product out of C is much more difficult task compared to doing it in C++. Number of people who can master troubleshooting shared memory systems are much less than number of people who can write a decent GUI program using VC++ or similar framework.

  3. Does this mean knowing C (or the lowest level programming) is the highest level of achievement?
    No again! This is not contradiction. This time it depends on the domain you compare. If you are looking at systems programming inside the Linux kernel, or something very close to hardware, programming ability in C is more relevant, However, if you are writing banking software or some business rule engines - C++ is a usually natural choice. The point is your true strength is not much about the syntax of the language but the way you solve a class of problems and you can only hope to master a few catagories/domain in your life. If you are putting something in your resume - that is what really counts.

  4. Does it mean that if have only been in C - i don't know Object oriented programming?
    Not at all. In fact, my litmus test in the interview to know whether guy is from C background or C++ is to ask a very simple question - "So can you do Object Oriented Programing in C?" - the guy jumps and says - "Definitely NO!" he/she is C++ fellow. The point is, when you really write very complex code like multimedia code, a multi-threaded system, a protocol layer stack, you still 'think like object code' - C compiler doesn't punish you if you are bad at encapsulating two routines or objects - but when the system scales that keeps firing you - i believe at times - there are many who are born in the era of object orientation, quite often are fairly weak on exactly how encapsulation really gets violated in a code which is pretty much filled with classes and objects. Sorry i digressed. But the point is - it is more of your skills of problem analysis and design that matters more than your programming skills alone.

Does it mean i should put domain specific exposure and design skills saperately?
Definitely yes!

Dipan Mehta
  • 10,542
  • 2
  • 33
  • 67
  • 9
    +1 For pointing out that you can have an object-oriented design and still implement it in C. – Giorgio Nov 01 '11 at 18:24
  • You can do more than just think in object oriented style while programming in C. Some years back an acquaintance of mine showed me a set of macros he wrote back in the late 80s because he wanted to learn OO programming but couldn't afford to buy a C++ compiler. – Dan Is Fiddling By Firelight Nov 01 '11 at 19:09
  • 17
    @Dipan: Be careful about making assumptions based on age. Some older guys "catch up" pretty fast too. Some of them probably run faster than you. – kevin cline Nov 01 '11 at 19:52
  • 16
    I strongly doubt that "C++ and Java guys can be used interchangeably". – fredoverflow Nov 02 '11 at 06:54
  • @FredOverflow: I don't doubt that at all. Seeing some of the questions in SO's `c++` tag I _know_ that they can not! (`-1`) In fact, C++ and Java might differ even more than C++ and C (and those differ a lot). – sbi Nov 02 '11 at 07:03
  • 7
    I also disagree with #2. When you know C++, you can pick up C# or Java in relatively short time. Picking up C++ when you know either of the other two, however, takes a lot of time and effort, and requires that you first "unlearn" a lot of what you have taken as given in C# or Java. – sbi Nov 02 '11 at 07:05
  • 1
    @sbi : I am not really arguing very specifics about the C++ or JAVA or C. I don't quite intent to over generalize relationship between languages; nor do i go with a presumption that people cannot really adapt learn or unlearn things. The only crux really is that different languages are also different thinking patterns irrespective of their syntactic relationship and that is what counts in the fitment of the role to be given. – Dipan Mehta Nov 02 '11 at 12:11
27

For the people that really matter, no, it shouldn't confuse them.

Anyone who knows anything about real-world C and C++ programming knows that although despite their similarities and history, production programming in either is more often than not a completely different animal.

Dan McGrath
  • 11,163
  • 6
  • 55
  • 81
13

Personally, I find it very annoying when people write "C/C++", because C and C++ are very different languages. Conversely, if I see "C, C++" or "C++ and C" on a resume, it impresses me to no end. Unfortunately, almost everyone writes "C/C++", and it typically means "I know C++, but I can do C if I have to."

Also, I would not be so specific on the CV. Just list the programming languages you know, possibly in the order from most proficient to least proficient. That should get you past the HR buzz-word filter, and then you can explain during a technical interview what your strengths and weaknesses are.

Dima
  • 11,822
  • 3
  • 46
  • 49
  • 5
    Agreed. I would no sooner put "C/C++" on my CV than I would put "Java/JavaScript" as if they are the same thing. –  Nov 01 '11 at 16:01
  • I often write C/C++ even though I know they are different languages, because of you learned either of them without bothering to look at the other, your knowledge of both is incomplete. You cannot be a good C programmer without at least studying OO, where C++ is the natural choice for learning how to do OO in C. You cannot be a good C++ programmer without understanding why C++ turned out the way it is, by its heritage from C. In a CV however, I agree they should be separate. –  Nov 02 '11 at 07:52
  • 1
    @OrbWeaver, one big difference is that you can often take a C program (as long as it isn't too complex), feed it to a C++ compiler, and get an executable out of that which will actually do what one out of a C compiler would do. You can't feed a Java program to a JavaScript parser (or the other way around) and get anything even remotely useful out of the exercise. So while I agree that C and C++ should be differentiated, to my mind writing `C/C++` and `Java/Javascript` as if they were the same is still in two very different leagues. – user Nov 02 '11 at 09:40
  • +1 for the advice --just list the programming languages you know, possibly in the order from most proficient to least proficient. That should get you past the HR buzz-word filter, – naive Feb 08 '19 at 10:37
7

No, it should not be confusing because C and C++ though similar and sharing similar roots are different in paradigm and usage. Thus, it should be separated, also the expertise should be separated too. Plus, i think you can mention more specific expertise(like GUI/FLTK or other libraries that you're familiar with) with the two separated.

aggietech
  • 1,082
  • 2
  • 11
  • 22
5

I liked your phrasing: "I have done several real world C++ projects while pure C projects where just a hobby thing"

So I'd just put it in CV jargon:

  • worked on several C++ products
  • a few side projects using C

It's better if you put numbers in place of "several" and "a few". No need to be exact, "over twenty" is a number for this purpose.

The "skill level" description is correct, but the "experience" description is correct and clear.

3

I agree that C and C++ are different languages and should be kept separate in the CV. Even though C is (almost) a subset of C++, I normally have a very different programming style when using C: I design differently, I code differently, and so on. I would even remove certain C features like #includes from C++ giving up backward compatibility altogether: they are simply different languages.

So my advice is to keep the two languages separate in your CV.

Giorgio
  • 19,486
  • 16
  • 84
  • 135
3

Simply, if the person evaluating you had the propensity to think "C is a subset of C++," they're already confused, and I'm sure your explanation of what's written in your resume will be enough to wow them.

Mr_Spock
  • 327
  • 1
  • 7