It is extremely hard to seek a job for months and get rejection after rejection in all kinds of forms.
It is also hard to maintain self-confidence after consequent rejections, numerous letters without an answer, and months without a result.
I know this because I went through it after I quit my job and started pursuing my dream to work for an awesome company. It took me 3 months to land that dream job and required me to adapt.
In the next 10 minutes, I’m going to share exactly what I changed—and what you can change to finally get that dream job you have been daydreaming about for a long time.
1. What a good resume should really look like
“Less is more”
— From the Essentialism book by Greg McKeown
In your resume, focus on what you actually did and achieved in your previous jobs and what is relevant to the positions you are seeking. Focus your resume on the details and outcomes of your previous work experience. For example:
- Raised test coverage on the project from 28% to 86%.
- Improved Google PageSpeed score from 69 to 91 for most visited and important pages of the project.
- Optimized database queries p99 latency down to 3121 ms and average latency of 88 ms across DB with 42 tables, where 3 of them have 1+ million records.
- Updated and refactored project from Ruby on Rails version 4.2 to version 6 in about 2 weeks.
Keep other parts as short as possible, like education, volunteer work, publications, and open-source contribution. Terse one-sentence references are more than enough.
The goal is to write a one-page resume packed with relevant and exciting info about the position that you are going to take. Don’t worry if your resume seems small—quality is better than quantity!
Show off your best qualities without saying “responsible, hardworking, and easily trained.” All of your qualities should be derived from the list of activities, achievements, and results that you’ve gotten in the past.
Here is the full list of what you should include in your resume, in order:
1. Full name, city, country, and email.
2. One sentence describing who you are.
An experienced upbeat full-stack developer who enjoys leading teams and sharing knowledge.
3. One sentence of what you are looking for.
Looking for a remote position as a full-stack Ruby on Rails developer in a fin-tech company that values open-source, constant learning and has a clear vision and culture.
4. Bonus: Put a link to your GitHub account if it’s not empty (or another place where you host your code portfolio).
Make sure you pin the coolest repos that you’ve worked on and gists with parts of code that you’re proud of. The idea is to lead the person who visits your account to places you want them to see.
5. Bonus: Put a link to your site/blog if it has relevant and interesting content.
6. Bonus: Include a photo if you have a good one. Avoid shots that look unprofessional (blurry, poor light). Smile genuinely in it. You can test your photo with photofeeler.com.
7. A list of skills relevant to the position your resume is aimed at.
8. Previous experience. Should include the following: year and month of start and end, name and link to the company website or project, excerpt of your role in the project, and a list of key results and achievements. If your experience is not relevant to the position, like a network engineer or a graphic designer for a full-stack developer position, then no excerpt and achievement list is needed.
Full-stack developer at Farpost Development, December 2013 - December 2018
Development of startups at the initial stage with Ruby on Rails, Portgres, Redis, Active Admin, Administrate.
- Introduced the culture TDD and code review to the team.
- Developed a solution to cut off time and cost for producing MVPs.
- In 2014 together with ops team built a proprietary process of deployment Ruby on Rails apps
9. Relevant volunteer work, publications, open-source contribution.
[Article] Playing with Ruby Threads and Queues
[Open-Source] yabeda-rb/yabeda-datadog core contributor
10. Education. Put the most relevant and recent place of education. Name, years, title. No more.
Yakutsk State University, 2002-2007, Bachelor’s Degree in Applied Computer Science
Keep your resume short, one-page, and aimed at the position you want to get. If you aim for a number of different positions, make a separate resume for each of them.
2. How to write cover letters that will be answered
“Life gives to the givers and takes from the takers”
Before I learned how to write good cover letters, every job application I sent was politely refused or simply left without an answer. All that changed when I started to really personalize these letters to each company.
Personalized letters aimed to cover as many bullet points as possible from the “Skills and Requirements” section of the job description.
It is important to keep your reader interested in reading the rest of the letter, so avoid uninformative intros and polite formalities. Write why they need you, and they will read the rest:
I am a Ruby on Rails full-stack engineer, occasional open-source contributor, and writer. I enjoy producing well-thought-out code with good design using TDD. I can offer a lot in a leadership and mentorship position, something I was recognized for in my previous company.
I’m passionate about open-source and the culture of constant learning. I know that your devs enjoy speaking at conferences and writing helpful articles, which I think is amazing. That is why I’m excited to join [company name] because of how the company culture fits me so well.
Look for companies that will be a great fit for you, and it will be natural to write an intro for the cover letter and express your excitement at the possibility of working with them. All because you are passionate about what they are doing!
Then try to point out useful things that are happening with you right now that are related to the employer. The example below is a letter for a startup that is using Ruby on Rails and looking for a full-stack developer:
I believe I can add value to the [company name] team because:
- I’m familiar and interested in the Elixir and Erlang programming languages that you are using too.
- I’m passionate about designing maintainable, reusable, and testable code (I love TDD). In two previous projects, I grew test coverage from 20-30% to 80-90%.
- I love to refactor code using the principle “for each desired change, make the change easy, then make the easy change.”
- I have 2 years of experience working in a distributed international team within a small startup.
- I have DevOps and Network Engineering experience, experience with Azure, and I use Docker for my local working environment all the time.
- I am currently learning GraphQL and Apollo (with a course from Wes Bos) and I’m falling in love with this tech.
Like I mentioned before, I try to hit as many bullet points from a job description as possible.
One trick is to do research and find what your targeted company might struggle with or need expertise in, then show them how you already solved that problem in the past. Use social accounts of the company members and company blogs to find exactly what problems they are facing at the moment.
You should absolutely write a personalized cover letter for each position, company, and even person if you know who will read it.
Your cover letter is the first thing that a CTO, hiring manager, or team lead will read on the other side. You want to put heart and soul into it. Speak with them as if you were friends or partners, explaining how you will make them even more successful if they bring you on board.
3. How to overcome nervousness and enjoy interviews
A few points can help you to overcome nervousness in interviews.
First, remember that you are an interviewer too. There is a possibility that the company you’re interviewing with does not actually suit you. This mental trick will help you to feel psychologically equal with the interviewer.
Second, 15 minutes before the interview, take out a sheet of paper and write 2–3 affirmative statements 10 times each, such as the following:
“I successfully passed an interview at [name of a company].”
“I successfully passed an interview with [name of a person].”
“I’m a great engineer because I’m always [something great about you].”
Our brain is programmable, so it’s wise to put positive thoughts in it. Otherwise, it will be full of anxiety and fear.
Have a pen and paper to make notes and write an interview cheat sheet:
- Write down the names of the interviewers. Calling people by their names leaves a great impression.
- List your questions. Yes, you should ask questions—I will talk in detail about this later.
- Write down the targeted salary and the minimum salary you can agree to. Interviewees look flimsy when they start thinking about how much they want to get paid, and I myself was in this situation for a while. Thus, one must be prepared to answer this question clearly and confidently.
Smile before and during the interview. It makes you feel and look confident, even if you fake it. Your mood goes up and your stress goes down if you put a big smile on your face.
Let’s see it on a concrete example. Here is me talking with you:
I didn’t do specific poses, especially in the second, dull photo. And now I feel sorry for my loved ones because they see this concentrated and detached face on a daily basis when I’m solving problems! Too often I think.
My bet is that you would hire a cheerful person rather than a gloomy one.
You can learn one more thing from the happy and gloomy photos of me: to leave a great impression, it’s important to look into the camera or into a person’s eyes when you speak with them. In one photo, I’m looking into the camera, and in the other, I’m looking at my screen. The difference is huge.
If it’s natural for you to have a neutral or sad face and look to the side during conversations, then practice conscious smiling and eye contact with your friends and family. After the conversation, ask for feedback. You will be surprised how much a genuine smile and eye contact can change things.
4. How question help leave a great impression
You definitely want to know as much as possible about your next place of employment. Prepare about five questions to ask—not too many and not too few.
By asking good questions, you will leave a great impression, and you will show your interest in the company and not just in paychecks.
Here are some questions I usually ask:
- What does a typical [company name] programmer’s day look like?
- What is the most challenging part about being a developer at [company name] or developing [company name]’s product?
- What is most exciting about working at [company name] or developing [company name]’s product?
- Tell me about the key engineers in the development team. (Here I want to know if I will work alongside great engineers.)
- In which direction does [company name] expect me to develop in the next 2–3 years? (Here I want to know if my interest is aligned with the opportunities to grow and learn within the company. It also shows the company that you care about contributing to them long-term.)
5. How failures actually help you succeed
“Failure is only the opportunity to begin again, only this time more wisely.”
— Henry Ford
Although the feeling of failure is unpleasant and can be demotivating, you have to learn from it. The most valuable thing about making mistakes is that you have a chance to learn from them. Learning transforms failures into a path to success.
Don’t take it personally
If you’ve been rejected, don’t take it personally. You just sent your application at the wrong time and to the wrong place.
This is a numbers game—you need to send enough applications to finally find the right one and get your dream job.
Ask, “Why not me?”
In case of rejection, ask an interviewer in a respectful way why you are not the person for the job.
Make it clear that you are not going to complain and dispute the reasons behind the refusal—you just want to know so you can learn from it.
You won’t always get an answer, but this question is totally worth asking because it is very valuable in applying my next piece of advice.
Improve after each attempt
After each interview, whether successful or not, hold a personal retrospective.
What went well and what didn’t? What questions were you not prepared to answer, what didn’t you know, and what should you do to be prepared for the next interview?
Consider eliminating gaps in your skills and knowledge. Think about how not to repeat mistakes in the next interview.
Improve your resume and cover letter based on the valuable knowledge that you get from your last interview or job application.
Bonus: List of skills that companies are looking for
When I struggled to get a job a year ago, I asked myself probably the most important question at that time: “What do employers actually need?”
I started scanning through descriptions of awesome companies and job posts of those companies. My goal was to identify what type of person they were looking for.
The result of my research was a list of desired skills, which I used to change myself and write cover letters and resumes that show I have what they need. Here’s the list:
- Be proactive, have a strong sense of ownership, take responsibility for the success of the engineering teams, and care deeply about building great products that affect people’s lives.
- Have a commitment to quality, and take pride in everything you deliver as a reflection of yourself.
- Have strong analytical skills and creative problem-solving skills.
- Be fluent in English and be able to communicate clearly and consistently both verbally and in writing.
- Be a nice person—friendly, patient, welcoming, considerate, and respectful.
- Be positive and solution-oriented.
- Have a collaborative spirit.
- Be excited about exploring and learning constantly, and be able to learn new things quickly.
- Have experience with, or the ability to learn, the technologies the company uses.
- Don’t be afraid of legacy code, and be able to understand other programmers’ code.
- Be self-motivated, with strong organizational skills and the ability to work in a distributed remote team. You should know how to effectively allocate your time when solving hard problems.
- Be passionate about open source.
- Have experience with Agile methodology.
Grab a list of job descriptions of your favorite companies you want to work for, and compile this list for yourself. That way, you can see who you should become to be a good fit for a job and also how you should speak to them in order to be heard.
Bonus: Open-source shortcut
Working on open-source is a fun, rewarding way to get a job. And the chances are high that the job would be amazing.
It’s fun because you have a chance to pick from more than 28 million projects on github.com alone, develop in almost any programming language, work with amazing developers, and learn from them today!
If your dream company has an open-source project, it is a perfect chance to build credibility. It is incredibly powerful if you already contributed to what the company is building. That creates solid proof that you are a good fit for the job.
Also, it’s rewarding because you will work on a portfolio that will serve you for years. I’m still getting job offers with messages like “We came across your GitHub account…” This was after I worked on the yabeda-datadog library with amazing devs from Evil Martians.
Remember that your resume should convince employers that they need you. Instead of a long list of skills, put a list of how you have helped your previous organizations succeed. Emphasize what you actually did and what result the organization had with your contribution. Avoid anything that would distract from that. Make sure you know what they are looking for, and speak in those terms.
Cover letters give you a chance to paint a picture of how you can add value to your future employer. List cases of how you will help them get better results with you on board. Use their requirements bullet list to match what you can do with what they need.
Program your brain for a successful outcome. Keep smiling in the interview. It will allow you to feel and look ten times better. And don’t forget to keep eye contact often.
Ask questions—it will leave a good impression. Remember that you are the interviewer of your next employer—you want to know if the company is a good fit for you.
Get feedback and analyze every failure. Failure is the best source of information and inspiration to get better. Turn failures into learning experiences.
Thus, learn constantly. Make learning your second nature. It’s fun and it’s rewarding.
Consider working on an open-source project. That’s fun and rewarding too.
Lastly, enjoy the process! Remember—it is our perspective that makes applying for jobs and attending interviews stressful. With the right attitude, interacting and solving technical problems with your future colleagues can be a lot of fun! Bonus—if they enjoy interviewing you, they will be much more likely to hire you.
It is absolutely not hard when you know what to do. Reread this article, determine what you need to improve, crush your next interview, and get that dream job. It is absolutely possible!
Call To Action
With my job checklist, get the exact steps on how to escape a mediocre job, find an awesome company, apply for a job, and prepare for a successful interview.