Remote work is trending. But the remote revolution started long before the pandemic and will stay powerful even after the hype subsides. As with any change, how well you adapt and improve will determine whether you get the better of remote work or run back to offices once the external factors go away.
I decided to go remote 3 years ago and I'm glad I did. My last workplace was BriteCore, a remote-first company based in the US. And tomorrow, I'll be joining Doist, a pioneer in the world of remote work. I have gone through a lot of interview processes in the recent years.
This article is an attempt to answer the why, what and how of remote work. The intended primary audience are developers from developing countries like me (I'm from Bangladesh) who do not want to relocate right now but wants to work on exciting products and teams all over the world. 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.
💵 Remote work opens up much better opportunities with much better compensations if you're, like me, living in a developing country. The compensations are generally much better than the local industry.
📈 The high exchange rates between the powerful currencies and the local ones allow you to leverage the asymmetry and save much more. In fact, you can end up with a 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 commute, 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 reward craftsmanship and superior skills. Read the interesting book titled Deep Work by Cal Newport to learn more about this.
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 to summarise the skillset essential for remote work. I call it the IBM CI. IBM, as you probably know, is the name of a famous company and CI or 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 awesome 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 chalk-full of great articles on remote work. Subscribe to the blog to get the best out of it.
I'll 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. Read more about it on Basecamp's blog post on the topic.
Communication: Bulk of the communication in remote work happens in the written medium. You need to harness your ability to express your thoughts and ideas clearly in the written form to thrive in a remote setting. 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. This tweet sums up a lot of great points.
The tone gets lost in transmission in written medium. It's always good to pay extra attention to not come off harsh. Warm your messages with emojis :)
Most remote settings will have a diverse workforce. It's important 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 advice to work on-site when starting out if possible. Most remote jobs expect you to do your job with minimal supervision. It's easier to find jobs and perform better when you have some experience under your belt.
Remote work means managing yourself well. Most of your communication will happen online and it is expected that you'll be using a lot of collaboration tools. Here are some of my suggestions to organise yourself better 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 that you're comfortable with works, even pen and paper.
🛠️ 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.
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'll categorise them in 3 buckets and list some resources where you can find opportunities for that category.
You can freelance on projects remotely on freelancing platforms. Examples include Upwork, 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 tend to prefer not working 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 optimisation. So, the engineering standards are generally a bit lower and the deadline pressures are more intense.
This also means variable workload and variable income, which makes 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.
Here's a list of popular freelancing platforms:
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'll 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:
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 who 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:
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
- Stack OverFlow jobs
- Glass Door Jobs
- Reddit Remote Jobs Forum
- LinkedIn jobs
- 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.
You can find tons of job postings on the internet. But the sad reality is most of them won't reply back to you. And you'll only proceed to final stages on a few of those that do reply. So, you need to apply to a lot of 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 that 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'll never know.
This applies two-fold. Firstly, choose a set of technologies or industries that 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 more on the backend and requires 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 major modes of recruitment. One type of companies 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 processes.
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'll 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.
Cover letter 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. Here's a great article to get started on the overall process.
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 make a note of this in my cover letter.
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, follow key persons of the company and employees in the department you're applying for on social medias.
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 important technologies and concepts they emphasise on. Focus on these during your technical preparation. Glassdoor interview reviews and the job posting can offer you important insights on 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 very helpful and his inspiring words and valuable advice helped me a lot to prepare for the interviews at Doist.
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 don't 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.
It's easy to think doing what is asked is good enough. But if you really want the job you'll go the extra mile. Yes, it's 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 advices 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 accordingly matters a lot.
- It's 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 organized way and then write up a document on the improvements that can be made on further iterations on the problem.
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 for 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 the interview process. 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. Check out rates for your country here.
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.
If you like to write, start a blog. If you don't enjoy writing, start a blog anyway 😁
Here's how you can get into the habit:
💎 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 a positive exposure to potential employers and clients.
Networks are always the best source of leads and referrals. Make sure you grow meaningful connections along the way. Here's how you can start growing your network:
👨🚀 Follow experts and veterans in your industry on social medias. I learnt about the opening in BriteCore from Daniel Feldroy's tweet. It worked out wonderfully well, I worked under him for a while at BriteCore and recently we started bd.feldroy.com together! [Update: we had to shut down due to the pandemic, but you get the point.]
🔖 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.
It's 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'll end with a note to keep it simple and focus on a few key things.
🔮 Mindset matters. If you think you can or can not 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.
✊ Be Resilient, better yet be antifragile.
The resilient resists shocks and stays the same; the antifragile gets better.-Nassim Nicholas Taleb
📚 Read voraciously, in and out of your area of expertise. There's no better way to leverage what other smart people have figured out already.
Finally, don't take yourself or the job too seriously. Enjoy the nice things in life and have a balance between your ambitions and personal life.
You are not your job, you're the person you are.-Toni Morrison
If you have questions or want to talk to me, feel free to reach out to me on twitter @billah_tishad
Now go get that job and say goodbye to office spaces!