I recently landed my first remote job as a software engineer! 🎉
The past few weeks, some of my friends reached out to ask about stuff like how I found the job, what I did during the process to land the job, etc. I feel like this is something that more people might be interested in, so I thought I would write about what I learned during the process, and hopefully it will help you too! You can think of this as a semi-tutorial on how to look for remote jobs.
I am by no means a seasoned veteran in remote working. Heck, at the time of this writing I haven't even started my first remote job yet! 😂
The point of this writing is to share the things that I learned during my very first remote job search, which hopefully could be useful to people who are looking to start looking for remote jobs as well.
Let's start by talking a little about why you might want to work remotely.
Why work remotely? 🤔
Let's get one thing straight. Working remotely has both advantages and disadvantages. Depending on what you are looking for, a remote job might not be a good fit for you. Here is my opinion about the advantages and disadvantages of working remotely.
No more commutes
Some people might enjoy their daily commutes, but not commuting definitely saves time and energy. Let's say your commute takes 1 hour daily. Without it, you now have an extra hour every day to do other things! You can use it to exercise, cook, meditate, etc.
Some companies allow you to set your own work hours. This can be very helpful for people who have family/kids to take care of. It is also very helpful in general if you need to take care of something in the middle of the day. Do note that some companies might require you to be available at a specific time, but it depends on the company.
Having the opportunity to work with a bunch of different people from around the world is definitely an unique benefit! You can learn from people you might not meet otherwise.
You will be able to have access to compensation packages (that might be) higher than that of your local market. Note that I said might, because every company handles this differently. From my personal experience though, I had 3 offers and all 3 of them were higher than what I made previously at companies operating in Indonesia.
Less face-to-face interactions
We are social by nature, and typically a lot of our social needs are fulfilled in the office. Working remotely reduces that and you probably need to fulfill your social needs through other means. Also, if you are looking for a mentor to learn from and you learn more effectively face-to-face, this might not be a great thing for you.
Depending on where you live, you might end up with less vacation time! One particular example would be if you are living in Indonesia 🇮🇩 (like me!). In 2020 alone, we have 16 public holidays! In addition to the standard 12 days of annual leave, that is a total of 28 days of vacations every year! Of course some of the holidays might fall on Saturdays or Sundays, so the effective amount of vacations you are getting might differ. Some companies might let you take vacations following your local public holidays though, so make sure you ask them about it.
Actually, depending on the company, this might not be a disadvantage at all. Just make sure you understand their vacation policy!
This is a bit of nitpick, but if the company isn't a legal entity in your country, you are effectively a freelancer/contractor for the company. The employment might be full-time in spirit, but legally it would be a contractual employment. I am not familiar with how taxes work in other countries, but in Indonesia, this basically means you would have to handle your own taxes. If you are working at a company that is a legal entity in Indonesia, they usually handle your tax payments for you. You would still need to report your own taxes using the 1721 A1 form though.
Being a contractor usually means you will be missing out on some more common benefits such as health insurance and retirement funds. Most companies do take this into account when determining your compensation package, so you could get your own insurance if you choose to.
Also, if you are working in Indonesia, you usually get yearly bonus. Not all companies provide this, so you would need to ask them about that and take that into account.
That's it for the advantages and disadvantages! There are definitely more but I don't want to get into them too much. As for myself, my primary motivation that drove me into remote working is the opportunity to work with people from all around the world! I believe having the experience working with different kinds of people would enrich my experience and help me grow.
Everyone can have different goals and priorities. It is very important to recognize what your motivations are to make sure you are achieving your goals by seeking a remote job.
Find jobs that interest you 🔍
Start by finding job openings that interest you. You can start from Buffer's shortlist of remote companies and see if any of the companies there interest you. If they do, great! Look at their openings and read the job requirements.
If you don't see any companies that interest you there, try looking for openings in various remote job boards on the internet. I mostly used remoteok.io, weworkremotely.com, remotive.io and StackOverflow during my search. I actually only knew about some of them after Invision rejected my job application. In their rejection email, they were kind enough to tell me about these various remote job boards for me to continue my search; a gesture that I really appreciated!
Another place you might want to look at is Twitter. There are some Twitter accounts dedicated to tweet about remote job opportunities such as @remote_dev_jobs. Some people in your area of interest might also tweet/retweet about job opportunities as well. As an example, I found quite a few remote job opportunities from this particular tweet of someone looking for a job.
Sharpen your skills 🔪
After finding the jobs we are interested in, we can take a look at the requirements and job description. Do you meet all the requirements? If you meet most of the requirements (like at least 70%), apply for the job! Else, you can write down the requirements that you don't meet yet, and set aside time to improve in those areas.
I found it quite useful to re-learn some CS fundamentals. Assuming you are an experienced engineer, you might be proficient in building stuff, but you might have trouble explaining in the correct technical terms when communicating with foreign people. This is why having the ability to understand theories and concepts and also communicate them are very useful, even though you definitely can build many awesome stuff without them. Harvard's CS50 is a good (and free!) course for this purpose.
Another useful thing is to start doing algorithm exercises daily. I personally used LeetCode to practice. You do not have to do a lot of the exercises every day, even 1-2 a day is good enough in the long run. This will normally only take around 1 hour every day. Not all companies ask algorithm coding questions, but a lot of them do.
Last but not least, improving your English language skills is very important as well. Remote working involves communicating with people all around the world, so being able to converse in English effectively is almost non-negotiable. Written communications also happen a lot especially with teams in different time zones. As such, being able to read and write will take you a long way! Having only great technical skills without the communication skills will most likely not get you hired.
Reading and writing skills can be improved by simply trying to read and write more. Reading discussions on some projects' GitHub issues, technical documentations and blog posts are some of the things you can do for this.
For writing, writing documentations and blog posts can be helpful as well. Listening can be improved by watching videos or even your favorite TV shows or movies. Listening to podcasts is also an effective way to learn new stuff while improving your listening skills!
In my opinion, speaking is the hardest one to improve simply because there usually aren't a lot of opportunities to practice them. You might be able to join a local community of interest where people who want to practice English together go to. Another way is to find a tutor to practice, you can use something like italki for this.
Build your portfolio 📔
When you apply for a job, the recruiter on the other side will definitely try to look you up on the internet to see what comes up. Because of that, in addition to the portfolio you list down in your resume, you should also try publishing some stuff you have worked on before. Try to think of a problem, no matter how small it is and then try to create a solution for it. One example, I wrote Bundlewatch GH Action because Bundlesize didn't work with GitHub Action. You could also write some project templates with the tech stack your target company is using to learn more about them. It doesn't really matter if no one uses it, what matters is that you are learning in the process and you show that publicly! I personally have received positive remarks from some interviewers who saw that I have some experiences with the tech stack they are using.
Another thing you can do is to start writing articles! If you don't have a blog, DEV or Medium can be a good place to start writing. Even if you think what you are writing about might not be that impressive, it's okay! Even if the topic has been talked about in the past, you can still write about it in your own style, while bringing in some of your personal perspective on it. I wrote on Medium initially but has since started to write on my own blog.
I really appreciate @alfrcr for encouraging me to start writing early in my career. He was the one to encourage me and said that it didn't matter if I thought the topic I am writing about isn't interesting enough. There will always be some people, no matter how few, that will learn from the things you write! Writing articles is also a very effective form of exercise that will help improve your writing skills! Having an accountability partner can also really help!
Building portfolio is definitely not something that you can do quickly. Even if you aren't really looking for a job right now, it is still very useful to start doing these things so that in the future you would have your portfolio ready!
Apply for the job! 💼
Now that you have sharpened your skills and built your portfolio, it's time to actually start applying for the job! Make sure you didn't wait too long before applying because otherwise the job vacancy might already be gone. 😢
Write a cover letter expressing your interest in the company. In it, you can also tell them about your past experiences that are relevant to the job and why you think you could be a good fit for the company. Do not copy-and-paste cover letters for different companies. Your cover letter should be tailored to each company.
Avoid lengthy resume. Instead, try to only list relevant information in your resume for the job you are applying for. For example, the company probably doesn't really care if you ranked first in a basketball tournament back in college. By tailoring your cover letter and resume for the position, you are showing that you have done your research and you are not just applying wherever you can.
Most companies require you to fill their application form to apply for the job. Some might require you to just send an email directly. Either way, make sure you try to include your cover letter in the application. Some companies also ask you to do some coding tests before you apply. This is usually automated using a platform like Hackerrank.
After applying, usually the company will get back to you in 1 week. If there isn't any update after 1 week, you can try sending an email to follow up, but there is a high chance that the company isn't looking to move forward with your application anymore.
If you haven't received any coding test yet, normally the first email you receive would be asking you to do a coding test, or some assignments. After that, there are usually 3 kinds of interview:
This is usually done by a recruiter. S/he will normally tell you more about the role you are applying for and ask about general things such as your past experiences, the reason you are applying to the company, etc. You will also be given some background about the company and opportunity to ask more about the company and the job. Some companies will also ask about your salary expectation at this stage. This is to make sure both sides have matching expectations before proceeding further. There are many different ways to approach this question. One idea is if you haven't done research about the salary, you can try asking them about the market rate for people with your skill set.
This is probably the hardest part of the whole process. In this interview, you will usually be asked about how you would solve a technical problem, or about problems you have solved in your previous jobs. Another common thing is having to do a live-coding session about an algorithm problem with the interviewer observing you during the process. Different companies handle this differently. In general, expect to be able to explain about the way you think and approach a problem.
The goal of the behavioral interview is usually to make sure you are a good fit for the company. The questions here will revolve more around your soft skills and past (non-technical) experiences. Companies usually look for people that hold similar values to them. I would say as long as you are not a jerk, you should be fine. Just be yourself and answer the questions genuinely according to your character. There is no point in mimicking their values if you don't believe in them. But if you do believe in them, you should be able to show that from the way you answer their questions.
In some cases, this could also be the final interview.
Of course, this is not going to be the same for all companies. For example, some companies do multiple technical interviews, or other interviews before getting to the final interview. GitLab's typical hiring timeline could help giving you more picture on how a remote company hires.
Remember that interview is a two-way street! At any interviews, the interviewer will usually ask if you have any questions to ask them. Think of it like dating. They want to get to know you and you also want to get to know them better to see if you will hit it off together! Here are some questions that you might want to ask them during the interviews:
- How does the working hour looks like?
- Could you tell me about the leave policy at <Company X>?
- How does a typical work day of a <Applied role> look like?
- How do you handle bad deployments?
- Is there any on-call schedule for this role?
- How would you describe the engineering culture here?
- How many people are in the engineering team currently?
Of course, you don't have to ask all these questions. Also, you might want to ask some other questions depending on the company. For example, if the company is an early-phase startup, you might want to ask them about their 1-year plan, or how much runway they have. You might also want to ask them about their tech stacks or tools that they use.
Don't beat yourself up 💪
You probably aren't going to get the job on your first try and that is totally fine! Don't beat yourself up because of it! I started my search casually in 2019. I applied to a lot of companies! It was only in August 2020 that I finally got offers from 3 different companies.
There was a point where I was feeling down because of a rejection from a company that I tried so hard for. I took a break for a week before continuing my search. I also started to sharpen my communication skills more actively to prepare for future opportunities.
It is definitely tough, especially for people like me who never had experience working remotely before. From what I saw, a lot of companies prefer people who have actually worked remotely before. Not having that experience definitely put me in disadvantage. But again, don't beat yourself up! It is definitely doable. Even if you failed at one company, think of it as a real-world interview practice to help you better prepare for the next one!
Again, I am very much still a total beginner in the remote working world, so take this writing with a pinch of salt. But hopefully this writing helped you in one way or another. I am guessing there will be more and more remote jobs in the future, so having an experience working remotely might be useful for the future.
Are you looking to start working remotely? Do you have advices for people like me who are new to remote working? Send me a tweet, I would love to discuss! 🤓
I will be starting my new job next month, wish me luck! Hopefully everything goes well, so I can share more stuff in the future! 🤞