How many projects have you worked on before your coding interview?
This is a great question to ask. Many people believe that coding interview is all about those programming puzzles and no one cares what you have accomplished in the past.
However it is not the case.
Put yourself in an interviewer’s shoes. If you were asked to select someone to work with you, would you care about what he/she was working on in the past?
In reality one’s past experiences, past projects are very important not only to help him land a good job, but also let him be a better engineer in general.
In this post, I’ll talk more about this topic and projects and those coding puzzles are just two sides of the same coin.
1. People do care about your past projects
The common misunderstanding is that those coding questions are the only thing people care. It’s not true.
Remember that the first step of your job application is resume screening. With standing out working experiences and lots of interesting projects, you definitely get better chance of getting an interview.
Also one of the common question you will be asked in the beginning of an interview is what projects have you worked on or what’s your last project. The interviewer may also discuss with you in details and see what difficulty have you encountered.
Actually these are all being evaluated.
In addition if you are a new grad, then your past projects is a very strong factor to make you stand out from rest of new grads as most people are kind of lazy at school.
So why most interviews seem to focus only on coding questions?
There are several reasons:
- It’s the most cost efficient way to select candidates. You can’t spend a month to evaluate someone’s work before hiring him.
- Your experiences are actually evaluated at the same time (I’ll get to this point next).
- System design interview is a great way to evaluate your experiences.
- More and more companies are proposing project-based interviews like online challenge.
2. Experiences/projects are not totally separated from coding questions
First of all, everything gained through real life experiences will be more solid and natural to you.
For instance, if you have ever worked on something related to cache, you can hardly be confused about basic concepts like hash and time/space trade off even if you haven’t prepared for a while.
That being said, when you are asked about something related to your past projects in an interview, everything just comes naturally to you and you won’t struggle to remember if you have seen a similar puzzle before.
Secondly, your code reflects your experiences.
Coding styles is quite obvious. Besides, your variable naming, dividing big function into separate ones and so on can also be used to tell if someone has worked on many projects before.
3. Interview is all about communication
Without communication, you can definitely take an exam rather than an interview, which is exactly why interview evaluates more than the final answer.
When discussing about your thoughts, your solution or just anything, your experience plays an important role in between for sure.
In other words, an experienced interviewer can easily tell if someone has many real life experiences in the past by just discussing with him/her.
For example, when comparing two solutions, a good candidate will tell you time/space trade off and so on so forth. But an excellent candidate will consider more than that, like whether the design is readable and easy to understand for external usage, whether it’s easy to test, whether we can use a separate module etc..
4. Your past projects are strongly related to system design questions
I always suggest that the best way to prepare a system design interview is through projects and the more I think about it, the more I believe that it’s true.
This is exactly why experienced engineers usually perform much better than new grads.
When you have worked on a lot of real life projects, designing a new system is just a common thing to you.
You can borrow experiences from the past or you may just have encountered a similar issue before, the solution just comes naturally.
You know exactly how to approach a new problem, like thinking high level ideas first, dividing into separate modules. It’s because you’ve done the same thing so many times before.
5. You may not hire an IOS engineer with no IOS experience
I won’t say that all IOS engineer positions won’t hire anyone with no IOS experience as it’s unfair to interns or new grads.
But I would say if you have built many IOS apps in the past, definitely you’ll have better chance.
The idea here is that if you are targeting a very specific position like Android engineer, AngularJS engineer, your past experience can really make you stand out.
It doesn’t matter if your past job isn’t related to your new role as you can work on many side projects. In fact, many companies like to evaluate a candidate via his/her side projects.
If you are a good engineer, you should love to build things even if you are not paid for.
6. Should you start building more projects to ace an interview?
If you only have one month left, I don’t suggest you do so as focusing on coding questions will do you more good for sure.
However if you have more time left, say half year. You should definitely consider working on something interesting in parallel with your general preparation timeline.
This point is even more important for students as they don’t have much experience normally. If you were able to build many interesting stuffs, no matter it’s a simple website or some open sourced projects. it can make you stand out for sure.
However, I don’t want to give you the impression that you are building projects for interviews.
It’s really the tip of an iceberg. What you can benefit from this is much more than preparing an interview in fact.
In other words, even if yon’t have an upcoming interview, you’d better still spend some time building things interest you as most of excellent engineers I know have a lot of side projects.
I often felt uncomfortable when someone asked me if one of his projects would do him any good for an interview.
I would say people work on different projects first to interest themselves, second to improve themselves by gaining more experiences, lastly this can be beneficial to their interviews, which is really a kind of side effect although it’s quite effective.
Also there seems to be a trend that companies like to use project-based interviews to select candidate.
You may need to complete some online challenges or work on a small project given few hours.
Again software engineer is different from math and physics as the only way to improve is through real life projects rather than books or puzzles.
What do you think?