I recently had a programmer in for an interview, who listed Python, PHP, Rails and ASP as a few of their skills. In the interview however, they interviewee didn't enough know what control structures and basic logic were, they had only followed a few demo tutorials.

So my question is this: At which point can you add a technology to your resume accurately. Is it when you can demonstrate all basic concepts, write a useful program in it, or are just comfortable using it without having to refer to the documentation every 30 seconds.

I don't believe this is overly subjective, a baseline should easily be established based on feedback.

  • 18
    As you're driving home with a new copy of Sam's Teach Yourself [Blah] in 24 Hours Commented Oct 27, 2010 at 2:44
  • 1
    At the moment you realize you have to delete 30 other technologies you had listed.
    – Coder
    Commented Dec 11, 2011 at 21:37

14 Answers 14


You should be able to defend/explain each and every word you put in your resume. Kind of like you dissertation/thesis. I have seen many candidates rejected with the reason "could not justify what he had put in his resume".

One approach is to follow Google's self questionnaire. Rate each skill on a scale of 10. That way we can project how relatively comfortable we are with various technologies.

  • 1 means you can read others code with plenty of googling.
  • 5 maybe for implementing modules in the technology. Etc.
  • 8 for plenty of experience and comfortable with designing and implementing large projects in that technology.
  • 9 for architectural knowledge with moderate understanding of what's under the hood.
  • 10 means you have written a book on it or invented it.

I have seen resumes which have bar graphs indicating relative proficiency in various technology.

Another option is to group skills as "strong understanding", "moderate proficiency" and "familiar with".


I tried to put this as a comment, but didn't look due to lack of formatting.

For a reference, here is what Google defines the rates in their Self Evaluation

  • 0 – You have no experience
  • 1 to 3 – You are familiar with this area but would not be comfortable implementing anything in it.-
  • 4 to 6 – You are confident in this area and use it daily.-
  • 7 – 9 You are extremely proficient to expert and have deep technical expertise in the subject and feel comfortable designing any project in it.-
  • 10 – Reserved for those who are recognized industry experts, either you wrote a book in it or invented it.
  • 4
    +1 on the skill ratings. And that's pretty much what I do. For example: I've worked on a JSP product before and have a general idea what JSP/JEE is about - but couldn't exactly say that I can architect JEE systems from scratch comfortably. So I say I have "some exposure to JSP/JEE" on my resume. Commented Oct 27, 2010 at 3:18
  • 6
    +1 nicely put! Only I'd put "book writing knowledge" a little lower (perhaps 7-8?) ... either that, or I tend to read the books from the wrong authors ...
    – Rook
    Commented Oct 27, 2010 at 3:27
  • 23
    I'm not convinced that writing a book on a subject qualifies for the "10" rating. It've thrown down books with an ambivalent "Meh." after a few chapters when I realize I'm already more proficient than the author of the book. In short, some really crappy books make it to publication. Commented Oct 27, 2010 at 13:48
  • 6
    Not applicable here in Europe... no one adds skill rating on the resume, it would look very weird.
    – Wizard
    Commented Oct 27, 2010 at 19:31
  • 7
    Why is there nothing between "not comfortable implementing anything in it" and "use it daily"?
    – user13278
    Commented Oct 25, 2011 at 7:31

To my way of thinking, the focus on specific technologies is a mistake. I still list my Rexx experience, not because I think anyone today would be looking for it, but because I want to highlight my capacity to move fluidly in different languages, even after 19 years in I.T.

No, I probably could not fluently white-board some of the languages I list. But, give me half a day, and I could write the same script in any 3 of them (your choice).

To me, the real question is, can you take advantage of the tech in front of you (whatever that may be), to put good ideas into action in a way that benefits the company, and makes your job challenging and enjoyable?

That's a tough question to answer, just based on reading a list of "what you already know".

  • 10
    1+ agreed. If you are hiring a programmer for full time employment and you expect her to be there with you in the coming year, I think the most important qualification is the willingness and ability to learn. Commented Oct 27, 2010 at 6:29
  • Funny, I also put my Rexx experience on my CV, and for pretty much the same reason: to show I've used lots of different languages. Commented Oct 27, 2010 at 6:29
  • +1 for the Rexx reference! And for the fluidity in moving between languages. Commented Oct 27, 2010 at 7:24
  • An example of what I'm talking about in this answer: (Yes, I realize this is going to sound like I'm waving my own flag, and I apologize for that :$) ...I just converted a whole suite of IronPython tests I wrote 2 months ago, into C#. It was the first time I'd ever really worked with C#, but with a little kick-start from one of the dev's (about a 1 hour tutorial), I was able to take 3 weeks worth of Python work, and turn it over in C# in about three days. Now, to go back through the new code and look for improvement opportunities!! Commented May 20, 2011 at 16:44

