I am Di (short for Dmitry) a software developer from province city on the east of Russia named Vladivostok.I want to share how I got my dream job.
In childhood, I loved to make my own board games. We lived in a modest manner in a very isolated city named Yakutsk, in a sparsely populated area in north-east of Russia. We had a shortage of toys and games at our family and I loved to make my own board games from notebooks or from large sheets of paper. With my younger brother, I made a monopoly like game in a notebook and each sheet was a city from all around the world.
I had an old Russian clone of ZX-Spectrum with Sinclair BASIC programming language and 3 or 4 books about micro-computers programming. Those books were my favorite. When ZX-spectrum game had a bug source code popping-up, it was curious to read through it in an attempt to understand a bit of the code. Programming books and games inspired the young boy to write his first computer game. I was a BASIC programmer at the age of 10.
Then I grow up and at the age of 14, the biggest wish was a personal computer. Since those days I feel like I want to create computer games.
When I was in late school, my family bought a PC, Pentium 386. I spent almost all my free time playing computer games sharing a PC with two of my brothers. I even played at nights to quench the thirst to play computer games.
By playing those incredibly exciting games I forgot my dream to eventually become a computer games creator. When times come to choose university I didn’t know what I want to do. I had an opportunity to go to a local university in law faculty and I chose to go this way. But I quit it after a half year, it was a mistake.
Then I went to computer science institute, graduate without learning a lot, found a graphic designer job, quit it in a year, found system administrator job, became a network engineer, quit it after 5 years and eventually became a programmer on the advice of a very great friend of mine.
The first programming job gave me another my friend. I had no experience at all and this job was real luck. It happened in March of 2013. I wrote an information portal with Ruby on Rails. I knew so little those days so wrote the code by copying solution from Rails screencast by Ryan Bates.
Late in 2013, I moved to Vladivostok and in December I started to work as a web developer in one small department of Farpost company.
I used to get early to the company office and enjoyed minutes alone in my chair. Enjoyed to work with my managers, enjoyed to talk with my boss, enjoyed to code and make things happen. It was my dream job those days.
At first, it was really challenging, but I learned a lot working at Farpost. No one else worked with Rails in the company and I had to learn mostly by myself, through courses, articles and less from books.
In the year 2017, I feel like I need the next step and I was lucky. I joined Link. a Hong Kong startup. Again, like in 2013, I get there with the help of great friend mine, those who originally advised me to become a professional developer. It was a part-time job and it ended in 2018.
Starting from 2018 I returned to a full-time job at Farpost. But I had a strong feeling — I need the next step.
This time I knew what I want: working remote, be in a great team, in a company with a strong culture and vision, have a well-paid job.
So I started sending a job application to companies that I wished to work for. I received rejections from all of them. For some, I had not enough experience, some companies didn’t have a remote position, for some, I didn’t pass a code challenge.
What I found that most of remote positions are positions of senior level. That totally makes sense. Why you ever need to build a remote company to look for junior and middle-level developers outside of your local place? Remote companies are looking for senior developers.
Obviously, it’s much harder to get a senior position than a middle one. I continued to receive refuses and it has been months, maybe 3 or 6 or even more.
So it was December 2018. I still worked in Farpost and it was a day of 5 years in Farpost. I made a decision. I have to quit now to pursue my goal to have a dream job again.
Side Note: in order to leave your job you need to save money first. Wise people advice to have savings equal to 3–6 of your usual monthly profit.
The first month I spent chasing a position at Evil Martians.
To impress Martians I wrote a Ruby library yabeda-datadog. It was fun and I think that it is a great way to get a job in a targeted company. But Martians had no open position at that time.
Next, I decided to aggressively send applications to numerous small and big startups. All application without success. Reasons: no response from a company, lack of specific experience, failed interviews.
This way I spent the second month.
- After two months without a job, I started wondering, what the employer needed? I started scanning for companies and jobs that remind me of what I want and trying to identify what type of person they are looking for.
- The result of my researches was a list of hard and soft skills that these companies wanted to see in applicants:
- 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
- commitment to quality, take pride in everything you deliver as a reflection of yourself
- strong analytical and creative problem-solving skills
- fluent English, ability to communicate clearly and constantly, strong written communication skills
- be a nice person, you are friendly and patient, welcoming, considerate, and respectful
- be positive and solution-oriented
- collaborative spirit
- excited about exploring and learning constantly, ability to learn new things quickly
- experience with or ability to learn the technologies companies use
- do not be afraid of legacy code and be able to understand other programmers code
- self-motivated, with strong organizational skills and ability to work in a distributed remote team, you should know how to effectively allocate your time when solving hard problems
- you are passionate about open source
- experience with AGILE methodology
- That was a solid ground for the next step.
I realized that I need to change how I apply for a job and how I handle technical interviews.
I need to learn how to solve problems, be good at algorithms, data structures, time and memory complexity.
I should have a more attractive CV and to write cover letters that hits 10 out of 10 in the minds of employers.
The third month was dedicated to improvements and learning.
I read the documentation for tools, languages, and frameworks popular in 2019. I practiced algorithm challenges, solved exercises on exercism.io, codewars, interviewcake.
I changed my CV based on the requirements of employers. No lies. I just adjusted what I have with what companies want.
Also, I have changed the way I think about Cover Letters. I can’t stress how important what we write in cover letters. The aim of every of my next cover letter was to convince an employer that I am the right person for the job. In what I truly believed.
These changes worked amazingly. Almost every application had a response and an offer for an initial interview.
One of the new job applications was for the Senior Software Developer position at Jerry.ai.
I went through initial email with questions, the first screen call, a code challenge, 2 technical interviews and interview with a co-founder and now I am a senior software developer at jerry.ai.
What I learned
Make mistakes to learn. Although the feeling of failure is unpleasant and can demotivate, you have to take something else from them. The most valuable thing in failure is that you have a chance to learn.
How to make a better CV
Throw away a long list of skills. Instead, focus on listing what you actually did on your previous jobs.
Write out every detail of your previous work experience. Make emphasize on what you have built and achieved.
Keep other parts like education, volunteering, publications, open source contribution, not relevant work experience, contacts as short as possible. Terse one-sentence references are more than enough.
It is better to emphasize on most important, what you actually did, and avoid distractions in your CV.
A cover letter is crucial
Before I learned how to write good cover letters every my job application was refused with “unfortunately not” or left without an answer.
Every cover letter I wrote was aimed to cover as much bullet point from a job description “Skills & Requirements”.
Here is a real example of my cover letter:
Hi, I am Di, a positive full stack web developer.
I am from Russia, Vladivostok it is close to Tokyo, ~2h flight.
I believe I can add value to the team because:
familiar with Elixir/Erlang programming languages
have experience with Azure and Docker
passionate to write maintainable, reusable, and testable code
love to refactor code by the principle: “for each desired change, make the change easy, then make the easy change”
have 2 years of experience to work in a distributed international team within a small startup
have DevOps and System Administration experience
have experience with React and Redux
learning GraphQL and TypeScript at the moment
The cover letter is a continuation of your resume. Write in every meaningful thing for a job position that you applying to.
How to overcome nervousness on an interview
First, you are an interviewer too. There is a possibility that the company in which you are actually interviewing does not suit you. This mental trick will help to feel psychologically equal with the interviewer.
Second, 15 minutes before the interview take a sheet of paper and write 2–3 affirmative statements, 10 times each.
“I successfully passed an interview in company X”
“I successfully passed an interview with Dan”
“I’m great engineer, because I’m always learning”
You get the idea.
Our brain programmable, it’s wise to put positive thoughts in it. Otherwise, it will be full of anxieties and fears.
Have questions to ask
You definitely want to know as much as possible about your next place of work. Prepare about 5 questions, it is a reasonable quantity.
By asking good questions you will leave a better impression.
Here are what I usually asked:
what does a typical X-company programmer’s day look like?
what is the most challenging part about being a developer at X-company / developing a company’s product?
what is most exciting about working at X-company/developing a company product?
tell me about the key engineers of the development team. (here I what to know will I work alongside great engineers)
in which direction the X-company expects me to develop in the next 2–3 years? (here I want to know if my interest is aligned with opportunities to grow and learn within X-company).
Ask why not me
In case of rejection ask an interviewer in respectful form why you are not a person for a job. Make clear that you are not going to complain and dispute the reasons behind the refuse that you got.
You not always will get an answer, but this question is totally worth to ask because it is valuable information to apply the next my advice.
Apply the iterative approach
After each interview, no matter successful or not, make retrospective.
What went well and what didn’t. What questions you didn’t be prepared to answer, what you didn’t know, what should be prepared for the next interview.
Consider eliminating gaps in skills and knowledge. Think about how not to repeat mistakes in the next interview.
Improve your CV and cover letter based on a knowledge what you get from last interview or job application.
Get feedback and analyze every failure. Failure is the best source of information and inspiration to get better.
Ask questions. You are interviewer of your next employer.
Learn a lot. Make learning your second nature. It is fun. It is rewarding.
Enjoy the process. Applying for a job and taking interviews is a lot of fun. You do not need to be nervous, because you are doomed to success.