I decided to go remote three years ago and I am glad I did. At present, I work as a Senior Backend Developer for Doist, a pioneer in the world of remote work. My last workplace was BriteCore, another remote-first company based in the US.
I have gone through a lot of interview processes in recent years. This article is an attempt to answer the why, what and how of remote work.
The intended primary audience is developers from developing countries like me who do not want to relocate right now but want to work on exciting products and teams worldwide. The general ideas apply to all professions that can be carried out remotely and to professionals anywhere in the world.
Going remote means your employment is not limited to your physical location anymore. That opens up a world of opportunities. You can work for your dream company or with the colleagues and experts that you cherish. And all of it while staying in the place you like with the people you love. If you are the nomad type, this gives you great flexibility.
Better financial gain
Remote work opens up much better opportunities with much better compensation if you live in a developing country, just like me. The compensation is generally much better than the local industry.
The high exchange rates between powerful and local currencies allow you to leverage the asymmetry and save much more. In fact, you can end up with higher net savings per month than someone earning more than you in expensive places like San Francisco or London for example.
Tax rates are also generally lower and most developing countries have generous rebates if you're bringing in foreign remittance.
Even if you're living in a developed country, remote work saves you a good amount from commuting, lunch and everything in between that comes with showing up in an office.
Remote work allows you to do deep work and puts you in control of your routine and interruptions. In a world of constant connectivity, the option to go deep as needed can give you an unfair advantage in knowledge-based work that rewards craftsmanship and superior skills.
The remote skillset
Remote work comes with its share of challenges. You need to adapt and overcome these challenges to thrive in a remote work environment for the long term. And the process starts with adopting the remote skillset.
I use a handy mnemonic for summarising the skills essential for remote work. I call it the IBM CI. As you probably know, IBM is the name of a famous company and CI (Continuous Integration) is a term developers are quite familiar with.
The mnemonic comes from independence, balance, mastery, communication and Impact. I borrowed it from Doist. So, all credit goes to the incredible team there. I just came up with the mnemonic to remember it better. You can find it in any of their job descriptions. Their blog is chock-full of great articles on remote work. Subscribe to the blog to get the best out of it.
I will only touch on two aspects that encompass everything else.
Manager of One: Going remote means you're unlikely to have colleagues by your side. If you're working from home, it can be quite a challenge to put a boundary between work and non-work time. You're in charge of yourself and your schedule. So, you need to be able to do it well if you want to succeed in remote work in the long term.
I borrowed the term Manager of One from Basecamp, a pioneer and advocate of remote work. The ability to manage yourself is pivotal to a successful remote career.
Communication: A bulk of the communication in remote work happens in the written medium. To thrive in a remote setting, you need to harness your ability to express your thoughts and ideas clearly in written form. This is also going to be the primary mode of making connections with colleagues across the company. You don't need to become a literary genius, though. Clear and concise technical writing goes a long way.
The tone gets lost in transmission in the written medium. It is always good to pay extra attention not to come off harsh. Warm your messages with emojis.
Most remote settings will have a diverse workforce. It is essential that you stay sensitive to cultural diversities and refrain from saying anything that may be acceptable in your culture but not in others. Avoid using swear or curse words in all settings, even if you deem it to be informal. I have had a manager in the past who would use the f-word in meetings. Please don't!
As for technical skills, I advise working on-site when starting out if possible. Most remote jobs expect you to do your job with minimal supervision. It is easier to find jobs and perform better when you have some experience under your belt.
The remote toolbox
Remote work means managing yourself well. Most of your communication will happen online and it is expected that you will be using a lot of collaboration tools. Here are some of my suggestions to better organise yourself and produce quality output.
Use a task management tool. Put all your tasks as they pop up in your list and plan them accordingly. I use Todoist for this but any tool you're comfortable with works, even pen and paper.
Use an app for writing and taking notes. I prefer iA writer for long documents and Evernote for quick notes synced across devices. But again, anything that you're comfortable with works fine.
Familiarise yourself with communication tools like Slack, Teams, etc if not already. Most companies use one for communication. While there's not much of a learning curve, you should at least know that they exist. Same for project management tools like Jira, Trello and so on.
Shades of remote
This section is more focused on developer jobs. Remote work can mean a lot of things for a developer. It can be consulting, freelancing, working for steady clients or full-time contracts with companies. I will categorise them in three and list some resources to find opportunities for that category.
You can freelance on projects remotely on freelancing platforms. Examples include Upwork, Guru, peopleperhour, Freelancer, etc, where you can join, create a profile and start bidding on projects.
While this is a good option to work on projects you're interested in, I prefer not to work on them as a career choice. All clients are not the same, so it needs a lot of calibration every time you start a new project.
Clients generally choose these platforms for cost optimization. So, the engineering standards are generally a bit lower and the deadline pressures are more intense.
This also means variable workload and income, making planning your time and life harder. But I have worked on projects intermittently on Upwork before and it can be a good path to pursue if it suits you.
Some platforms employ a vetting process and only allow successful candidates on their platforms. For the lack of a better word, I call them agency platforms. These platforms are on the rise and I see new ones every now and then.
Once you're on the platform, you may have to bid for projects again or you may be paired with companies depending on the type of the platform. But you will be working as a member of the platform and the platform will take a cut off your earnings.
One major downside of both these types of platforms is that you don't get any paid time offs (PTO). If you don't work, you don't get paid. You don't get any other perks or benefits either. But once you get yourself on these platforms, it may be easier to land clients or contracts (and better ones) than on platforms mentioned in the first category. Remember to check reviews before joining. Do not join if you don't like their practices.
Here's a list of some platforms in this category: Toptal, X-Team, Turing, TripleByte, Vettery, 6nomads, and Crossover.
This list is not exhaustive and there's a lot of other platforms like these. I haven't worked on any of these, so do your review before you decide to join.
Remote-first or full-remote companies fall in this category. The number of such companies is increasing rapidly, thanks to the pandemic. You can apply to these companies directly from their job posts and work as independent contractors after you successfully complete their recruitment process.
I prefer this category of remote work because you get to work for the company directly. Generally, the teams and cultures are better in companies that hire directly.
Similarly, the compensations and benefits are better as well. Most of them will provide PTOs and have good practices around remote work.
Some popular companies that hire remotely are Doist, Zapier, Buffer, Gitlab, Automattic, and Basecamp.
There are many job forums and aggregate websites that you can subscribe to for job openings in remote companies. You can create email subscriptions according to your choices. Here's a list of some popular remote job forums: We Work Remotely, RemoteOK, AngelList, Stack OverFlow jobs, Glass Door Jobs, RemoteCircle Reddit Remote Jobs Forum, Remotive, Underpin, Remote.co, Remote4Me, LinkedIn jobs, and Remote Python.
These platforms are great for job search. Make the best use of them by subscribing to filtered job searches so that you get alerts for jobs that suit you.
Cast a wide net
You can find tons of job postings on the internet. But the sad reality is that most of them won't reply to you. And you will only proceed to the final stages on a few of those who reply. So, you need to apply to many jobs to interview at a few of them and then eventually get offers from a handful of them. Don't get discouraged by rejections or no replies, instead, keep applying to opportunities you like.
Don't refrain from applying if you feel you don't fulfil all the requirements for the role. As they say, if Internet Explorer can ask you to be your default browser, you can apply to jobs that you think you don't qualify for. If you never try, you will never know.
Focus on a niche
This applies two-fold. Firstly, choose a set of technologies or industries you like and preferably have experience in. And apply for jobs only in that category. For example, I tend to focus on roles that focus on the backend and require Python and AWS skills.
There's an ocean of platforms and frameworks out there. Getting the basics in place is important. But you can get better results if you focus on certain skills, languages and technologies while starting a new job search.
Secondly, companies generally have two significant modes of recruitment. One type of company will send you timed coding challenges and require live coding interviews. You need a more Cracking the Coding Interview style preparation for this type of recruitment process.
The other type of companies will have a more thoughtful recruitment process suited to remote work. They'll test your communication skills with descriptive writing tasks and behavioural interviews with some technical questions to gauge your technical depth. Then they'll pair it up with take-home assignments that match closely with the work you will be doing for the company if they hire you. I prefer this process and tend to focus more on companies that follow this process.
Pick your battles wisely and prepare for them accordingly.
Getting the foot in the door
Cover letters and CVs get your foot in the door. This is generally the first step of the recruitment process. Make sure you pass this initial screening by tailoring your CV according to the job and a thoughtful cover letter.
Most applicants ignore the cover letter altogether or send a generic one. Stand out by crafting a great cover letter that shows your interest in the company and the value you offer for them and the role. There are tons of resources on this on the internet for free. Make good use of it.
If you're applying to a company you like, make sure you let them know that you admire them and the reasons for it. I admire Doist and have been using their product for some time. Their blog has also been a source of inspiration for me. So, I made sure to note this in my cover letter.
Do your research
Once you hear back after applying, do some research on the company. Read the Glassdoor reviews on the company and look for interview reviews as well. Go through the company website and follow key people and employees in the department you're applying for on social media.
If the company has a blog or some of their employees have been on podcasts and webinars, spend some time on those. This will give you a lot of perspective on the company and the culture and help you come up with some good questions to ask during the interviews.
Read the job posting carefully and list out the essential technologies and concepts they emphasise. Focus on these during your technical preparation. Glassdoor interview reviews and the job posting can offer you important insights into the interview process. Take advantage of them to gain an edge.
One unconventional strategy is to find ex-employees of the company online and ask them for advice. Most people add work histories on their social media profiles and you may get lucky finding some of them.
Most people are generally friendly and helpful and they can give you valuable advice on how to prepare. You can also talk to them about the culture and environment in the company to understand whether it suits you. Remember, you're interviewing the company as much as they are interviewing you.
I actually did this when I found an ex-Doist employee on LinkedIn, Ahmet. He was accommodating and his inspiring words and valuable advice helped me a lot to prepare for the interviews at Doist.
Avoid Unforced Errors
Prepare for the interviews well.
Choose a quiet place.
Have a backup internet plan if the power goes off.
Always keep the camera on even if they make it optional. Face-to-face interaction is very important and do not waste the opportunity.
Make sure the background is nice and you're dressed for the occasion. You don't need to don a suit though, just don't look like a shabby hacker.
Communicate well all along the interview process. Reply to emails in a friendly manner.
Smile a lot during the interviews, it does wonders for you and creates a positive impression on the interviewer.
Nail the take-home assignments
It is easy to think doing what is asked is good enough. But if you really want the job you will go the extra mile. Yes, it is important to do what you're asked to do, but it is equally important to do it in a way that showcases your skills. Here are some simple yet overlooked advice for test projects:
Use a syntax formatter.
Follow a style guide (e.g., PEP8 for Python).
Name your variables well.
Write some tests. These don't need to be exhaustive but cover the most crucial parts of your code at least. This shows that you care about it.
Write docstrings if possible, even if one-liners.
Use comments thoughtfully to explain the why but not the how.
Write concise and meaningful commit messages. Squash commits to present a coherent and polished workflow.
Ask clarifying questions. If you make assumptions, try to write them up in a markdown document along with your approach to the given problem.
Don't go overboard with your solution. Don't complicate it or add features that are not asked for. How well you understand the problem specification and implement it accordingly matters a lot.
It is a test project for a reason, so don't try to cover all aspects of a system, instead, focus on solving the major problems. Do it in an organised way and then write up a document on the improvements that can be made on further iterations on the problem.
Grow from rejections
Rejections will come across aplenty. Recruitment is something no one has figured out precisely yet and you can be rejected even if you're qualified. So, don't lose heart for getting rejected.
People rejected by big tech have done wonderful things going forward. If the recruitment process uncovered a shortcoming on your side, maybe a gap in your knowledge, make sure you don't make the same mistake again.
Interviews have no fixed boundaries and you can be asked literally anything. So, don't be too hard on yourself if you don't get all the questions right. Look them up and learn. If you're learning from every experience, that means you're growing and increasing your probability of success.
So you did it and got your dream job. Don't slack off now and be too indulged in your success. Getting the job is only the beginning of the challenge. Onboarding in a new team and codebase is more challenging than interviewing. You have a point to prove too.
So, stay focused with a growth mindset and make the most of the opportunity to learn and grow in your role. Have personal learning goals and invest in continuous learning. Absorb knowledge from colleagues and help people around you.
Did you know?
ACM offers special membership rates for members in developing countries. If you become an ACM member, you will get access to O'Reilly Learning. This can be a great deal for you.
You can be putting in a stellar performance and still lose your job. The pandemic has demonstrated this very clearly. So love your job but be prepared to get back on the market. Change is the only constant in life. If you have the right mindset, you can turn adversities into opportunities.
Develop a digital footprint
If you like to write, start a blog. If you don't enjoy writing, start a blog anyway.
Put up short posts on the things you learn or issues you solve in your projects. Take notes from books you read and post them. The benefits of writing will compound with time and your future self will thank you for it. It also gives you positive exposure to potential employers and clients.
Build your network
Networks are always the best source of leads and referrals. Make sure you grow meaningful connections along the way. Follow experts and veterans in your industry on social media. Subscribe to blogs and newsletters you like. Interact with them and grow your network. Contribute to open-source projects if possible. This is also a great way to build your network.
Don't forget to network with your colleagues in the company. Talk to people in different departments, connect with them on social media. Connections you create along the way are priceless.
Keep it simple
It has been a long read. If you've read this far, that means you're quite convinced to go remote. All this information can be overwhelming and there's a whole lot more out there on the internet. So, I will end with a note to keep it simple and focus on a few key things.
Mindset matters. If you think you can or cannot do it, you're probably right. Focus gives you an edge. Stay focused on your goal. Don't run after shiny new things and change course too often.
Now go get that job and say goodbye to office spaces!