Cracking The Frontend Interview (3 Part Series)
After having a job at your dream company, you often realise that tackling the interview is more difficult than working at real projects. Let's take an overview look at what to focus when preparing for the frontend (front-end / front end) developer interview.
Cracking the Frontend Interview is an original series on my preparation for frontend interview, this series acts like my notes and summary on what's really important to tackle the job.
- Part 1: Overview (this post)
- Part 2: HTML
- Part 3: CSS
- Part 5: React
- Part 6: Browser
It's personal preference to pick other JS frameworks like Vue or Angular, server-side languages like PHP, Ruby, Python, Java, C#, etc. Just pick one and being good at it, there's alway open jobs out there for you.
By failing to prepare, you are preparing to fail. (Benjamin Franklin)
Different job levels require different responsibilities and minimum qualifications. Different companies establish different expectations to filter candidates who fit well with their cultures. Whatever situation is, here are 5 factors that may have an influence on your way looking for a job:
Technical proficiency: I strongly believe that
skills beat experiences. If you're good at what you're doing then you'll have all the confidence in this world. You'll create your own luck. You can even build your own products if no one hires you.
Years of experiences: Many companies filter candidates by number years of experiences! It may not be effective, but it's a simple mechanism when hiring senior or manager level! A matter of fact that many of us are mediocre engineers.
It sounds debatable but it's true. You'll see many engineers who actually stack years of experiences without advancing at all in big companies.
Personal projects: Anything like hobby projects, side projects or open-source projects will count. These make you stand out from the rest. Invest on these as soon as possible, especially fresh graduates who don't have previous working experiences.
Former employers: Who doesn't like a candidate previously worked at Google or Facebook (Unless companies don't have enough money to pay 🤑)! Having a list of former prestigious employers (relative to your market) will give you a huge advantage position in the interview process.
Interviewing skills: Competition at prestigious companies is fierce with thousands applications from good engineers around the world. You need extra gear like interview skills to be the chosen one.
You may have heard stories people somehow got a decent job by luck with tips and tricks, focusing solely on problem solving skills. But at the end of the day, you'll be working with these technologies day in and day out, being a decent engineer is always your north star.
Basics: having basic understanding of computer science including problem solving, design patterns, system design, networking, database, etc.
Whether you love or hate
Data Structures & Algorithms, you have to take considerable amount of time to practice. Majority companies are using it and it's not going to change anytime soon.
There are many self-taught frontend developers these days who don't have time to learn computer science fundamentals properly. It's okay as long as you can do the job and make enough money for your life. But it doesn't mean it's safe to skip this, I mean it's a shame to call yourself a software engineer who doesn't know about computer science.
HTML: Quite easy to pick up, not any fancy things here. Expected to know at least available HTML elements, how DOM works, Semantic HTML and HTML web storage.
CSS: Learn proper raw CSS, how CSS engine works and Responsive Web Design. You may only use CSS frameworks all the time but a frontend engineer doesn't know to layout using raw CSS seems a bit shamed to me. Check css-tricks to cover event more.
React: (or Vue/Angular) Just pick one and never look back, knowing only one is going to be just fine. Pick the exact one your dream company is using would be a huge advantage.
There are many more web technologies to learn that I can't cover here. Check frontend roadmap for the exhausted list. The more you know, the more advantages you have compare to other candidates.
Try not to get lost in the maze of frontend technologies.
Your dream company is a living entity which has standards and principles, trying so hard everyday to deliver their core values. You both should have a good match, or you could end up working miserably months later.
Know yourself: This is so important but underrated. You should define your own principles. What you really want. Who you really are. What you've done. What you can offer.
Know your dream company: This is when you respect the open internet. Things are much more open these days with the rise of community like forums, groups, twitter, etc.
Practice telling stories to meet the cultural fit: When you find a good match between a company and yourself, adjust your life stories and working experiences to emphasize that you are a good fit to that company. I'm not talking about lying. I talk about telling your stories in different ways.
It doesn't take much time to write a good resume by following tons of tips around the net.
Research the market: Look around, track all open positions you want to apply into an excel file. Give them a priority order.
Revise your resume: No one forbids you from submitting the same resume to all open positions ! Many do that 👹. But revising resume a bit to fit the position (frontend engineer, fullstack engineer, software engineer, etc) is recommended.
Submit job application: There are many strategies here (one at a time, multiple at a time, dream companies first, dream companies last, etc) and via referrals, recruiters or job boards. Do whatever you want. I found submitting via referral is the best to guarantee you an interview slot.
An interview process at a company starts when you receive an email or phone call from recruiter to setup the interviews. Recruiters often follow your decisions on date and time of interviews, so buy some time if you need to. Following are 5 common steps you'll encounter for technical positions. Interviews at different companies may differ in terms of order and number of interviews, you better prepare all these 5 types when applying multiple at the same time.
Having phone interview w/ hiring manager: Undoubtedly the easiest one. One reason is hiring manager is often professional and conventional so you can predict what will be asked and prepare for it. Other reason is most questions are behavioral questions, we all assume behavioral questions are easier than technical questions, right? 😋. Hard to fail if you know the company well and align your answers to fit the expectation.
Having phone interview w/ team member (1-3): Normally you'll have from 1 to 3 phone/video technical interviews with your potential teammates. Some companies focus on data structures & algorithms. Others focus on frontend technologies only. Better ask recruiters before these rounds to have better preparation.
Having take home assignment (sometimes): Some companies may ask you to deliver an assignment in couple of days. I had experiences at this step as interviewer who reviewed candidates' assignments, I can tell you I was always very harsh because I had plenty of time to look at the code 😂. So please try your best to code beautifully and test appropriately. A little investment in UI/UX design would be awesome. Some people may think about cheating at this step. Don't! You may end up very embarrassing later at onsite interview.
Having onsite interview: Regardless of how many interviews I took, I found myself very nervous and tired at this step. You simply can't cover your lack of knowledge after many 1-on-1(2) interviews all day long. You're better good at what you're applying for or this could give you a damage on your confidence later.
Negotiate the offer: It's awesome to finally get here, you're almost there, don't screw it up 😅. Try to balance between what you know about the market, working environment, project status, career development and compensation package.
Be a professional candidate. Sound cliche but never hurts if you are. Fresh graduates might not know how to do this. Experienced engineers sometimes are arrogant and act like a 🤬.
Unprofessional interviewer exists. Not many companies have seminars to train their employees how to conduct a professional interview. Software engineers often asked to do the technical interviews without a solid understanding what the company actually looking for. You may encounter some interviewers who are very technical bias, looking for someone similar to them, asking personal questions, humiliating candidates, etc.
Good enough is good enough. I can guarantee that you can never cover all technologies need for your upcoming technical interviews. The more you learn, the more you know you don't know! Better to set a deadline and go for it.
Be patient with hiring process. One-shot interviews are rare these days unless you're exceptional and invited to work by companies. Most of us will go through very long and grueling interview which might come in vain if we fail any step of it. This is especially true applying to small non-prestigious companies when we're constantly questioning ourself whether the efforts will pay off or the offers end up very disappointing.
Calm, compose and collect. Don't stress out, prepare seriously and you'll be doing just fine. Wish you all reading this post to have very successful interviews in the future.
It’s also important to note that if it doesn’t work out the first time, it’s not the end of the world.