Settings

Theme

Ask HN: At what proficiency do you consider 'knowing' a language?

8 points by ndomin 11 years ago · 18 comments · 1 min read


Lying on a resume is obviously bad, but when do you consider being able to list a new language on your resume as something you know? For example, I've written programs in a dozen languages over the last few years but if someone asked me to write something in any 6 of them I would have to look up some of the syntax to know if it needs a parenthesis or semi-colon. Is that considered not knowing it?

danielmiester 11 years ago

"if someone asked me to write something in any 6 of them I would have to look up some of the syntax to know if it needs a parenthesis or semi-colon. Is that considered not knowing it?"

I feel that that is a downfall of being a polyglot. I have no qualms about keeping documentation at the ready. Especially for myself, as I regularly switch between javascript(5 and 6, and various frameworks),xml,html,python,bash,c in my day to day. I feel its much more important to have general knowledge/skills than specific details. The fact that I have to look it up to know if I need to use .toUpperCase() on a string, or just .toUpper(), or if it is an instance method, or a global function, should be of no consequence. If I am regularly having to look up how to USE 'if' statements (as opposed to just syntax: [does this language use && or 'and]) that should be concerning. I think a better test would be "Here's a method from our codebase, but I broke it. How do I fix it" Just be sure to break the logic of the code, instead of the syntax. I may or may not find the syntax error, but I damn better be able to identify a non terminating while loop.

ubertaco 11 years ago

There are levels of "knowing" a language.

I've been writing Java since I was 14 (for 11 years now). I write Java on a daily basis for work, and I can't remember the last time I had to consult a reference on syntax. I would consider that "fluent", to use an analog from spoken/written languages, and I'd obviously put any languages in which I'm "fluent" on my resume.

I've written a lot of Python in my personal time over the years, and have a good understanding of what "idiomatic" Python looks like (comprehensions over iterators/higher-order-functions, "is"/"in" over "=="/"indexOf", etc). I would consider this "conversational", and would put it on my resume too.

Then there are languages that I have not written any projects in, aside from tutorial-type-things while learning them. These are more on a case-by-case basis; ones that I'm more comfortable with (like Elixir or Haskell) I might put on my resume with a note that I'm at a "beginner" level of familiarity; I understand many of the language concepts, but would need to consult reference material frequently, and my code is not likely to be idiomatic. With these languages, I'd ask myself the question of how comfortable would I be accepting a job where I did nothing but write code in that language. And obviously, I'd need to explain in an interview or phone screen that my knowledge is still basic.

  • aerovistae 11 years ago

    Whoa, hold on, since when is 'is' preferred over '=='? What kind of python are you writing over there? Those are for totally different purposes. One tests equality while the other tests identity.

    • clintonc 11 years ago

      For example, 'if x == None' versus 'if x is None'. The latter is to be preferred (since identity is faster and more clear than comparison), but you see the former sometimes.

xyclos 11 years ago

I will generally ask candidates a few questions about every skill on the resume. So, if you're not comfortable answering a few general questions or having a meaningful conversation about the skill then you should not include it on your resume. Including a skill level can help frame the conversation or give context, but if you can't provide 2-5 minutes on the pros and cons of the language/skill, then I'll assume you don't actually possess that skill.

  • jjjjjjjjjjjjji 11 years ago

    I've been doing iOS development for 2 years. As an employee around 9 months, freelancing over a year and so on.

    If someone asked me what is some pros and cons about Objective-C I really don't know what to answer.

    I am not really fuzzed about language details, if someone gives me python - I will use it, perl - sure, bash? why not, c++ - sounds like fun and so on. I just don't care, if the language can solve the problem, then I can figure out how to use it for the problem at hand.

    Sure some languages can obviously do tasks faster/better because of language details - for example I used Python recently because it was easier to write a script to handle some files, usually I'd use bash scripting.

    I've been programming for years and years and I can solve most problems that are thrown at me, no complaints from co-workers or anything like that.

    How should I deal with this "interview" question? Just read books? I never got these arguments online where people feel so strongly about whatever language X or Y.

    • dktbs 11 years ago

      I assume (perhaps wrongly) that the interviewer is less interested in your opinions of the language and more interested in your ability to talk competently about the language for a few minutes.

gtk40 11 years ago

I went through a big interview spree after finishing my undergraduate degree this spring. I have one company that I was very excited about potentially working for. The job description was for a "Software Engineer" with no particular tools listed, but wanted experience with some things like databses, web apps, and so forth. I had worked several days a week during my senior year at a .NET shop (now working here full time temporarily until my next job starts), including some ASP.NET MVC and some other web-related work.

I put a section on my resume under education with relevant coursework. I noted there that I had taken a database course as part of my CS cousework and put "Databases (primarily MySQL with interfaces in PHP and JS)," as about 90% of the project-related courework involved using MySQL databases with web-based interfaces.

In the inital phone interview, I had a nice chat and talked about some of my former projects, familiarity with other languages, where I made it known I was fairly comfortable in JavaScript and Python and some other language, and most of my professional/educational experience was in .NET and Java. He asked about the databases course and I explained what the curriculum went over and the final project. I explained all I had used PHP for was a few database calls and that I wasn't very experienced with it.

Then, at the first technical interview, it was entirely in PHP. The interviewer mentioned it at the start, and I explained my level of familiarity (very little). It was asking about how specific data types behave in PHP, global variables, differences in PHP 4 and 5, and was entirely about PHP. I did my best, assuming wrongly about things like global variables, and so on. I never got a call back.

I removed PHP and have since only listed the technologies in any way that I am ready to interview in.

brickcap 11 years ago

For me it's when you can start reading and understanding the code that other people wrote. This does not mean that you have to understand the "why?"(which can be a bit hard without context) behind the code just the "how?".

I think it is a good indicator of how comfortable you are in your chosen language.

loumf 11 years ago

For your resume, the list of languages should be roughly in the order you would want to work in and can answer questions in.

Then, for each job, list the languages used in the order of how much you use them (or know them).

For example: If I see Ruby on your list, but it's after Java and C++, and then I look down the list of jobs and see that your current job is in Java, and the one from 3 years ago was in ruby -- I know what to expect.

If you still want a job with ruby (and the above matches your situation), then bring it up in the cover-letter -- explain why you would be a good choice (and probably you should practice ruby before any interview)

I've see people do "Proficient in" and "Familiar with" lists -- but really -- all I want to know is: will you be productive on day one with this technology, or do you need a refresher (and then I can decide based on my needs)

jabv 11 years ago

Actually, I wonder about this from a non-technical guy's perspective as well (my work has mostly been in implementation and support). I have listed basic experience with a language on my resume, and I know that is a useful little nugget to non-technical hiring managers. When asked, I am pretty clear about the small scale of things I've built, but I still wonder if it is a little disingenuous because I don't actually know squat about data structures or algorithms, and I am not a competent programming problem-solver. (Sorry if this is a little off-topic.)

kzisme 11 years ago

I've seen on most resumes if someone knows a language their experience with that language is also denoted.

ie:

Python[Expert] Scala[Intermediate] C++[Beginner]

I suppose you could do something like that just to make everyone who reads your resume aware of your specific skill set - instead of generalizing.

  • jabv 11 years ago

    Of course, the OP probably isn't sure how to differentiate between even those categories, because he feels he could use any of them at his general level of programming expertise as long as he had a syntax reference.

    • ndominOP 11 years ago

      Yes, I think the reason I didn't include skill levels was because at some point I saw a post talking about the uselessness that comes with some of that. It may have been a bit extreme but what does PHP [Ninja] or Ruby [Tadpole] really indicate?

      Although [Beginner] is pretty different from [Expert] no matter what, the expectation of a beginner or expert may vary widely from person to person.

      • 88e282102ae2e5b 11 years ago

        It's a good way to position yourself for the kind of work you'll get, no matter how it's interpreted. If you write that you're a beginner Ruby programmer, and then after getting hired you're asked to write an entire application in Ruby by yourself, you can say in a defensible way, "That's fine, but I'll need constant help and code reviews and it's going to take a long time as I get up to speed."

        If you got any pushback at that point you could ask them why they tasked the beginner with this project, when you clearly claimed you were not an expert.

        The other levels can be played similarly. An intermediate person could be assigned to some project and be expected to perform mostly independently, but if there were any non-idiomatic code or poor optimizations, they could just shrug it off as a learning opportunity. "I'm no expert" you can say.

      • kzisme 11 years ago

        I mean, when choosing titles for experience level - it is always better to use common words rather than buzzwords( like Tadpole or ninja)

        Although the difference between levels may vary from person to person - your projects section should also reflect your listed skills.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection