This one is another tricky question that can cost candidates in job interviews some nerves. Let's face it, most of us find it dumb. But you can turn this question into a massive win for you.
You could go ahead and call it dumb now, but there is more to it than only the sheer will to bring candidates to sweat during interviews. But it serves a purpose. Such a question might not be the best question or even way to get this kind of information, but it exists, and from time to time, you will have to face it. And if you want this job, you need to deal with it.
You somehow have to tackle it and deliver a satisfying answer. And the actual idea of this kind of question is to test your self-awareness.
It tests how:
- You perceive yourself
- Well you rate yourself
- Good you are at self-reflection
- Much thought you put into yourself and your answer
- You react to such a question
Being a professional means applying a certain skill set regularly. A software developer usually develops a lot of software (surprise!).
- Thinking about
solutions, for example.
And it also includes coding.
A common expectation, especially from employers, is that employees get better over time. They invest in their employees by educating them further, giving them responsibility, and letting them roam free from time to time. And this leads to them expecting a certain ambition of you to progress further and get better in your craft. But for you to get better, you need to be aware of where you are currently at. And this requires regular self-reflection. If you know where you are currently, you can plot a path to your goal. You will also, most likely, be able to assume whether you can solve a certain problem and when you need help. If you take too long to think about this question and then respond with a generic answer, it can indicate that you haven't spent much time on self-reflection recently.
Even further, only a number is usually not the expected answer. You should give a reason as to why you answer with a specific number. "Oh, an 8" is an answer, but it doesn't tell why you have actually come to this conclusion. Interviewers really expect reasons. Don't underestimate this. They will judge you based on the answer and reasons you give. There is not even a right answer to this question because usually, no one will try to assess whether an 8 or 9 is justified. It's all about how you deliver it.
As you've previously read, it's all about how you deliver the answer. This requires some preparation on your side, like many other questions and interviews in general do. Take an hour or less while you prepare for your interview and rate yourself honestly. Do this based on the skill requirements of the job ad, at least. Create a table and rate how good are you at:
- API Design
This table should contain:
- The skill
- Your rating
- A reason why this rating is justified and how you improved in it recently
Bonus points for you if you try to imagine what else, besides each hard skill listed, might be interesting for this position.
This prepares you at least for such questions that aim at anything possibly previously known. A neat side effect is that you actually work on improving your self-reflection skills. It might well happen that you get asked to rate yourself in something that has nearly nothing to do with the position you interview for. I personally hate when interviewers do this, but it happens. In this case, you will still be prepared to come up with an answer before it is too late. Also learn to say your thoughts aloud, so interviewers don't need to watch you silently thinking about a satisfying answer. This can give bonus points.
If this question comes up, you will most likely be prepared for it. You will have self-reflected during your preparation and can honestly state your number and argument for why it is justified. Go ahead and deliver your answer. Show your interviewers that you are prepared for this kind of question and that you won't let such a tricky one fool you. You have self-reflected, and it's your right to show that you did.
Let's now look at an example answer.
"I think I'd give myself an 8. Due to the extensive work I did in my last projects where I worked as a Senior Developer, I could improve my skills a lot. I was especially able to work more with Promises, and async/await and understand this topic better. But I still think that even to get close to a 10, I will definitely need more exposure to lesser used language features like asynchronous generators and generators in general."
This is an answer that contains everything an interviewer could ask for.
- Rate yourself
- Give reasons for it
- Show you are aware you improved and
- also know that you still lack in some areas
And that's it then? Well, yes and no. You can answer this question and finish your interview, but there is also a way to really crush it, which comes next.
So, what then if numbers are a terrible indicator? If the question mostly exists to assess your self-awareness, why not think outside the box and give another answer that still satisfies your interviewer's expectations? Throw any numbers away and better state that you know relatively well where you stand.
Let's say you previously worked as a frontend developer and also interview for another frontend developer role. Don't you think a lot of your experience is transferable? As long as you build SPAs, they will most likely consist of the same building parts no matter where you work. And as long as you are aware of what else a certain language or framework has to offer, you have an easier time stating what you haven't really worked with yet. The actual strategy now is to show that you know what you worked with and are aware of what you haven't worked with excessively or at all yet.
Let's take a look at an example next to show you what crushing this question is about.
"Thank you for this question. I would really like to give you an honest, self-reflective rating of my skills, but I think that numbers are a terrible indicator of skill level. You can ask three nearly identical developers how they rate themselves in the same skill, and you will get three very different answers.
I think it is better to tell you where I have a lot of experience and where I believe I still need to improve. In the last few years, I worked the majority of my time on creating base components. This gave me extensive knowledge of functional React components and enabled me to get deep insights into React's rendering loop.
Due to the nature of these base components and a user base of around 500 company-internal frontend engineers, I also tackled many accessibility issues and gained a deeper understanding of the field. But I have to admit that I couldn't work much with remote calls and the fetch API. I would even go so far as to say that I definitely need to improve my frontend data skills. This also holds true for server-side React. I wasn't able to work much with Next, for example.
I do, however, highly believe that if you give me the chance and time to catch up, I will be able to do so relatively quickly while setting myself up to become a great contributor in my future team."
This answer should usually tell your interviewer much more than a common answer with a number and some reasons. It additionally shows that you are aware that certain "rating systems" are bad and that you still know how to show what you know and don't. You reflected deeply about your past and are even aware of what you might need in your future position. No interviewer can ask for more. If they do, you can still stand up and go. This company isn't worth it then.
I'd love to count you as my ever-growing group of awesome friends!