This is a problem I've run into a bit. I eventually ditched the "Skills" section of my resume entirely, and just focused on what I'd done with those languages, specifically in my projects and employment section. I highlight/bold specific technologies as part of the description.


Web Developer @ Company X (3/3/03 to 5/5/05) Primary developer on a database-driven website to help film students organize their projects. Used PHP and MySQL. Worked on it through development and release leading to a successful roll-out to students in early 2009, and maintenance thereafter.

This method gives your skills actual context that you can discuss in an interview.

  • At some point, the individual skills are no longer particularly relevant - especially when the actual code becomes such a small part of your job and you're spending more time on design rather than implimentation Commented Oct 2, 2012 at 21:00

I list only the things I know well, and for me that means used in anger for about a year or more.

That's just me. That's how long I think I take to really know, appreciate, and understand a language / system / IDE / environment / whatever.

When tinkering, you don't really learn so well. Most languages / frameworks / etc really require you to get into the mind of the designer before you "get it", and to really know what you are about takes about 12 months.

As a bit of an aside:

In my position interviewing and reading CV's, I find it interesting that people list all kinds of stuff, with no supporting information in their experience to back up their assertion. For example, they might list PHP, MYSQL, Ada, C++, C#. And then their experience might say they did a project using C++.

When there is nothing to back up the languages claimed in the experience listed, I usually smell a rat and that person won't even make it to an interview.

Listing languages by rating, or how long used, or proficiency, all helps the interviewer - which is not always whats intended by the person submitting the CV!



  • Be clear, straightforward, and scrupulously honest.

  • Make life as simple for the person reading your CV as possible. Present clearly, with no hyperbole.

  • If you have a position description that you don't completely meet, attach a statement showing HOW you meet the position description (don't make the person who gets your CV figure this out). AND WHERE YOU DON'T MEET SOMETHING required - say so. And if willing to learn, SAY SO. This also shows that you have actually read the position description, and understood it, and you are not just cranking out form CV's for every position around.


  • Cross check - does the experience listed match the skill set listed? If not, something is fishy.

  • How long was something used? A few days, or a tutorial, is not experience no matter how you dress it up.

  • Has the person constantly chopped and changed? Did they stick around long enough to actually see something through? (Have they lived with their own mistakes? No = another warning)

Sometimes these things are hard to assess, and you end up going on "smell". It a CV has a bit of a whiff of the sea (ie it seems a bit fishy) then move on.

From Joel On Software: Any doubts at all = No Hire. And from my own experience: A vacant position is far better than one filled with somebody you had doubts about, who turns out to be a bad choice. (No progress is better than going backwards.)


Why are you creating a laundry list of technologies? Instead, include information about the project and mention the key technologies, frameworks, libraries, and tools used there. This achieves a couple of things. First, you are demonstrating your knowledge and skills with something to projects, which makes it contextually relevant. Second, you are making your resume more about what you have done and not simply what you know.

In this case, when you are talking about your job and responsibilities, you can include how you learned and used Hibernate (and other technologies) in order to make a whatever-it-is-you-made. If I'm interested in your abilities with Hibernate, it's something I'd ask about during a phone screening or an interview. I'd then expect you to tell me some information about what the project was, how you used Hibernate, and what you were able to learn. In addition, any automated resume scanners will pick up the keyword, yet your resume is still human-friendly.


I'm not sure it is exactly determinable. In my opinion, it should be on a case to case basis. What I mean - let me explain on an example:

Job ad 1 - wanted candidate with knowledge of: Python, PHP, Rails, ASP, Assembler.
(and usually it can be somewhat determined from the ad which skills are more important than others - which are just there "in case")

In this case I would put on my resume Python, PHP ... only if I really well know them. Assembler, for example, I know very little, but I'd put it still, for it can't have a major impact in combination with the rest of the above.

Job ad 2 - wanted candidate with knowledge of: Assembler, C/C++, Kernel ..., Python, PHP, ...

This case is different. Here it is (is it?) obvious that they're looking for a different kind of candidate, and that they'll (probably) disregard the lack of knowledge of PHP for example, if the candidate posseses these other skills.

So it depends really.

