Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Let's say that a job posting asks for experience in technology X. You have no experience in X but you do have experience in technology Y, which you're convinced is similar enough that the learning curve to be productive in X would be extremely short. How do you get hiring people, especially HR people without much technical background, to look past your lack of experience in X and take you seriously?


  • You're applying for a Java job and have never used Java except for some very small toy projects. However, you do have substantial experience in C#, which is clearly derivative of Java and promotes the same style of programming (class-based OO, static typing, autoboxing, etc.)

  • You're applying for a C job. You've never worked on anything written in straight C, but you have done substantial work in C++ and used the C-like subset (raw pointers, malloc/free memory management, void* pointers, etc.) for some of the low-level parts of the project.

  • You're applying for a C++ job and you've done extensive work in D. D is intended to be a reengineering of C++ and includes the key concepts like RAII, templates, the ability to manage memory manually and do low-level work, etc. Furthermore, you're aware of exactly where the differences lie from extensive discussions on language design in the D community.

Edit: I guess my more fundamental question that inspired this post is, "Why do most job ads place so much emphasis on specific technologies (which aren't hard to learn on the fly if you grasp the underlying concepts) instead of fundamental language-agnostic skills?" If I were running a language X shop, I'd much rather hire a top notch programmer regardless of specific technologies and assume he'd pick up X pretty fast than hire an expert in X who had mediocre fundamental, language-agnostic programming skills.

share|improve this question
If a company hires via mindless HRdroids, then you probably won't like working there anyhow. –  vartec Dec 9 '11 at 12:49
Also, related (or a possible duplicate?): programmers.stackexchange.com/questions/117775/…. I think we had another very similar question that specifically addressed transitioning from one technology to another when looking for a new job, but I can't find. –  Anna Lear Dec 9 '11 at 19:15

5 Answers 5

Language is not only a syntax.
It's also huge set of libraries, standard and popular non-standard, it's a platform which targets this language - CLR/JVM/Win32/POSIX/etc.
So when you migrate to another language (or another platform with same language), you should spent some months to learn new libraries, API, platform quirks, best practices and other things required to become average developer for this language\platform.
And of course at beginning you will use practices from old language, which can be inappropriate in new one.

share|improve this answer
@SK-logic, for example, you should learn library to know all types of containers (collections) to choose best one for you task. Also you should know all the library to not to reinvent classes and algorithms that it have. You can't just decide which way is "better" not being an expert. –  Abyx Dec 9 '11 at 12:16
@SK-logic: if you're new to a language, you won't know of their very existence. If I have to write socket code in tcl, python, C, java, I may consult the manual but I know exactly what I'm looking for and typically only need my memory jogged for the order of arguments or something like that. It would take me two minutes. If I were doing the same in a language I'm just learning it might take me half a day to find what library to look for, work through an example, and understand the ramifications of choices I make. –  Bryan Oakley Dec 9 '11 at 12:19
@Abyx, I'd better learn algorithms and data structures, and then, moving to a new language, I won't search for a specific collection implementation, I'll search for a, say, dequeue, or a heap, or a red-black tree, and choose the closest thing available from the library then. I do not need to know anything about the available libraries (they change every day, so why bother memorising?) - I'll search broadly for an implementation of anything non-trivial before implementing it myself. –  SK-logic Dec 9 '11 at 12:27
@SK-logic, can you find with grep and google good network C++ library for Win32, and say why it's better than another three or five libraries? Can you find heap for .NET\java\other-language-which-you-dont-know, and be sure that it's the best one choice? –  Abyx Dec 9 '11 at 12:41
@SK-logic: you seem to be trying to pick a fight by over-analyzing specific words. I was speaking metaphorically, but yes, I've spent half a day learning how to do something complex in a new-to-me language before. Perhaps sockets were a bad example. My first day using C# was to do some reflection/introspection on DLLs. It easily took me half a day to get a solid solution to my problem since I'm a unix guy and had never written or studied C# before. Sure, it took no more than 10 minutes to find the documentation, but a couple hours to get a bullet-proof working solution. –  Bryan Oakley Dec 9 '11 at 14:32

Short answer, I don't think you can. If the HR people have not been told by someone internally that candidates with some experience set are acceptable they won't care. If they're looking for C# developers and you have tons of Java experience they won't know they are similar, and won't care what you tell them.

