An ability to work with a variety of programming languages is practically mandatory for a modern web developer. But when is it appropriate to say things like ‘I know Java’, or ‘I can do C++’?
It may surprise you to learn that the answer to that question depends not exclusively, and perhaps not even primarily, on your level of mastery. Rather, it depends on the person you are talking to.
When someone asks if you know a programming language, what they are doing is trying to extract a specific type of information from you – a type that is not necessarily and not always about your skills. These are a few quick tips on how to make sure you know what’s being asked of you.
How to answer the question…
…if you’re in a coding interview
Rest assured, your future manager is not going to care a jot about how ‘accurate’ your answer is, much less about the more airy aspects of what it really means to ‘know’ a coding language. For him/her, there is only one thing that matters: whether you can deliver results on their project.
This is not the time to be humble: as long as your code compiles and you can write it in a reasonably timely manner, you know that language, and it doesn’t matter how many references you’ve got to Google. If you’re unsure, then bear in mind that the interview will include a coding challenge/exercise which will reveal your precise level of skill anyway. Just don’t disqualify yourself in advance by subcommunicating that you can’t do something you’re perfectly capable of.
…if you’re talking to a fellow programmer
…if you’re teaching or presenting
This isn’t a situation you will necessarily find yourself in very often, especially if you’re a junior developer, but it’s the one where the standards are probably the highest. If you’re holding a product presentation with your clients, or if you are filming a coding lesson on YouTube, then ‘knowing a language’ doesn’t just mean that you can write functional programs in it – it means that you’re ready to take questions on it, including fairly sophisticated ones.
Bear in mind, if you’re teaching or presenting, people asking you questions is exactly what is going to happen. And because your credibility will depend on your ability to answer them, you had better be very well prepared before saying you ‘know’ this or that language.
…if you’re talking to a colleague in your own team
As with the tech community in general, this is a case where it’s best to veer on the humble side, but this time for different reasons. If you’re new to a job, your colleagues will want to know where you fit in the team, and how you can be useful.
You don’t want to downplay or hide your value, of course, but at the same time, it will be more helpful to highlight the two languages you know best and let your colleagues know you can be their specialist with them, than to say you know 8 different languages. If you do that, they won’t be sure how to use you, and you may end up being given tasks which aren’t your strongest suit.
…if you are assessing yourself
If you are not interacting with anyone, and are merely trying to figure out what it means to know a programming language and whether you can say that for yourself, then the question becomes almost purely subjective, and the answer will probably say more about you than it will about your programming skills.
For what it’s worth, though, there are two things you should probably keep in mind. Firstly, as we mentioned, it’s not possible to know everything about a programming language (any more than it is for a natural language), so don’t let that be your standard. Don’t tell yourself that you don’t ‘know’ something just because you haven’t reached that impossible level.
Secondly, let your own comfort guide you: regardless of what specific skills you may or may not possess, what is probably the most important yardstick is how well you’re able to think in a language. The ideal level for any programmer is that in which you can think of a problem and its solution on their own terms, rather than thinking of how to negotiate the language as an additional problem on top of that. While there are different levels for this concept too, it is a useful yardstick: whenever you instinctively, naturally see a programming language as the tool to solve the problem and not as part of the problem itself – that’s when you can finally, really say you know it.