As a general rule, to put something on a resume, IMO, one should know how to "find his way" around code, basic syntax, and have at least a few small sized projects behind him using that particular language. He doesn't of course have to know the libraries & help by heart ... but should how & where to get help should he need it.
There can be counter examples to this rule - I've noticed that people who (really) know a lot of languages tend to get confused sometimes "depending on which one they're stuck in currently" - for example: using IF/loops/...other syntax elements in a correct way, but with an incorrect syntax (which actually fits some other language then the one they're currently thinking about). So that is not really a necessary true test of abilities.

  • Rails + Assembler? I wonder where these two technologies touch?
    – user1249
    Commented Oct 27, 2010 at 7:40
  • @Thorbjorn - It was just an example I made up on the place. But I see such ads everyday ... and no :) I've no idea where they meet :))
    – Rook
    Commented Oct 27, 2010 at 20:18
  • see Rails+Assembler ads everyday? Link please :D
    – user1249
    Commented Oct 27, 2010 at 20:32
  • @Thorbjorn - Sorry, local newspaper. In this part of the world that's still where the job ads go (East/Central Europe). Could try to scan it the next time I see one, and post it somewhere if you're terminally curious though :-)
    – Rook
    Commented Oct 27, 2010 at 20:37
  • 1
    I've done both assembler and php in my current job. But we're consulting so...sometimes we're working on hardware, sometimes web development. It's a great place to learn!
    – Malfist
    Commented Oct 27, 2010 at 20:42

If all you do is list the skills with no other context, then most people reading your resume would expect you to know those well enough to handle interview questions on them. However, there is plenty of context you can put around each skill to make it more obvious what your level of expertise is. Some examples:

List how long you've used the skill

  • Java (5 years)
  • C++ (3 years)
  • SQL (1 year)

Give each skill a rating

  • Java (5/5)
  • C++ (3/5)
  • SQL (1/5)

List skills in categories

Currently using: Java, C++ Previous experience: SQL

  • 3
    When reading resumes, I ignore years of experience. Why? (1) Some people get depth of experience with a technology in a relatively short time, others just repeat the same shallow expeireince over and over. (2) It ignores transferable skills between technologies - someone with 5 years Java and 1 years C# might as well have 5 years C# for all the difference it makes. (3) Some people claim 5 years experience when the have used a technology twice, with a 5 year gap in between.
    – Kramii
    Commented Oct 27, 2010 at 9:44
  • I do agree to some extent that the "years of experience" isn't the ideal metric - I prefer the skill ratings myself - but it's still useful as a guide. If I list 5 years of experience at Java, I better be able to nail any Java-relevant interview questions. If I list 1 year of SQL, that is probably an indication I'm not expert in it. Having said that, you are definitely right that it's possible to still suck at Java after 5 years or become a SQL wizz after 1, so skill ratings are more useful. Commented Oct 27, 2010 at 16:52
  • @Kramii - excellent summary of why years of experience are worthless. Point 3 especially is why I have so much trouble writing resumes and filling in applications. Too many occasional uses of certain tools or skills.
    – DarenW
    Commented Nov 19, 2010 at 21:47
  • Years have at least one interesting context (not the quality or reliability on it, though). It can be of important interest what and how many versions youve ben in touched with. If you state 10 year of coding, you can be moderate/good/novice as a 3 year developer but you probably know VB6 and complexity migrating old COM modules and 16bits your console architecture and so on. You probably put your business key win311 station in hands to a guy who ben in the game for a while. Again, honest is important! Commented Oct 25, 2011 at 5:52

Would you feel comfortable using it on a new project? Are you willing to work with it again? If so, then put it there. You don't have to say "Guru" or "Newb" just list it as a tech that you are familiar with. If they ask in an interview about your experience then you can explain the details. They probably won't expect you to know everything, but will probably expect you to be able/willing to learn the parts you don't when when you need them.


I have a couple of sentenses describing each job. In the last paragraph of each description, I place a "Languages and Technologies used:" following by whatever tools I used in that job.

Also, I have a Skills section with a note which says something like: "Varied experience with the following languages and tools" and then I have a few bullets with languages and relevant frameworks that I have used in the past.

I don't use the "rating" system because I would not know how to rate myself in each of the languages (what does a 3 rating (from 0-to-5) in Java imply in terms of knowledge?). In order not to be dishonest, I would probably aim low when self-rating. This actually happened last year when I applied to a job and the company gave me a questionaire which requested the applicant to rate himself in a bunch of languages.

I dont list the number of years because I don't think it helps much. For example, I have 4 years of professional experience in the language / library I currently use but I'm no expert in it, since I usually stick to a certain subset of it.

Some of the languages I list I've used in jobs, others I only used in University projects and exercises (4 or more years ago). I would not be able to write code in some of those languages in the stop, but I could get back into them within some hours of studying. However, if I removed any language which I would not be able to write code in from memory without review, I would be left with only two languages - probably not a fair assessment either.