share|improve this answer
Sad but true. Most HR people are clueless morons that can only read buzzwords and operate on what amounts to boolean logic. –  Wayne M Dec 9 '11 at 14:49
@WayneM They aren't clueless morons they have a different skill set and interests. Yes it would be nice if they knew more. But if their technical people gave them a better description of what they wanted they could make better decisions. –  Sign Dec 9 '11 at 14:53
  • I'm sympathetic to your plight. I agree that some technologies are very easy to learn, and it's frustrating when an HR department doesn't understand that.

  • To understand a bit better, you should understand the psychology and politics behind job descriptions. A job description, although occasionally well thought-out and well-written, is more often cobbled together at the last minute by a manager with other things to do. Writing a job description is hard, takes time, and doesn't appear to have a direct impact on the company's bottom line. So it's easy to get away with writing a bad job description. In general, this means that a manager will hack out a simple description listing (what else?) technologies in use at the shop! It's really easy to say "Hmmm.... What language do we use here? C#? Ok, job description: proficient in C#!". Then you hand it off to HR and they solicit and review resumes. And no, they do NOT understand that C# is very similar to Java.

  • In my own experience, I tried to handle this by writing job descriptions like this: "Required skills: Proficiency with at least one static language (Java, C#, C++, etc.); Proficiency with at least one dynamic language (Python, Ruby, Perl, etc.)."

  • Otherwise, try to sneak your way into the job by showing that you've got a bunch of other relevant skills. Industry experience, or technical domain specialization. For instance, I got a job at a .NET shop even though I have no .NET experience. I do, however, have GUI test automation experience, which is what they wanted to invest in. So voila! I'm in!

share|improve this answer
+1. This is very interesting. I've always wondered why things like "proficient in at least one static language" don't come up more often on job descriptions. –  dsimcha Dec 9 '11 at 16:28
@dsimcha Yeah, it's weird. I think a lot of managers develop tunnel vision and assume that the technologies they use currently are the only technologies in existence. –  Stephen Gross Dec 9 '11 at 16:54
  • List your domain knowledge (health-care, insurance, gaming etc) appropriate to the position in question. Point is, do not make the language prominent.
  • Instead of saying "6+ years experience in X language", say, "6+ years experience in web-development(gaming or whatever)".
  • In the 'languages known', list both the languages - language that you know well and the language for which position has been advertised.

I did not try such a thing and I don't know if this will work. If the HR only cares of the number of years and the language, you have it on your resume.

If you can get past the HR filter with this, you'll have the bigger task of convincing the technical interviewers that you can get things done in the language that they want.

share|improve this answer
This is a dangerous path, I've been on the other side of the desk and if a CV says they know X, then they come in to the interview and say they don't actually know it, that is a big challenge for them to over come. They have credibility and trust issues straight off the bat. I'm not saying its impossible, but ... –  Kevin D Dec 9 '11 at 11:39
-1: This is tantamount to lying on your CV. –  Joel Etherton Dec 9 '11 at 11:46
I would differentiate between don't-know-anything and don't-know-enough. If it is the second, one has a chance and it isn't lying. On re-reading the question, i understand that it is the first case. I have come across situations where lack of domain knowledge was a bigger handicap than lack of language knowledge. –  Srisa Dec 9 '11 at 11:59
If you claim you have experience and knowlege in a language you better be able to answer any reasonable question based on your claim. I can tell my own experience trying to combine my college and personal hobby experience was not sucessful. This means while I might used MSSQL in a class, and used MYSQL in my personal life, my knowlege in MSSQL was much better. Of course in this example I only knew the basics in either case. In other words listing languages you simply know is a horrible idea. –  Ramhound Dec 9 '11 at 13:29
If you list a language on your resume, at least know something of it. Exaggeration is expected, to some extent, but outright lying isn't. –  David Thornley Dec 9 '11 at 17:47

some languages you can get away with not knowing the exact language, java.c# is pretty close. C/C++ are different worlds despite c++ being a super set of C.

share|improve this answer
C and C++ are different worlds but if you do substantial low-level work in the C-like subset of C++ then you should be able to be productive in C. If you only use the high-level features, though, then all bets are off. –  dsimcha Dec 9 '11 at 14:30

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.