13. Should frontend developers learn data structures?
I love receiving replies to this newsletter. I read + reply to each and everyone of them.
One of the recurring questions is about getting jobs :)
Here’s a snippet from one of them:
I used to think that interviews would be more towards how well you do what you do in your day-to-day job. If you don’t know how to solve some of the complex DSA problems you are not a good candidate. Any advice for someone who is trying to get better frontend opportunities in future?
Interviews are a broken problem, they usually don’t represent the day to day. It’s sad but true.
To understand how to do well in an interview, you need to put yourself in the company’s shoes.
There are 2 scenarios when companies put up job openings:
-
The company knows exactly what they want
This job opening is usually aspirational. It represents where the company wants to be in the future instead of wherr they are now. They are looking for a pro rails API developer, an accessibility expert, a frontend team lead, etc.
With these, the interviewer is trying to make sure you can handle the trickiest situations that the team will find themselves in. Your day to day would of course, be pretty simple.
Interviews for such roles start with some questions/tests to prove you know your stuff and then revolve around what you can do for the company and the sort of environment the company provide to you to continue your learning and growth.
-
The company has no clear job profile for the role
This happens when the company is trying to beef up some teams, start new products or when they are hiring freshers. The focus here is on smartness + attitude rather than specific skills. In situations like this, the company has to interview a lot of people, so they put quick filters in place like which college did you go to, your grades, how many “keywords” did you write in your resume. Of course, these criteria don’t mean the person will be good at their job, but, it’s a way to increase the chances.
The interview process includes coding challenges that test your quick thinking and programming skills. If you’re a fresher, then be ready to solve problems from subjects they teach in college (data structures, algorithms, compilers, etc.)
Does that mean frontend developers should be good with data structures and algorithms?
Nah! Well, kind of. Maybe.
Here’s the scoop: Most companies, especially startups don’t care anymore. They care if you are really good at what you say you’re good at.
For frontend developers, that’s javascript basics, CSS, at least one framework, performance optimisations, etc.
Again, that’s a lot and doesn’t represent your day to day, but useful to have under your belt when you need it.
Some super big companies continue to insist that data structures and whiteboard questions are important for them even if it’s not part of the day to day. These companies are so sought after, that they get to make their own rules.
I try to stay away from such companies, but when one of them reached out to me last year, I thought I’ll give it a shot. I even did some studying up on data structures. They didn’t ask me any direct questions, but it was definitely useful for the whiteboard problems (I was worried they’ll ask me to implement a binary tree on the spot and I’ll just have to raise my hands)
I screwed up the interview but it was really fun learning something out of my usual stack. If you invest some time in learning academic concepts, it can only be good for you. (In fact, let me share what I learned next week)
So, you have to either play by their rules or find a way to stand out.
Which brings me to:
How to stand out?
I’ve only changed jobs once in my career, so I’m no expert, but I’ve been on both sides of the table to know how things work. (I’ve hired and fired people + helped bunch of developers get better jobs)
-
Give the interviewer something to talk about
Again, put yourself in the interviewer shoes. Their have to figure out if you are going to be good at your job.
The standard way to do that is to read your application email/resume first and try to guess what are you into. The interviewer most likely would not even read your entire resume, so make sure you make it as useful as possible. If you’re sending an email, briefly talk about past experience or skills that match what they are looking for.
If your application lists technologies relevant to the company, they’ll give you coding challenges and questions about them. This is your chance to show that you’re the right person for the job. I was surprised to see the number of people who send the same 2 page long resume to every company they apply to.
-
Show you can already do the job you’re applying for
If you take away just one thing from this post, let it be this one.
In your application email, add links to projects you’ve built using same tech stack the company uses. This doesn’t have to be a big complex application, just a tiny thing that let’s you show off your skills.
If you don’t already have a project that matches their stack, build one!
Bonus: Write an article teaching how to build the thing you just did and post it on medium, twitter, etc. This not only makes your interviewer believe that you know your stuff but also forces you to explain it better.
In some cases, I’ve been able to completely skip the coding round because they already reviewed a sample of my code or read my article on their stack. Almost always, the interviewer would bring it up and discuss it for a few minutes. That’s like playing the game on easy because I’ve already had a chance to think about the implementation details of the project.
(Fun story: In an interview last year, my interviewer told me they really like one of my open source library and use it on production, then he gave me a simple coding exercise because protocol ¯\_(ツ)_/¯ )
This definitely requires extra effort on your part, but the rewards are totally worth it. Just make sure you understand all the parts of your project and show the code to a few other people to get their feedback.
-
Get a warm introduction
I’ve almost never had a positive response when I’ve applied through the careers page. That’s because they get hundreds of applications which are filtered by their HR/recruitment team.
You know what happens next, they apply the easy filters I mentioned before to narrow down the applications to a handful of people they can meet and interview. I don’t clear these filters because my resume says I went to college for Physics not Computer Science😅
Instead, ask a friend to refer you directly to their manager. There’s research to prove that referrals have way higher success rate than direct applications.
If you don’t have friends that work in places interesting to you, that’s okay. Neither did I. Attend meetups and meet some new people.
Meetups are always on the lookout for new speakers and they’ll be happy to let you share your learnings from the project you built in step #2. After your talk, tell people you’re looking for a new job 😉
Last year, I was able to score a few interviews this way because people who were working on the same tech stack were happy to discuss their work with me. (This is a great life hack for shy people like me because I didn’t have to walk to strangers to awkwardly introduce myself 😅)
If you’re in Bangalore, drop a line to the local React meetup, we love first time speakers.
But, What if you’re in an area where there are no meetups? No worries, you can replicate that on twitter. That’s what Nitin did! He builds things and then shares what he learned. It helped him talk to people who were also building things in React.
Side note: Don’t spam strangers to refer you. Referrals only work if the person on the other side first likes your work and then you ask them to refer you.
And that’s it! Hope this was useful in your journey
If you’re looking for a job right now, feel free to get in touch with me for reviewing your application.
Sid