I'm currently job hunting, so I'm reviewing my CV (hence I'm reading programmers.SE and looking for CV tips :)) and I'm thinking about removing the languages which were only used in University projects (and this would be stuff like Prolog).


On my job applications I use two sections for technologies as I'd expect most do; first there is the general skills section and then the listing of specific experience in specific projects. Of course, while applying I list in both sections mostly those items that are relevant to the job in question.


I feel that listing a technology in the general area is a strong statement and for a technology to reside in there I need to

  • be able to communicate with it
  • manage to work reasonably productively with it
  • have some knowledge of the possible boobytraps that lay within it.


My very vague criteria for listing technologies in the general skills goes along these lines:

  • The proficiency of an average programmer who has used the technology to write programs consisting of about 10K SLOC.
  • The ability of an average programmer who has had to maintain the complexity of a program the size of approximately 30 objects.
  • The theoretical knowledge equivalent of an average book.

Basically that's at least some breadth in the area, handling of reasonable complexity, and some knowledge about the horrors that await.


Proficient, PHP: Writing web applications with PHP has been my day job for several years, with the maintenance of several projects, reading of many books and a big portion of the manual behind me. This would go in both sections, were it relevant for the job.

Beginner, Scala: I'm in the middle of reading a Scala book with about 200 pages behind me and a few hundred lines of code written. I'd probably use it as a side note somewhere if I saw it in the job ad, like this: "The job you're offering also mentioned Scala which I'm studying right now and I'm more than willing to learn more about it."

Border case, Python: I've written a small shoot'em up game and several scripts in Python with the experience of a couple of thousand lines, reading a dozen of articles and tutorials on the web, and some parts of the manual. If the ad mentioned Python (and I'd be well qualified otherwise) I'd write about it in my resume in the experience section, perhaps something akin to this: "I have created a shoot'em up game in Python with Pygame using object-oriented programming with bitmap graphics".

Naturally, a fine way of showing your real skill level is providing links for screenshots, diagrams, plans, data schemas, project history, blog postings and code in the application for the job.


Put it on your resume if you're confident you can answer technical questions about the language without embarrassing yourself. The goal is for the resume to be an honest reflection of your abilities, and you should assume you might be asked to prove anything you put on the resume.


I only list skills that I have used in a project.

I don't like the idea of putting my idea of my skill in a technology on my CV, mark out of 5 etc, I've interviewed to many people who mark themselves much higher than they are.

I prefer if interviewing to ask and ask why they say that level or if being interviewed to be asked about where and why I rate myself as a 5/5.

  • -1: You can't just list technologies you are currently using, this way your resume would be almost empty. I don't say you have to cheat, but it should be clear even to the interviewer that you'll be more "fresh" on some technologies than others.
    – Wizard
    Commented Oct 27, 2010 at 19:27
  • My CV is far from empty and that is how I have always worked. I said used in a project, that could be personal or in a job. The majority of my learning is outside working hours and I may never get to use a technology in a role but may know it enough from personal projects. Commented Oct 27, 2010 at 20:33

If you are confident that given a programming test in that technology as part of the interview, you would manage it, then it is fine.

If you were to say,

actually I haven't used X in a while so I am a bit rusty...

Probably best not to list it as a skill. Doesn't mean you can't mention elsewhere on previous projects you have worked on.

  • 1
    -1: You can't just list technologies you are currently using, this way your resume would be almost empty. I don't say you have to cheat, but it should be clear even to the interviewer that you'll be more "fresh" on some technologies than others.
    – Wizard
    Commented Oct 27, 2010 at 19:26
  • @wizard. I probably wouldn't hire you then. If you put a skill on your cv I'd expect you to be able to back it up. Commented Oct 27, 2010 at 20:49
  • 2 downvotes - woah, listing technologies you can't actually use must be really popular. Note my answer doesn't limit it to just technologies you currently use, but ones you can currently use. Anyway, I stand by my clearly unpopular answer. Commented Oct 28, 2010 at 8:59
  • @DanSingerman I think there is no problem listing a skill that has not been used for a while - as long as that is made clear in the resume. In my resume I do not have a single list of skills - each skill is part of the description of what I did at each job, thus it is clear whether I have used a skill recently.
    – teambob
    Commented Jan 17, 2012 at 0:18

Sometimes just knowing the meaning of the acronym is enough to add it to the resume...

That's true, for example, for frameworks and libraries that you can couple with a given language.

  • I must disagree. For example, you can't add Django to your resume if you know Python and you've "looked" at Django. Sure, you could figure it out pretty quickly, but there is still a learning curve so if somebody needs a Django programmer right away, you're useless :) Commented Oct 27, 2010 at 9:43
  • 1
    Which part of "sometimes" is unclear?
    – Wizard79
    Commented Oct 27, 2010 at 16:58
  • 5
    -1, Disagree! I know what NASA stands for, can I haz a spaceship now?
    – Malfist
    Commented Oct 27, 2010 at 20:43
  • 2
    @Lorenzo, sometimes should be never, you actually have to know how to use something instead of just it's name. It's great that you know it exists, but I'm not hiring you because of that, it implies no skill on your part.
    – Malfist
    Commented Oct 27, 2010 at 20:47
  • 2
    I think that all of you should come back to the real world... Resume are full of languages, acronyms, technologies, you can't be fluent in all of them, and real world interviewers do know that.
    – Wizard79
    Commented Oct 27, 2010 at 21:38

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