Uploaded by den96rul2

frontend-unicorn 2

advertisement
Table of contents
1
Who am I
2
Who is this book for
3
Required technical skills
4
Creating a portfolio
5
Creating a CV
6
Creating a cover letter
7
Online presence
8
Finding the job and applying
9
Handling the initial call
10
Solving the recruitment task
11
Handling the on-site interview
12
After the interview
13
Bonus chapter - proactive job search
14
Resources
1
Who am I?
About me
You may be wondering why you should listen to my advice.
Actually, I hope you’re asking such a question. There are
thousands of sources to get front-end knowledge, and your
time is precious, spend it carefully.
I’m a self-taught front-end developer with six years of
programming experience. For the last three years, I’ve been
responsible for recruiting junior front-end developers to my
company.
My path to programming was a bumpy one. From the kid
discouraged from pursuing the career by people claiming that
my mediocre mathematical skills are not enough, a serial
reject from junior front-end positions, to the software
developer and eventually co-owner of a software house.
I was on both sides - candidate and interviewer. I was rejected
from junior positions, sometimes in a humiliating way. That was
hard. And that taught me how to apply. How to create a
convincing resume, how to study and present yourself in a
positive light. How to win the interview game.
After a few years in the software development industry, I
started to interview the candidates. I learned the most
common errors the candidates make. The things that make
recruiters reject them. I learned what differentiates successful
candidates from unsuccessful.
Enough about me. It’s time to start thinking about you.
2
Who is this
book for?
Who is this book for
The sole purpose of this book is to help you find a front-end
job. It may be your first job or the second one, the critical thing
is that it covers the steps for junior roles. Higher-level positions
have different requirements.
There are many books on similar subjects (I'll recommend
some of the best in the resources chapter) but what makes this
book unique is that it focuses on junior roles. Landing first job
is a unique experience - the criteria are often different than for
more experienced developers. That's why most of the typical
advice you can find may not work for you or even waste your
time.
The book revolves around web front-end jobs. When applying
for mobile front-end positions, you can use my advice, but the
details (especially the tech stack you need) will vary slightly.
Keep in mind that this book is especially beneficial when
looking for a job in a smaller and middle-size company. This is
because I combined my experiences with the experiences of
other recruiters working in companies of different sizes, but
generally not the biggest ones. This book is the essence of this
knowledge.
Recruitment processes for FAANG (Facebook, Amazon, Apple,
Netflix, Google) and other giant companies are different. So
often, it's good to have a book or tutorial precisely prepared
for the company you aim to work for. That being said, I'll cover
all of the typical recruitment process's possible steps, even
those used only in big companies.
The good news is that most jobs you can reasonably expect to
find as a junior front-end developer are in smaller companies.
“
Front-end is new.
It's been around
for around 20-30
years. And it's
moving fast.
Getting a job in FAANG without a degree requires you to
spend months preparing for the recruitment process. The
months you could spend on building applications and solving
real-life problems.
So my advice is to start with a smaller company. Even if you
dream about working at Google or Facebook, start small.
When you land a job and start getting paid to code, you can
switch your attention from getting a job to getting a dream
job.
This book aims to give you all of the tricks and tested
resources I know to make your recruitment process more
manageable. Your job is to prepare for everything they may
have for you.
Good luck!
3
Required
Technical
Skills
Required technical skills
Before you can start applying for junior positions or
internships, you need some minimum technical skills. The web
overflows with advice about what is necessary and what isn't. I
mean really overflows. Unfortunately, most of the advice is
based on misperception, information from typical job
postings, or a hunch.
In this chapter, I’ll outline which skills you actually need, which
are nice to have, and which can give you an edge to get a job.
Keep in mind the front-end is new. It's been around for around
20-30 years. And it's moving fast. The tools you're using now
will change. Being a software developer is a process of
constantly updating your skills and expanding your toolbox.
But there are some essential skills you'll need to get a frontend job in the foreseeable future.
Must have skills
Three technical skills are critical for every front-end developer
- HTML, CSS, and JavaScript. The common question is - what
skill level is enough to get a job. It will change from company
to company, but the rule of thumb is - you need to have a solid
understanding of those languages and the ability to write
them at least partially by hand. But you don’t need to know all
of the specifications by heart.
Your skills are easiest to assess in the case of HTML. To
become good enough in HTML, you have to know around 3040 most popular HTML elements and their semantic meaning.
You should know what element is semantically correct in each
use case and why it matters - that means at least partial
knowledge on accessibility and SEO. You should know the
basic rules of nesting - which elements can and can't be
parents of other elements. Also, you should create a few pages
using only HTML and see how they look in different browsers.
Knowing enough of CSS is a bit more tricky. After a week or
two playing with it, you may feel comfortable. At this same
time, after a year of working, you can suddenly discover you
know nothing about it. To know enough of CSS, you need to
create at least a few different pages. An excellent way to test
your skills is to try copying the sites you like (but no cheating,
don't copy their code, you can only get colors and images).
Other things you have to know are responsive design and what
properties are supported by browsers (use Can I use to check
it). You should also know and be able to name a few CSS
frameworks and methodologies.
It's hard to measure your JavaScript skill and know when
you're ready to start applying for jobs. But there are some core
concepts you need to know for sure. The critical thing for you
to learn is DOM manipulation. You'll probably use a framework
in your daily job and don't interact directly with DOM, but you
need to get this basic knowledge to work effectively. Some
other things you need to understand deeply are:
• Scope
• Closures
• Array methods (especially map and filter)
• Asynchronous JavaScript - promises and async/await
• Arrow functions
• Destructuring
This isn't, by all means, an exhaustive list. But it should help
you understand what's needed to use JavaScript comfortably.
Take into account these are the topics you have to know
deeply, not just read about them, but use them in real projects.
The concepts above introduce us to the final tech you need to
know to find a job - one of the JavaScript frameworks.
One and only one.
There's no point in learning multiple frameworks when you're a
junior. Find out what framework has the most job postings for
junior developers in your area and focus on that one. You can
always switch later.
How deeply you have to know a framework to apply for the
job? You need to feel comfortable building projects. It means
you should have at least 3-5 projects, and one of them should
be non-trivial.
Non- trivial project is the project you're proud to show others.
If you don't have an idea for such a project, we'll get to it in the
portfolio chapter.
v
Additional skills you can pick up fast
If you look at the job postings, you'll realize that four critical
skills are not everything they require from the candidate.
Luckily, you can pick up many of the additional skills fast.
For the interview purposes, it’s usually enough to know
something about them and be ready to dig deeper if
necessary. The most common of these skills are:
Version control - you should use version control (Git) in all of
your projects. It will give you enough knowledge to apply for
junior positions.
CSS preprocessors - you can use them or not; the crucial thing
is they're easy to learn.
CSS-in-JS - like the above, some people love it, some people
hate it. But it's pretty straightforward to learn.
Command-line - try using the command line from time to time.
Even simple things like creating and removing folders and files
will do. Also, try using Git by the command line.
Bundlers - you should know and use some of them, but it's
improbable you'll need to configure them by yourself as a
junior developer, so superficial knowledge is enough.
“
You need to have
a Git repository
and a portfolio
website.
Skills to stand out
Showing the bare minimum of skills is often not enough. To
attract attention, it's good to add something extra - the one
bit of skill that makes you stand out amongst other candidates
for the job. It's perfect if the skill aligns with the requirements
for the job, but even if it's not on the list, it's good to show
you're ready to go the extra mile.
Here’s the list of extra skills to consider:
Serverless - it's all the rage now. Serverless allows you to build
full-stack applications without backend knowledge, which can
enhance your portfolio greatly.
Accessibility is an area many developers struggle with;
empathy for the users is a good sign for any developer.
Design systems are gaining popularity, especially as the
competition grows, and delivering software as fast as possible
is crucial.
Testing - everyone talks about testing; nobody's doing it. If you
understand the value of tests and can implement them, you'll
be welcome in any team.
Performance - optimizing performance is a must in any clientfacing application. It affects SEO and user experience, so
every developer needs to take it seriously.
Design - everyone likes beautiful things. If you can make your
portfolio eye-catching, you've got a great chance to be
4
Creating
a portfolio
Creating a portfolio
Your portfolio is a critical part of your job seeking. If your
portfolio is excellent and you'll get lucky, you might get an
invite for the interview even without sending an application.
And if you send an application and get through the first
resume review, an impressive portfolio is what lets you stand
out amongst dozens of other developers.
Software developers portfolio is made of two major parts - Git
repository and portfolio website. You absolutely need to have
both - one allows the recruiter to see your code, and the other
the final effects of your work.
Building great Git repository
Your Git repository is a record of your growth and the projects
you've made. It's a significant selling point, so you need to
make it work in your favor.
The best place to have your Git repository is GitHub. It's almost
an industry standard, and getting practice using it will come in
handy. To make your GitHub stand out, you should follow a few
rules. Firstly, make small, frequent commits. Some recruiters
look at your activity and seeing someone who commits a lot is
impressive. Also, making small commits is a good practice in
real-life projects.
Consider hiding your first projects and the projects you didn't
finish or are not proud of. As long as you have at least few
projects, it's better to show only your best work. If you don't
want to hide projects, at least pin the best ones. It will make
them stand out. You can find the instruction on how to pin the
projects here.
Remember each project should have a readme file. Include
technologies used, what the project is, and how to run it.
Always have the live versions of the projects, so anyone can
quickly see how it looks in action. Link to the live project
should also be in your readme!
The final thing you can do to improve your GitHub is to pimp
your profile. You can make it pretty by adding a readme file to
the root of your profile. Here you can find instructions for
doing this. You may add images to your profile page, links to
your social media, or add technologies you use. Treat the main
profile page as your developer resume - add anything relevant
(for more tips, check out the resume chapter of this book). You
can even add your GitHub stats or get your latest blog posts (if
you have a blog).
A portfolio website that stands out
The portfolio website should look good. Good is not equal to
fancy - its goal is to showcase your work, so the projects
should be the main focus. Go for the clear and clean design,
and watch out for simple errors (for example typos or lack of
favicon). Host your portfolio using some free solution like
Netlify. It's good to have a custom domain, so consider
spending a few dollars on getting it.
If you want to add some extra visuals like animations - go for
it. But make sure you don't overwhelm users. The visual clutter
destroys the excellent effect. Your portfolio is about
showcasing your projects, not impressing with every animation
skill you have.
The portfolio should be responsive and include a contact form
or a chatbot - you want to make reaching out to you as easy
as possible. Validate the inputs if you're using a contact form otherwise, some people will make fun of you by sending empty
messages.
The question I get asked a lot is whether you should use CSS
frameworks or not in your portfolio. The answer is - it depends.
“
Pick interesting
projects for your
portfolio!
Frameworks will make creating clear and responsive designs
easier. But if your special skill is being great with design, you
should go with custom design and CSS.
On the other hand, If you're focused on JavaScript and are not
skilled with design, you can go for frameworks and stand out
some other way. Your portfolio needs to impress somehow, but
it doesn't need to be a design.
As for the rest of the tech stack of your portfolio - it doesn't
really matter. Pick anything that works for you - it may be a
JavaScript framework, WordPress, or whatever else you like
using.
Always remember that the crucial thing in the portfolio are the
projects. Make them stand out, especially the ones you're
proud of.
Picking great portfolio projects
Picking interesting projects to your portfolio is a perfect way to
stand out from the crowd. I still remember seeing a simple
puzzle game in one of the portfolios - our entire office started
to play it. We invited the person to the interview without a
moment of hesitation.
Your goal is to do this same - build something impressive
enough for the company to invite you.
Avoid making apps that everyone does - weather apps, tictac-toe games, or to-do lists. They're great projects to learn to
code but not good enough to make into a featured app in your
portfolio. You need to be more original.
If you attended a Bootcamp, you probably had to build some
final project. As a rule of thumb, avoid using this project as the
main thing in your portfolio. Bootcamp projects tend to be
inspired by teachers, and because of that, they're often
repetitive. In my experience, I could recognize the Bootcamp
projects at first glance - many candidates were finishing these
same Bootcamps with similar projects.
That being said, if you believe your project is unique or you
added a lot of great features, feel free to feature it.
To find an idea for the great app, think about the things you're
interested in. Are you a lover of Netflix? Make a Netflix clone
or a movie database like IMDB. Like playing card games?
What about writing a poker game in JavaScript? Interested in
investing? Build an app with stock data visualized as charts.
You can easily find a free API to get the data about almost
anything; check this or this list if you don't believe me.
An additional benefit of picking the project that’s interesting
to you is that you won't be discouraged easily. So choose
wisely.
The other way to make a great app is to solve someone's
problem. Maybe you've got a charity you like, but they don't
have a website? Make it for them. They will get a great new
page, and you can add testimonials to your portfolio. Nothing
sells better than other happy customers. The possibilities for
new apps are endless!
If you need some more project ideas, here's the list of websites
that can inspire you:
https://www.frontendmentor.io/
https://github.com/florinpop17/app-ideas
https://github.com/tastejs/awesome-app-ideas
https://github.com/karan/Projects
You don't need to have many projects in your portfolio - the
recruiter will probably just glance at it. The tricky part is to
make the projects really great. Make sure to have a clean
design and make it responsive. Give the users the best
possible experience irrespectively the device they use.
Pay special attention to the quality of your code - remove
obsolete comments or console logs. Test your application in
Lighthouse - try to achieve perfect or near-perfect scores in
every category. Check out the quality of your HTML using tools
to analyze the semantics of the page like W3C Validator.
Don't forget about the social media metadata. You want to
share your portfolio on different platforms, so make sure that
the links look beautiful.
These may look like tiny details, but they matter.
When you've picked and coded your best projects. It's time to
present them.
For every project, you have to make a description. It should
contain information about the tech stack you picked and the
project functionality. If your project has some additional
features, like tests, add information about it. This same would
go with external libraries; if you used something complex, like
D3.js, write about it and justify your choice.
It's also a good idea to highlight what you've learned in the
project. If you're building a single-page application, you
probably had to master client-side routing. If your app uses
some external API, you've learned to handle asynchronous
requests. Whatever it is, write it.
5
Creating
a Resume / CV
Creating a CV
You may think that CVs, or Resumés are obsolete now.
Especially for the software developers, their skills should be
more important than their education or previous experience.
And in truth, skills usually are more important, and you're
accepted or rejected based on them.
That being said, unfortunately, resumes (or CVs, I'll use the
terms interchangeably) are still the starting point for many
companies. You won't get through the initial screening (done
by the machine or a human) without the resume.
So like it or not, you have to know how to build a good CV.
Going through computer scan
Many companies, even smaller ones, use the applicant
tracking systems (ATS). They're used to track applications, but
what's more important from your perspective is they're often
used to do the initial screening of the candidates. ATS job is to
filter CVs so the recruiters will see only the most relevant
candidates and save time.
So your first goal is to make your resume ATS friendly - you
need to get through initial filtering to have a chance of
landing a job. To outsmart the algorithm, you need to know
how it works - it looks for the candidates who meet the most
criteria from the job posting. So your task is to make yourself
the best candidate for the job.
“
Have someone
else read your
CV/Resume.
How can you do it?
Firstly, look for the keywords. Every job posting has several
requirements - it may be technologies used or personality
traits. Try to include as many of them as you can in your
resume. Of course, you have to be honest; you can't just
fabricate the skills. But make sure you include everything you
honestly can from the job description. Remember to use exact
words - if in the job description they're looking for the
JavaScript developer, don't say you’re a JS developer - say
you’re a JavaScript developer.
The above also means you can't use one CV for all of the
applications - you have to tailor it to the specific job.
You may have heard advice on how to "fool" the ATS - for
example, by copying the keywords (or the job description) in
white text. Don't do it. In the worst-case scenario, the software
may ban you from all of the future recruitment processes, and
in the best case, the recruiter can notice it and judge you as a
dishonest person.
To make your CV ATS friendly avoid using images or charts.
They're difficult to scan for the machine, so using them can
hamper your chances of going through the screening process.
To make your CV easily scannable, remember to send it in the
proper format. Many job postings state the expected format,
but if they don't use .docx or .pdf. Don't send resumes in any of
the image formats, as they're hard to scan.
To make your resume better, you can use some of the online
tools that calculate an ATS score of CV. Using this information
you can improve your resume to get a better score. Some of
these tools are Skillroads, Jobscan, Resume Worded, or
Skillsyncer.
Going through people
Your CV is good to go through the machine scan, but now it's
time to optimize it for humans.
You'll find two types of people looking at your resume - HR and
technical staff. They may look at the different things, so you
need to optimize for both. Luckily, most of the tips below are
helpful no matter who's assessing your CV.
Your CV has to obey one central principle - the person who's
reading it will not devote much time. Some studies claim the
average resume is analyzed for 6 seconds. Whether it's true or
not, you can't expect anyone to devote more than a minute.
What does it mean to you?
Your CV must be clear, concise, include only relevant
information, and you can't have any errors. Make your resume
as clear and readable as possible. If you're not sure what
makes a CV easily readable, here are some basic guidelines:
• use at most three different font sizes
• use at most three different colors
• keep the most relevant information near the top
• make sure the sections are clearly separated from each
other (there is enough whitespace between them)
• the document flows from top to bottom (not diagonally or
sideways)
To avoid any typos, use a spell checker. Even small mistakes
look unprofessional and may make the difference between
being accepted and rejected.
You should improve your grammar and flow of the text. The
easiest way to do this is by reading the CV out loud. If the
rhythm of the text feels awkward or you stumble somewhere,
you probably found a great place to improve. Reading out
loud also helps to find chaotic and too-long sentences.
Writing is hard, and probably the first draft of your resume will
be mediocre. To help you cut out the confusing sentences, it's
good to give the resume to someone else. Ask if they can see
the most relevant information at first glance. Later ask them
to read the resume more carefully and make sure they can
understand everything.
When you're applying for a junior position, your CV should be
short. One page is almost always enough. At most, it can be
two pages, but it's improbable you've got so much information
to include if you don't have relevant job experience. The
recruiter doesn't need to know you're a certified chiropractic
or used to be an Uber driver five years ago. Include only things
that can help you.
When you add information about your education or job
experience that is not connected with IT, add some context. By
context, I mean extra information which highlights your
experiences/achievements or what you've learned. Maybe you
are a natural leader who runs a non-profit organization in your
spare time or a compassionate helper in the local shelter.
These are all good things to include. On the other hand, the
fact you like football is probably irrelevant.
The most important part of your CV are your technical skills.
List all of the technologies you know relevant to the job
posting. But don't list every single technology you've ever
seen. All of your skills have to be backed up by the projects
you can show. So the ideal CV has a list of technical skills and
a list of projects where you put these skills into practice. The
projects should have links to the live version and Git
repository. You can also add brief descriptions.
Your CV should include your email address (please, make it
professional) and links to the relevant social media accounts it's probably Twitter and LinkedIn. Still, there may be other
important social media in your country. The last part of the
contact info is a link to the Git repository.
As a bonus, here's the list of tools you can use to make a
beautiful and readable CV:
• Canva resume builder
• cvmaker
• VisualCV
6
Creating
a Cover Letter
Creating a cover letter
The first thing you need to know about the cover letter is that
you don’t have to write it.
Seriously. People who get hundreds of applications will not
read your cover letter. But sometimes, the job posting requires
you to write one, so it’s better if you know at least the basics
about writing it.
The critical thing for cover letters is - make them short. You
only need to write what position you are applying for, what you
are doing right now, and why you’re a good fit for the position.
The crucial part is where you explain why you should get the
job. Treat it like an expanded version of your CV, highlight how
you meet the requirements from the job posting, and any
previous experiences that allowed you to learn the skills
needed.
If there are some skills you don’t have, express the eagerness
to learn them. In general, the tone of your letter should be
enthusiastic and optimistic. You can also write a line or two
about what you find impressive about the company and why
you want to apply. But be honest, if they made an application
you didn’t even bother to download, don’t say how much you
like it.
If you don’t want to write a cover letter but still want to add
some personality to your application, you can add a short
description at the top of your CV.
“
Blogging will
make you
a better software
developer and
help you find
a job.
It could be 2-3 sentences that state your career goal or the
most significant accomplishment.
But beware of being cliche; in the resumes I receive, this part is
usually identical - everyone wanted to become a software
developer as a child, but something stood in the way; they
went on another path and started learning to code.
The above description may be accurate (it was true in my
case), but it’s so common that it doesn’t add anything
meaningful to your application. So unless you can write
something out of the ordinary, it’s okay to skip this part of your
CV.
7
Online
presence
Online presence
Being visible online is not necessary to find a job, but it can
significantly improve your chances. You can be active in the
programming community in many ways, and the relevant
social media can differ depending on where you live. In
general, in the US and Europe, the primary social media you
should be aiming at are Twitter and LinkedIn. Additionally,
you can have your own blog, be active in open source or
answer the questions on Stack Overflow.
Some of the ways of showing yourself online can be easier for
you than others. For example, I have had my LinkedIn profile
for years, and I updated it. But on Twitter, I started to post
anything just last year. It’s a huge missed opportunity cause I
could have a lot more success if I started earlier, but I just
didn’t feel comfortable on Twitter back then.
In this chapter, I’ll highlight the benefits of different social
media and give you some tricks on how to start. Picking which
social media platform to use (if any) is up to you.
LinkedIn
LinkedIn is one of the easiest ways to get a front-end job. If
you’ve got a good profile, there’s a chance recruiters will
contact you without having to do anything. And even if they
don’t, it’s good to attach a link to your profile on the CV.
You should treat LinkedIn as an expanded CV. Add every
relevant detail about technologies you know and skills you
possess. Ask everyone who knows you’re a great programmer
to recommend your skills.
Like on the CV, keywords matter a lot. Many recruiters will look
for years of experience, and you don’t have it. So focus on
adding all of the languages and technologies you know, so
you’ll tick every box you can.
Use the About section to write something about your goals
and skills. And remember to add links to your portfolio and git
repository.
Your profile photo should look professional. It’s good to use
this same photo in all work-related social media accounts. This
way, if someone notices your profile in different places, there is
a higher chance they’ll recognize you and want to connect.
It’s a good idea to have your tech stack in your headline. This
way, it’s enough to glance at your profile, and the recruiter will
know if you have experience with the languages and
technologies they need.
Active accounts get more traction, so you should post
everything work-related on LinkedIn. Share interesting articles
and the things you learned. LinkedIn is not only a CV display,
it’s a social media, so try to be social.
Twitter
Twitter is one of the places on the web where programmers
hang out. It’s more casual than LinkedIn and not as careeroriented. Its best advantage is that many great developers are
active there. You can follow them to get their insights, as well
as to check out the latest trends. What’s even better is that
everyone on Twitter is just a click away - you can send a
private message to anyone.
While following the prominent programmers can teach you a
lot, it is unlikely to help you much when seeking a job.
Fortunately, you can use other techniques to improve your
chances of getting a job. One that’s especially effective is
learning in public.
The main idea of learning in public is sharing your progress.
Every time you hit some milestone, even the minor one, share
an insight or two. You should also talk about your failures and
doubts. You’re very likely to find a group of like-minded people
who will help and support you in your learning journey. They
may offer a word of encouragement and advice or even
connect you with someone who has a job for you.
If you’re unsure how to start, look for hashtags with challenges,
like #100DaysOfCode, or look for your community like
#WomenInTech. I’m sure you’ll find your place, and by sharing
your progress, you’ll make many connections, some of which
may become valuable to further your career.
Blogging
I’m pretty confident you should have a blog. It serves so many
purposes. You can use it as a diary of your progress and
growth. You can learn a lot from writing about the things you
are learning. The process will solidify and organize your
knowledge. You can help others who face these same
problems. Maybe you’ll even find a job or build a community.
Just blog.
I didn’t start a blog until I was five years into my programming
journey. It’s one of my greatest career regrets.
If you don’t have an idea for the blog you can start with taking
public notes. They may serve you as a reference point, and
maybe help others who are struggling with these same
challenges.
I understand this advice is hard to follow. The internet is
overflowing with blogs, courses, and comments, so you
probably feel you have nothing to add, right? I’ve felt the
same way.
The trick is to treat writing as a tool for your learning — not as a
resource for others. If other people want to use your work and
find it valuable, that’s even better. But even if you’re the only
one benefiting from your teaching, that’s great.
Every time one of the candidates for a job in my company has
a blog I take a look at it. If it’s regularly updated the candidate
is almost certain to get an invite for the interview.
Open source and Stack Overflow
You may have heard that contributing to open source is great
to improve your programming skills. It is. It’s also an excellent
sign for your future employer — it shows you’re active in the
programming community, can use version control, and
understand the software creation process.
The best part?
No one is doing it. In the hundreds of junior developer resumes
I’ve seen, maybe a handful of candidates contributed to open
source. And guess what? They got invited to a technical
interview.
I know open source seems scary to junior developers. You may
have many doubts. How can you provide any value? Where do
you start? Will they judge you? Don’t worry; the programming
world is friendly and always happy to help beginners.
To help you get started, take a look at this GitHub repository. It
includes many tips on how to start and a list of beginnerfriendly projects. This guide will smooth your transition to the
open-source world.
This same goes with answering the questions on Stack
Overflow. It’s hard and may require a lot of time, but the
impression you’ll make by having upvoted answers at SO is
hard to beat.
8
Finding the job
and applying
Finding the job and applying
Looking for a job can be scary. Many job postings have a huge
list of requirements. It’s underwhelming, especially for junior
developers. But I’ve got good news for you - you don't need to
meet all the requirements from the job advertisement.
Often the list of requirements is bloated by HR or lack of clear
priorities. If you've got experience in a few of the main
languages/technologies, you're good enough to try. The
perfect job advertisement may never come, so take the risk.
Additionally, the more applications you send, the more likely
you are to succeed. Sending applications increases your
chances of finding a job and allows you to gain experience in
recruitment tasks and technical interviews. With a few of them
under your belt, you'll feel more confident and relaxed.
How to make an initial contact
You've found the job you want to apply for. Your stack is similar
to the requirements, and you feel you're going to be a good fit.
It's time to make the first step and contact the employer. The
first impression is crucial, so make sure you seem professional
and enthusiastic. Use the professional email address from a
trustworthy domain. Your message should be short and to the
point, but never send empty emails with attachments only.
Attach everything listed in a job advertisement. Usually, it's a
CV and portfolio. Even if there is no requirement for a portfolio,
add links to your GitHub and portfolio website. If you're
looking for a job, you should have an account on LinkedIn or a
similar site. Make sure to add a link to it.
If you need to have a cover letter, take some time to write it.
It's your chance to stand out, so never send an identical letter
to different employers. Do some research about the company
and description of the position you apply for. Use that
knowledge to highlight your most relevant skills. Remember to
keep your letter brief. They may no read it carefully, so don't be
afraid to bold the vital parts.
Always remember all the jobs you're applying for; it's helpful to
have a spreadsheet with all of them and the step of the
recruitment process you're in. It's also a good idea to add
some relevant notes. Someone from the company you're
applying for may call you, so you should be ready to discuss
the details, and there is no better place to store that
information than a spreadsheet.
One thing to remember is the job offers are everywhere - not
only on the job boards. You can find them on social media (like
Twitter and LinkedIn), Stack Overflow, or even HackerRank.
One final tip - the easiest way to get a job is getting a referral.
That's when your social media activity can help immensely. If
you make some friends online or get noticed, you may be
recommended to the company and skip many recruitment
process steps.
“
There's nothing
wrong with not
knowing the
answer as long
as you're
enthusiastic
about learning.
There are bonuses for recommending a good employee in
many companies, which makes it profitable for everyone - you
get a job, they get a premium, and a company gets a great
employee.
Keep that in mind, ask for referrals if you make friends, and
never underestimate the power of social media.
9
Handling
the initial call
Handling the initial call
(phone screen)
The phone screen is an optional part of the recruiting process.
Some companies want to do short phone calls to determine
two things - are you communicative, and do you have a basic
knowledge of the tech you're going to use in a daily job.
This is supposed to be a low-stress and low-effort part of the
process. The call should take approximately 15 minutes and
consist of two parts - general questions to make you
comfortable and basic technical questions.
This chapter will be short, as these same questions are likely to
be asked in the further steps of the recruitment process
(technical phone interview and on-site interview), and we'll
deal with them in more detail in the on-site interview chapter.
How to prepare for the call
Preparing your environment for the call is essential. You need
to be focused, and no one should interrupt you. Try looking for
a quiet place with a comfortable chair. Make sure your phone
is charged and your connection is of good quality. Don't do the
call hungry or straight after the meal - it will make focusing
harder. Also, go to the restroom before the call - usually, these
calls are short, but you never know if yours won't be longer.
Remember to read your CV and all of the communication you
had with the company before the call, so you don't forget
anything important (like your projects). Also, read a little about
the company - have an opinion about their products and be
ready for a question about them.
Consider dressing up; you may feel more urgent and
professional if not wearing sweatpants. During the call, turn
your computer off - otherwise, you'll be tempted to google the
answers, and if the recruiter hears you typing, you are already
lost. Try speaking professionally and calmly, take notes if
necessary.
General questions
When the interview starts, you're likely to get some general
questions. They should warm you up and make you
comfortable. But the recruiter will also want to reveal
something about you - what is your attitude towards coding,
this particular job, etc. They may want to know how you work,
what's easy and hard for you.
With every answer, you want to show you're a reliable person
who is fun to work with and is concerned about the quality of
the code. Also, try to be enthusiastic; they need to know you
want this job.
One of the dreaded questions you're likely to have at the start
is: "Tell me about yourself." You need to prepare for this one. In
the ideal answer, you should include:
• why do you want to become a software developer,
• what do you know, and what would you like to learn,
• why do you want to work for this company (and how it may
help you achieve your goals)
• Other typical questions you're likely to get are:
• What projects have you worked on recently?
• What is your specialty?
• What is the project you're most proud of?
• What do you know about our company?
• Why do you want to be with us?
• How do you stay up to date with the latest tech trends?
You should prepare answers to these questions. Usually, you
already have most of them in your CV - check it before the call
and be ready to praise your best projects and name the
technologies you used.
“
Ask your friend or
a family member
to do a mock
interview with
you.
Technical questions
Technical questions will require you to prepare a little more,
but they should still be relatively straightforward. The goal of
the call is a negative selection - it should find the candidates
who can't communicate or don’t know the basics.
So your goal is to get to know the basics. And that's quite easy.
Google most common questions for JavaScript/React/
Angular or whatever else is required for the job. The first page
of Google results will be enough. Later learn to answer those
questions. You don't need to memorize everything; just make
sure you can say two or three sentences about everything.
Some of the questions you can get for a junior front-end
developer role are:
• What's the difference between let, var, and cost?
• What is 'this' in JavaScript?
• What is event delegation?
• What is a prototype?
• What is a Worker?
All in all, the list contains probably a few dozen concepts you
have to know of.
In this part, you can also get some algorithmic questions or
questions about your coding preferences. Examples of these
questions are:
• What is a Stack and a Queue?
• What is a Big O notation?
• What was the last tricky bug you had, and how did you fix it?
• What features of the language you do/don't like?
When answering a question, you should stay positive. Even if
you don't like a particular feature or library, don't be blunt
about it. Just say you're using a different approach but are
interested in learning that one. Or that you don't have
experience yet, but you're eager to try. Staying positive is the
key!
If you don't know the answer to some questions, be honest.
There's nothing wrong with not knowing the answer as long as
you're enthusiastic about learning.
The questions on the phone screen are not supposed to be
tricky or deceiving. They should test your basic knowledge and
approach to problem-solving.
If you're getting questions about the trivia or some JavaScript
quirks (like is `!!([])` true or false) that's a huge red flag, and you
should consider if the company is worth your time.
Below you can find some of the best places with the
fundamental questions for the front-end developers:
https://github.com/h5bp/Front-end-Developer-InterviewQuestions
https://github.com/yangshun/front-end-interviewhandbook
https://github.com/sunil12738/frontend-developerinterview-questions
Ask questions
The last part of the initial call are your questions. You should
have a few of these prepared; it makes a professional
impression. Some questions you might consider are:
• How long is the recruitment process?
• How many steps it has?
• How big is your team?
• Are there other teams in the company?
• What is the culture like?
• What projects you usually work on?
10
Solving the
recruitment task
Solving the recruitment task
Some companies, especially the smaller ones, have an
additional step in the recruitment process - solving the
recruitment task. Usually, you'll need to implement a simple
algorithm or create a user interface based on the design. You
do it at home and have a reasonably extended deadline maybe a week or two.
...
These kinds of recruitment tasks are controversial in the tech
community. It usually takes some time to finish them, and
occasionally companies use this kind of task to outsource their
real work and use the applicant's code in their products. On
the other hand, these tasks are great for good developers who
are stressed when coding live. Also, the tasks you can do at
your own pace and with the help of the Internet are more
similar to real work conditions - so they may do a better job in
assessing the developer skills.
...
Whatever you think about the recruitment tasks, you may
need to do some if you want to participate in every possible
recruitment. To make sure you're not being used as free labor,
analyze the task you got. Does it look like something created
only for the recruitment process? Or maybe it's more like a
part of the application? How long will it take you to complete?
If it's more than a day, it's probably too much. Also, ask if you
can use the solution in your portfolio - they shouldn't have any
problem with it.
If anything is suspicious or you don't like the task for whatever
reason, you don't have to do it. Many companies are looking
for junior developers, and not every offer is good for you. You
can also email the company saying you can't / don't want to
solve the task but would love to have a phone or on-site
interview. They may agree; you never know.
Ask questions
The company should define your task as extensively and clear
as possible. But in reality, usually, there are some pieces of
information missing. It's not a bad will - it's hard to be very
specific in describing tasks. If you misunderstand your task,
you may spend hours or even days doing useless work. To
avoid it, use your special weapon - questions.
Make sure you understand what exactly you need to do and
what technologies you should use. Ask about the deadline and
how to submit your work. Find out what will be evaluated. Do
you need to make your UI exactly like a design, or is there
leeway? Should the UI be responsive, and what breakpoints to
use? Do they provide you with assets? If not, which ones to use.
If you have even a slight doubt about anything, you need to
ask. It saves time and helps you to provide exactly what's
requested.
How to solve a task
When you're sure you understand the task, execute it
accordingly. My main advice - do your best. I've met many
applicants who delivered sloppy code. When asked about it,
they said they would do better in a real job, but it's only an
exercise they didn't care about.
Instead of showing how good they are, they said they didn't
care with a straight face. As you can imagine, they didn't get
the job. And with this attitude, I doubt they ever became
decent programmers.
Your main goal is to make the code work according to the
specifications. But remember you'll be compared with other
candidates. So treat your code as a business card, take your
time to polish it.
Make your code as readable and easy to understand as
possible. Remove all of the console logs and other debugging
parts of the code. Remove the commented parts of the code
also. Your code has to be clean.
As far as the architecture goes - don't overcomplicate it. Try
going with simple solutions that do the job. Comment your
code where necessary - in fact, it's better to add more
comments than you would typically do. This way, you can
make reading the code easier. Don't import too many external
libraries unless it's required.
“
If you've got
enough time, it's
great to add
something extra,
some feature
that wasn't
required.
Add something extra
If you've got enough time, it's great to add something extra,
some feature that wasn't required. It shows you're involved
and ready to take the initiative.
Possibilities for extra features are endless. If you need to
choose one of the different algorithms for your code, write a
comment explaining why you choose that one. If you're
implementing UI - you can add some subtle animations. Make
sure not to go overboard - you're looking for light touches of
extra quality, not to show off with useless distractions.
Unit tests are always a great addition. So if you know how to
write them, add testing to your code. I'm sure this will impress
whoever is assessing your code.
When you send your solution, always ask for feedback. It
doesn't matter if you've aced the task or failed miserably. You
need the assessment from recruiters to grow as a developer.
Asking for feedback also shows you care about selfimprovement.
Treat recruitment tasks as a chance to learn something new
and get a job in the process. This way you can make it both fun
and useful.
11
Handling the
on-site interview
On-site interview
Here we are, the final step of the process. It will decide if you
land the job or not. On-site interviews are the most dreaded
part of the process - they’re stressful and demanding. But
they're also the best moment to show your technical skills,
personality, and attitude.
On-site interviews are almost always part of the process.
Sometimes they're supplemented by phone/online interviews.
The preparation and execution of phone interviews are
virtually identical to the on-site interviews. Still, I'll add some
advice specific to the phone interviews at the end of this
chapter.
General information
Every company has a different process for the on-site
interview, so you can never be sure what to expect. Luckily, the
main parts of the interview are usually the same. First, there is
a technical interview with some coding exercises or questions.
The second part is a behavioral interview, determining if you're
a good fit for the position. These two interviews can be
separate, but usually, one meeting is enough for both.
In the on-site interview, you'll be talking with one or more
senior developers. Sometimes there is also a person from
Human Resources present.
You need to prepare for both parts of the interview. Don't
assume that learning for the technical part is enough.
As a general guideline, keep in mind that your attitude
matters a lot. You should look eager to learn and be interested
in the company. Many recruiters will assess you in the first few
minutes, so a good first impression is critical. One time I
rejected a candidate almost immediately, as he was slouching
on the chair, seemed bored and disinterested. He could have
been a sound software engineer, but I was sure I would not like
to work with him. Don't repeat his mistake and stay alert.
Making a good first impression is hard, because in an
interview, you're often stressed, and you've got only half an
hour or so to prove you're a good candidate. But I’ve got a few
simple tricks to help you.
The essential thing is you have to think before you answer. It
always seems you have to respond immediately, but that's just
your mind playing tricks on you. The interviewer is ready to
wait for your answer, so take your time to consider the
question.
If you're working with the code, explain what and why are you
doing. Your approach to the problem is more valuable than the
answer. Recruiters want to see how you think, not just if you've
got an answer.
Even if you solved your task correctly, always ask about
alternative answers. Maybe there are some better, faster, or
more structured solutions from which you can learn. Be
interested if the things work and why they work. You should
look like someone who wants to learn new things from every
assignment.
Tell the interviewer about your mentors, inspiration sources,
and interests. What technologies are you excited about and
what you want to learn next. You should emphasize you're up
to date with discussions in the programming world, and know
what path you want to follow.
The next thing to remember is to be friendly. People seldom
hire people they don't like. So even if you're bored or tired,
don't let the interviewer feel it. Be respectful, and show you're
taking the recruitment process seriously. If you're not at your
best during the interview, no one will believe you'll become a
valuable employee.
Before the interview, you should also prepare some questions.
Usually, the excellent time to ask them is at the end of the
interview, but you can ask questions anytime. If you don't
know what to ask - don't worry; I've got some tips for you at
the end of this chapter.
One more critical thing - don't lie on the interview. If you don't
have experience with some technology or don't know the
answer, just say it. Everyone has knowledge gaps; it's nothing
to be ashamed of. But make sure you deliver it right - be
engaged and ready to learn anything required to do your job.
Technical part
The technical part of the on-site interview is the most
challenging step of every recruitment process. You may face
different kinds of tasks - theoretical questions, algorithmic
exercises in the editor or on the whiteboard, or some tinkering
around small parts of code (improvements or debugging). You
can also hear questions about your technical decisions in
portfolio projects or recruitment tasks.
I'll start with basic preparations for the interview day. You
should expect it to be long and stressful. So make sure you are
well-rested and don't have interviews scheduled day by day,
as you'll need some time to rejuvenate. Usually, the interview
lasts up to an hour, but in case it's longer, get water and
snacks with you.
In the interview, you can expect two main types of questions:
• about the tools and languages you'll use in your job,
• about the Computer Science (mostly algorithms and data
structures)
They may be theoretical or practical - in a code editor or on
the whiteboard.
Tools needed for a job
As a junior, your focus should be on the first type of questions.
Some companies, especially the bigger ones, have some
Computer Science questions or even whiteboard interviews,
but usually, they are used in recruitment for higher positions.
That's good news, as the questions about the tools are the
easiest ones. The best way to prepare for theoretical questions
on essential tools is to google the most common interview
questions in a given technology/language. For example,
search for "react interview questions" and make sure you can
answer questions from the first few results.
This is a great tactic, as many interviewers don't have time or
will to craft their questions. So they'll do this same - search for
popular questions. Also, if you can answer the most common
questions, it means that you at least had enough motivation
to cover the basics.
Learning the answers may take you some time, but it will be
beneficial. Not only can you reuse this knowledge in different
interviews, but they're also likely to improve your
understanding of the tools you're using.
If you're still unsure where to start with basic questions, we've
got some resources on the most popular front-end
technologies in our resources chapter.
Preparing for the coding part of tools and languages, you'll
use in your job is more tricky. The first step is eliminating the
things you're not likely to do - as the time is limited, you
probably will not need to implement any User Interface.
Bundlers and version control are other unlikely tasks.
There is a big chance you'll get a simplified sample of the
primary tool you'll be using. For example, if you're applying for
the role of junior React developer, it will likely be a challenge
using React. To prepare for this, make sure you know the most
popular use cases and challenges. You should have some
familiarity with it, so you probably know what the trickiest
parts are.
As a rule of thumb, you can expect some tasks connected to
managing state, making asynchronous calls, or debugging the
most common errors. Again, Google may prove helpful, as
there is lots of information on the pain points of every
technology that's widely used.
Computer science
As I've said, it's unlikely you'll face computer science questions
trying to land a junior front-end job. But it can happen, so you
have to prepare.
First of all, you need to relearn the basics of Computer
Science, especially algorithms and data structures. The best
way is, as always, to google it; I'll also recommend some
materials in the resources sections. Then, devote to it a few
hours over a few days at least.
It should be enough to handle theoretical questions on the
junior level. Remember you don't have to know everything.
Feel free to dismiss details; you just need to explain roughly
what is stack or queue and the benefits of different sorting
algorithms, etc.
For the coding challenges, especially the dreaded whiteboard
interview, you have only one solution - practice. So go to one
of the pages with code challenges like Leetcode (you'll find
more alternatives in the resources section) and start
practicing. Solving 2 or 3 challenges a day should be enough,
especially if you start it a month or so before looking for a job.
These challenges will make it easier for you to think about
algorithms and improve your problem-solving skills. After
solving each challenge, take a moment to see how others
tackled the problem. You can learn a lot by looking at other
people's code, especially if you put the work first and
understand the main challenges.
“
Take the
opportunity and
ask some
questions; saying
you have no
questions is often
perceived as
unprofessional.
Whiteboard interview is so difficult not only because we don't
have a code editor to help us but also because we don't have
experience. So train for it! Try implementing some basic
algorithms on a whiteboard or using pen and paper. This way,
you'll get used to it, will make fewer mistakes, and the
interview will become less stressful.
Getting practice with interviews helps not only with the
whiteboard part. Ask your friend or a family member to do a
mock interview with you. Even better if this person is a
software developer, but even if they’re not, ask them to google
some questions and interview you. After a few such sessions,
you'll be much more confident and ready for an actual
interview.
If you prefer to have strangers interview you, some platforms
can help. They're not free but may improve your chances
significantly, especially if your interview is remote. One
example of such a platform is CodeInterview. As always, you'll
find more examples in the resources chapter.
Keep in mind that each interview is also a training session.
You'll get better with every one of them, so don't beat yourself
too much if you fail one.
How to answer the questions
Answering the question is an essential skill that many
candidates neglect. The way you answer the question or solve
a problem is often more important than the answer itself.
Even before you start answering, make sure you understand
the question. The best technique is to repeat it using your own
words. Later clarify:
• What is the goal you need to achieve?
• What is the optimal result?
• Are there any edge cases?
• What tools are at your disposal?
To give you an example. First, you can get a question, "how
would you implement state management in the React
application." Before you start answering, ask:
• Is it's an existing application or built from scratch?
• How big is the application?
• Can you use external libraries/tools?
• Are there multiple API calls and side effects to be managed?
Do you see what we are doing here? Even before the answer,
you show you’re a professional. You're anticipating potential
problems and challenges. So you ask questions until
everything is clear to you.
When you start answering the questions, try to show your
thinking step by step. Don't just provide an answer, but add
some context and thinking process. For example, for the
questions above, don't say, "I would use Redux because I'm
familiar with it." Instead, say something like:
"I could use React state, but it may get hard to manage over
time with many nested components. The second option is
using Context API, but it can have negative performance
consequences. So I'd probably go with some state
management library like Redux to handle most of the
application state. For the strictly local state, like forms, I would
use the standard React state hooks."
This detailed answer tells the recruiter you know what you're
talking about. You know multiple options and assess how good
they are. They may disagree with your judgment, but they'll
appreciate your thinking process.
Take this same path with coding challenges. Explain every
step you take and the reasons behind it. If you're not sure and
are just evaluating some approach - say it. The interviewer
wants to know how you tackle the problem, not only if you
know the answer.
After you answer the questions or solve the problem, ask the
interviewer if your solution is good. Then, regardless of the
outcome, ask if there are other possible solutions, what could
go better, or how you can improve. This will show you're
committed and want to grow.
Behavioral part
The behavioral part of the interview is critical, especially for
junior roles. In truth, many candidates for the junior positions
are similar in skill - they finished these same Bootcamps or
learned from these same resources. Unfortunately, it's not that
easy to stand out, so you'll often be accepted or rejected
based on how you fit the company.
Preparing for the behavioral interview is often challenging, as
you can expect everything - the recruiter can ask so many
different questions. Luckily, some evergreens are almost
guaranteed. By preparing for them and branching out the
answers, you can become reasonably confident in nailing the
interview.
Cover the basics
The basic preparation for the interview is learning everything
you can about the company you're applying to, and if
possible, the recruiter. Learning about the company, its
products and approach will help you discover its priorities,
culture, and requirements.
“
The interviewer's
job is to calm you
and allow you to
show your best.
If they're
purposefully
stressing you out,
it's probably a
toxic workplace.
For example, if you're applying to a design-focused company,
you need to be extraordinarily precise with your user
interfaces. The companies which are proud of making blazing
fast applications will focus on performance, so it's good to
learn some basics in this topic. On the other hand, when
applying to the companies focused on the backend which
have a small front-end team, you can expect to be working
with CSS frameworks, but there will be much more focus on
clean code and design patterns. Discovering these small
details will help you immensely in the interview - they'll know
you've done your research and take the job seriously.
It's a good practice that a company tells you who will be
present at the interview. If it's the case, try searching for
information about them. Maybe they have a blog or a huge
online presence. You can engage with them on social media
before the interview or just read some of their articles or see
interviews or courses. Mentioning it in the interview is almost
guaranteed to help you - everyone likes to be noticed and
praised.
Besides the company, make sure you'll research yourself. It
may sound funny - after all, you know yourself. But in a
stressful situation, it's easy to forget some information from
your CV or some of the projects you made. Make a quick
reminder so no one can surprise you.
Common questions
Let's go through some of the most common questions you can
face. Preparing answers for those questions will help you get
ready for almost everything they can throw at you. For every
question, you just need a few sentences to answer. Try to show
yourself in a positive light as a curious and resourceful person.
But don't shy away from your weaknesses; it's okay to have
weak points as long as you try to improve on them.
Tell me about yourself
It's a low-ball question to warm up. You have to prepare for it.
The ideal answer tells why you wanted to learn to program,
how you do it and how motivated you are. Consider talking
about your background, especially if it's interesting; for
example, you had an original career path before. Try not to fall
into cliches like "I wanted to become a programmer since I
was a kid."
What do you know about us
Here's where your preparation matters. Tell the company what
you like about them or their products. I interviewed dozens of
people who had no idea what my company was doing. They
didn't want to work with me; they wanted any job they could
find. Of course, I understand this sentiment; when you start,
you're often ready to work anywhere. But recruiters prefer
people who have some specific reason to join their company,
not just random developers who'll jump to the other company
at the first opportunity.
What's the most challenging problem you solved
Another evergreen question. This is something you have to
prepare upfront cause you will not be able to think of any
answer on the spot. Look through your projects and try to
recall what was difficult. Maybe you had to use some
algorithm or a complex data structure? Maybe there was
some nasty bug that you debugged. Or you're incredibly proud
of one of your architectural choices. Another option is using
one of the complex libraries or cloud solutions. Whatever it is,
describe in a few sentences what was difficult and how you
approached solving it.
Tell me about your personal projects
For these questions, you have to assume the recruiter doesn't
know your projects. Briefly summarize your best projects what is their functionality, what tech stack you used to make
them, why you chose this stack, and what were the challenges
and things you learned during the implementation of the
project.
“
No matter how
well you prepare,
there are some
things you might
improve.
When do you think the product is finished
It's a tricky question. You can work on your personal projects
forever, but sometimes you have to decide it's time to stop and
move on. If the project is for the client, the reasonable answer
is that you stop when the client is satisfied with it and all of the
agreed features are implemented and working. For personal
projects, the good time to finish the project is when you've
learned everything you wanted from it, and now is the time to
start another project and get different skills.
How do you stay up to date with front-end
This question is designed to check if you're interested in
programming or just decided to switch careers to earn some
money. You should be able to name a few teachers and their
blogs or Twitter accounts. You can mention some courses or
books you're using in your learning. Anything that you know is
of high quality. If you noticed your interviewer has a social
presence, now it's the best time to mention it.
What excites you about software development
Another low-ball question. The only wrong answer is saying it
doesn't excite you. Other than that, you can say you like
solving puzzles, and programming is similar. Or that you love
building things, and programming allows you to build them
using only a laptop and internet connection.
Or you love to help people by creating software. Whatever it is,
say it enthusiastically.
Your questions
Usually, at the end of the interview, it's time for your questions.
You should take this opportunity and ask some; saying you
have no questions is often perceived as unprofessional. You
should prepare many questions because topics are often
exhausted during the interview, so if you've got only a couple
of questions, they may have already been answered.
You want to ask about everything regarding the job, team,
and growth plan. Here's the list of questions to get you started:
• Who is the perfect employee for this position?
• How are design decisions made? Will I be responsible for
choosing tools and design decisions or someone else?
• What's the size of the team I'll be working with?
• What are the biggest challenges of the job?
• When can I expect to get feedback?
• How will my performance be measured?
• What's the salary?
• How often can I expect a raise?
• Do you have regular performance reviews?
• What are the working hours?
• Is the job partly or totally remote?
• What's the dress code?
• What's the company structure like?
• What technologies are you using?
• Do you test the code?
• Do you do code reviews?
• Do you have a mentoring program?
• What's your turnover rate?
Phone/online interview
Some companies are ditching on-site interviews for phone/
online interviews. It has the benefit of saving time and money.
And is also popular when a company is recruiting for a remote
job.
Techniques to nail the phone interview are the same as in onsite interviews and in the initial phone screen. So make sure to
be well-rested, eat some snacks, and find a quiet place with a
stable internet connection. For more detailed advice,
reference the initial call chapter.
The unique thing about online interviews is that you may be
required to code live. To ace it, you need to get used to coding
live. Before the interview, ask what environment you'll be
using. You may be required to write code in a text editor like
Google Docs. It's similar to a whiteboard interview.
Alternatively, you may be using an environment more suitable
for code, like HackerRank or Coderpad. Whatever the
environment, make sure to play with it a bit before the
interview.
Getting familiar with it is a massive part of your success or
failure. Especially make sure if it is possible to debug your
code.
When solving the task, remember to communicate with the
recruiters! It's so easy to get pulled into your world and forget
about others, avoid this mistake.
Red flags
An interview is a conversation, not a monologue. The
recruiters are assessing if you're a good fit for the job. But you
also determine if it's a good workplace for you. Some red flags
may indicate the work environment is toxic, and you shouldn't
start working there. Things like:
No answer for some of the questions from the questions
section
The company should give you a complete insight into your
future job and a team. If they're reluctant, they're probably
hiding something from you.
They press you to accept the offer immediately
You shouldn't accept an offer during the interview. You'll need
some time to reflect if it's a good fit for you. Pressuring you for
taking a job is a bad sign.
Your role or terms of employment are not clear
Before accepting a job offer, you should know exactly what's
expected of you. If it's not, the company is unprofessional.
“
Look for the
company you
want to work for
and apply there
— even if they're
not recruiting.
They seem disinterested in the interview
Interviewers expect you to do your best in the interview. You've
devoted time to prepare and get to the interview, so you have
the right to demand the same.
They are not prepared for the interview
The interviewer should know everything about your future
position. They should also have or have seen your CV and be
ready to answer any questions.
They're late
If they don't respect your time now, they'll probably not
respect it when you start the job either.
They're trying to stress you
The interviewer's job is to calm you and allow you to show your
best. If they're purposefully stressing you out, it's probably a
toxic workplace.
They're rude
Everyone has to treat you with respect. If they're rude during
the interview, it will be even worse when you start the job.
They have a high turnover rate
If the employees are leaving the company fast, it's a sign it's
not a good workplace. You should reconsider applying to work
there.
12
After the
interview
After the interview
You're done. The on-site interview ended, you've done your
best, and now you're waiting for the reply.
But are you really done? No. After the interview, it's time to
write a follow-up email.
You may think it's not essential, but it is. Often candidates are
similar in skill, so you need some leverage, which lets you stand
out amongst the crowd.
A follow-up email is a great way to do it, and it costs you
almost nothing. Your only goal is to thank the recruiters for
their time and express your enthusiasm for the job.
The best time to send the follow-up emails is the same day the
interview took place. You only need to write a few sentences,
and you’re done.
To make a great follow-up email, customize it to the interview.
Don't use bland scripts from the web. If you can send this same
email to multiple companies, it's not a good email.
An example of a good email you can send after an interview to
get a job in my company may look like this:
Hey Szymon,
Thank you for meeting with me today. I appreciate your
feedback and advice. It was great to learn more about your
company.
Knowing more about your projects and team, I'm even more
excited to join you than before.
Working in such a quality-oriented company would be an
incredible learning experience, and I would love the
opportunity to prove I'm a great fit for the role.
Here's the link to the blog about the CSS I mentioned; it looks
really slick!
I look forward to hearing back from you!
Regards,
After sending the email, your job is done; you can relax now.
Learning from a rejection
The sad truth is that you can do your best and still don't get a
job. There are dozens of skilled candidates, and besides being
prepared, you need some luck.
You will fail most of the interviews. If you're one of the hundred
candidates what are your chances? You can bend odds in your
favor with preparation, but even if there are just two best
candidates, your chance is 50%.
It means you'll lose a lot. But it also means you can learn a lot.
And get closer and closer to the job with each interview. As
they say - sometimes you win, and sometimes you learn. And
you have to win just once.
So how can you learn from rejection and win next time?
Don't take it personally
The company can hire only one person, and usually, they have
hundreds of candidates.
They don't hate you and your skills; they just had to choose
one person out of many. It's not you, it's the maths.
Maybe someone was slightly better than you, or the recruiter
had a bad day when you met. Whatever it is, don't treat it as a
personal failure but as a learning experience.
Find out what you can improve
No matter how well you prepare, there are some things you
might improve and don't repeat the same mistakes. Analyze at
what step of the recruiting process you were discarded. Then,
think about what might have impacted that decision. Maybe
you didn't know the answer to the technical questions? Or was
your attitude not right? Or you don't feel like a cultural fit.
Whatever the reason, think about how you can improve. It
might be spending more time preparing or choosing the
companies you'd fit better. You can always refine your jobseeking process.
Sometimes you're not sure what went wrong. In this case, it's a
great idea to ask. Send a short email, explain you're grateful
for the opportunity to take part in the recruiting process and
you're wondering what you can improve to get better results
next time. Not only will you receive helpful feedback, but you
can also build a relationship with a company and maybe get a
job there later.
Don't give up
It's easy to get discouraged after you analyze all of your
mistakes. So now is the time to celebrate your victories. If you
were rejected at the later stage of the recruitment process,
you had to do some things right. Why did you get a phone
screen or interview? Maybe your CV and portfolio are great.
Or you solved the task exceptionally well. I bet you had some
successes.
Not every company is meant for you, and you're not meant for
every company. Sometimes it's good to be rejected.
Companies rejected me, and now when I look at them, I'm
happy. Cause, in the end, I got to the place I wanted to be.
And you'll get there too.
13
Proactive
job search
Proactive Job Search
Bonus chapter
Finding a first front-end job is tough. You have to spend
months or even years learning and later compete with dozens
of other candidates for one vacancy. The odds are stacked
against you.
But I've got a special trick for you. The trick that helped me
and many of my colleagues. This is not advice on how to get a
FAANG job or to work for another huge company. Big
companies have complex recruitment processes and need
different approaches.
This is advice on how to find one of the millions of software
developer jobs at smaller companies.
The advice is simple: look for the company you want to work
for and apply there — even if it's not recruiting.
My story
As we're closing this book, I want to share with you my story of
getting a front-end development job. I hope it can be inspiring
and informative to you.
I'm a self-taught software developer. In 2015, I quit my job and
bet on learning to code. After ten months, I had spent most of
my savings and had no job.
I felt like I knew how to code, but I couldn't land a job. I sent
many applications and had a few interviews and even one
workday trial—all for nothing. There was always a better
candidate, and I was on the brink of depression.
At one company I applied to, the recruiter accidentally sent a
rejection email to all candidates using CC — not BCC. I could
see everyone's emails, and I discovered how many candidates
were discarded. There were almost 70 of us. No wonder I was
rejected. What were my chances of beating so many skilled
junior developers?
That day, I decided to turn the tables.
I stopped replying to job postings. Now, it was me who would
pick the employer — not the other way round.
I looked for companies in my area that built cool things and
asked them if they needed a junior's help. I sent five emails
and had two interviews, both ending in job offers.
I became a professional software developer.
Advantages of Being Proactive
Being proactive is so advantageous because you cut through
the noise. You don't need to compete with dozens of other
developers. You just need to convince a company you'll bring
value.
What's more, by being proactive, you show your future
employer you're resourceful, care about the company, and
appreciate its products.
But the greatest benefit of applying to a company that's not
recruiting is it’s good for the company.
I'm a developer responsible for the recruitment of new
developers. I can tell you the recruitment process is a hassle.
I need to create a job posting and recruitment task. Then I
have to skim through hundreds of emails and CVs, check
dozens of solved assignments, and give everyone feedback.
And in the final stage, I have to conduct a handful of
interviews.
The whole recruitment process of a junior developer takes
days or even weeks. Usually, I end up with a few similarly
suitable candidates and need to pick one of them. I could roll
the dice, as there are many great junior developers.
Because recruitment is so taxing, many smaller companies
don't do it until they have no other choice. These companies
could use some help — at least part-time — but don't want to
spend time recruiting.
These are the companies you should target.
How to Apply for a Job
Find companies in your area that are using your tech stack. Try
to be specific. If you're working in React, find companies
specializing in React — not just any company doing front-end
development. The goal is to convince them you can provide
value without too much training.
When you've got a list of companies, it's time to select a few
standouts. Pick only the ones that impressed you. Maybe they
have a great product, amazing landing page, or host some
developer community event. Whatever it is, you should be
honest. Companies can tell when you're excited to work with
them.
The next step is crafting a short email. Nothing fancy.
Something like this:
Hello,
I'm a junior developer specializing in X. I love your work. I'm
incredibly impressed by Y. Do you need the help of a junior
developer/intern? I'd love to be a part of your team.
Here are my portfolio and resume.
Regards,
Some companies won't respond, but usually, a short and tothe-point email does wonders.
If the company is interested, great! You have a considerable
chance to land a job. You aren't competing with anyone, and
the employer is already interested. You just need to confirm
you're good enough.
If you're rejected, you should have a follow-up email ready. Its
content depends on what they wrote, but you want to achieve
two things with the email: leave a good impression and learn
something.
14
Resources
Resources
CSS browsers compatibility:
Can I use
MDN
Git repositories:
GitHub
Bitbucket
GitLab
Prettify your GitHub:
Pin GitHub projects
Add readme to profile
Add GitHub stats
Add latest blog posts to GitHub
Free APIs:
Public-apis
Api-list
Application ideas:
Frontend mentor
App-ideas
Awesome-app-ideas
Projects
Application quality check tools:
Lighthouse
W3C Validator
GTmetrix
Wave
CV scanners:
Skillroads
Jobscan
Resume Worded
Skillsyncer
Online mock interviews:
CodeInterview
Pramp
Frontend interview questions:
Front-end-Developer-Interview-Questions
Front-end-interview-handbook
Frontend-developer-interview-questions
Reactjs-interview-questions
React-interview-questions
Vuejs-interview-questions
Angular-interview-questions
CV makers:
Canva resume builder
cvmaker
VisualCV
Notion Portfolio
Open-source contributions:
Guide on first contribution
FreeCodeCamp guide
Find job posts:
Stack Overflow
HackerRank
Indeed
Remoteok
Algorithms and data structures:
Leetcode
HackerRank
Codewars
Spoj
Download