How to get a remote software development job

I’ve been seeing a whole lot of posts on reddit lately (specifically on the digitalnomad subreddit) with people asking how they can get a remote job. Most of the comments giving advice I’ve seen so far has been your general average career advices like, “have a portfolio”, “brush up your resume”, “learn on codecademy”, and the likes.

While the above advices are fine and you should definitely do them, they’re not specific enough to be actionable. On this post, I’ll write about how I went about searching for my remote software engineer position and had two job offers in my hands in two weeks.

Just as a preface, the offer I received (I unfortunately can’t remember the specifics of the other offer, but it paid more than the offer I ended up accepting) and accepted was 3 month contract to start, at which at the end of the 3 month contract, the company decided whether to hire me full time or not. I was confident that I could get the full time offer so I just gunned for the opportunity despite the slight risk. Also, while I can’t state exactly how much I was getting paid, the offer was a competitive U.S. rate for my level of experience and for the location (I was living in New York City at the time, so if you’re curious, google software engineer salaries in New York City), had loads of benefits like fully covered health insurance, matching 401k, education reimbursement, and etc. I also didn’t have 10+ years of work experience that many of these remote positions require. Most remote positions require you to 1) have some remote work experience and 2) have lots of work experience since remote positions require you to be a self-sufficient developer. I had neither of those qualities.

Resume

I’ve noticed that a lot of software engineers don’t know how to write a decent resume. Perhaps it’s because the job market is heavily in our favor so that we feel like we don’t need to make our resumes look great. Or perhaps we as a group are just terrible at writing resumes.

At any rate, here’s the copy of the resume I sent out to the companies I were applying at.

https://www.dropbox.com/s/g5jzigfg6nj6bdy/remote_resume.pdf?dl=0

If you take a look, it looks pretty basic. But one thing my resume did that a lot of sample resumes I see developers post on reddit is that mine describes what my roles/tasks were at each of the companies I was working at and most importantly the outcomes of those roles/tasks. I think writing about the “outcomes” of each of the responsibilities you’ve held at your jobs is extremely important, because at the end of the day, companies hire you to produce results. And if you can clearly communicate that your involvement in your jobs produced positive results for your employers, then that’s a good thing.

Take a look at one of the bullet points under the developer position I’ve held at AD60 INC. I wrote in one of the bullet points, “Maintain various completed client projects, while increasing test coverage of existing codebases (increased Numi by Nutrisystem’s test coverage from 40% to 77%)”. Now, with the debate about the percentage of test coverage actually mattering or not aside (hint: I don’t think it really matters, I think you should write as little tests as possible to feel confident about your code  🙂 ), in that sentence, I clearly write what I did and the measurable results I produced. Most developers’ resumes I’ve seen would have something like, “Maintain various completed client projects” and nothing more. You should always write the results you’ve produced in your role along with the description of your role to make your resume more effective.

Also, notice that the styling of my resume is incredibly basic. I don’t think it hurts to make your resume all colorful and nice, but I think it’s a waste of time for software development positions. Just keep it plain black and white text and well formatted. Keep the fonts not too small so that your resume is readable. Keep your resume to one page (two pages if you have tons of experience and have held many different jobs) and if you want to pack more content into one page, try playing around with the margins and formatting with your document editor. Have your name and contact information on top, skills second, experience third, and your formal education last.

Portfolio

I’m always surprised at the amount of developers who don’t have a github profile. Even if your current company doesn’t use github, there’s no excuse for not having a github account and throwing up some code up there for potential hiring managers to take a look at. At the end of the day, we developers are judged for our ability to code, so if you have a github account, throw some of your personal projects on there. The projects don’t have to be polished or anything, just have something up there to show people that you know how to code. As an example, mine is at https://github.com/chrisjeon

As you can see, my github profile is nothing special. I have some toy projects, my dotfiles, some coding challenges I’ve done, and etc. But it conveys a few things. One, it conveys that I know the basics of writing Ruby on Rails applications. Two, it shows that I play around with code every now and then (some project eueler questons I’ve done was me exploring functional programming with haskell and elixir). In fact, one of the reasons one of my previous coworker at this remote company was hired was due to the video game project he had up on his github (link  https://github.com/rodrigopivi/SpaceTrippers). That project was what separated him from the rest of the applicants. So please, make a github account and push some code up there.

Finally, you should have a portfolio site. I’m slowly transitioning into focusing on writing this blog, so my portfolio site might disappear soon, but just to show you my portfolio site, the link is http://chrisjeon.me

I haven’t updated that site in awhile but hopefully it’ll convey what a portfolio site should have. Mine has a short about me, portfolio section with screenshots/descriptions of the projects I’ve worked on, books I’ve read, my blog, and a contacts form. I’m actually using SquareSpace for my website, which is really basic and easy to use. So you really don’t have to code up something impressive for your portfolio site. If you’re lazy like me, just use an easy to use website builder to quickly build a nice looking portfolio website.

Applying

Earlier in this post, I mentioned that I had two job offers in hand within two weeks of searching. I found both of them on weworkremotely.com (https://weworkremotely.com/). I simply went through the job application process, sent them resumes and a cover letter, and had interviews scheduled in a few days.

We’ve covered resumes, so now let’s go over cover letters. I actually have no idea whether I’m any good at writing cover letters or not. Most of the advice that I’ve seen given says to write a custom cover letter for each job you’re applying to get the hiring manager’s attention. I have a confession to make in that I simply write a generic cover letter for a software development position, and copy-paste the same letter to all of the companies I’m applying for. I’ve tried tailoring the cover letter to each individual job application, but I’ve found that it takes up too much time. I’ve always applied for jobs this way, and never had trouble finding jobs.

I’ll just post the cover letter I used here so that you guys get an idea of how I write cover letters

Hi company_name,

I saw your post hiring Rails developers on weworkremotely.com and wanted to see if I could be a good fit for what you’re looking for.  My name is Chris and I’m currently working as a web developer at a digital agency in Dumbo, Brooklyn.  I work primarily with Ruby on Rails and AngularJS for now.

 

In my current position, I have worked on various client projects including Numi by Nutrisystem, Christie’s art auction mobile application, and Spencer’s mobile/tablet website.  The current project I’m working on is a rescue project of a sort, rewriting a legacy php application (www.mybanktracker.com) into a Ruby on Rails application.  I’m working in full stack capacity in the mybanktracker project, serving as the go-to guy for any needed back-end work.

 

I work well in teams and learn very quickly (I had to learn AngularJS from no prior experience for the quick turnaround 6 week Spencer’s mobile/tablet website project).  If you think that I could be a good fit for what you’re looking for, please email me at chris0374@gmail.com or call me at (555) 555-5555.

 

Thank you.

 

Best,

 

Chris Jeon
That’s the exact cover letter I used to get multiple interviews within a span of few days. With each new application, all I do is switch up the company name and go, “Hi company_name”. The first paragraph is a simple introduction, second paragraph is describing my current position and things I’ve done (make sure that what I write here is relevant to the position I’m applying for), and the final paragraph is a closing statement with my contact information. I’m not sure if this is a good cover letter, or why it even works well as a cover letter, but this format always worked for me.
And for the final part…

Interviewing

The company that hired me had me go through 3 rounds of interviews. First round was a general chit-chat with the CEO and the CTO. This was just a normal conversation getting to know each other. Second round involved a code review with the CTO and one of the software developers at the company. I had to present some code I wrote, and simply had to talk about it with them. It was fairly low pressure, and a generally a pleasant chat about technical concepts, why I wrote those lines, why I did things the way I did, the tradeoffs I made and why I made them, and etc. The final interview was another code-review technical interview with the lead developer. We went over the same lines of code that I used in the second interview, and within two days I had the offer sitting in my inbox.

It’s difficult to explain what the code review interview was like, because it didn’t really feel like an interview at all, but felt more like a conversation about code that I would regularly have with my developer friends and coworkers.

As far as the actual interviews, they were held via Google Hangouts. If you’re interviewing for a remote position, you’ll likely do something similar. Try to find a quiet room with fast internet, and have a separate mic with headphones to avoid creating those annoying voice echos for your interviewers. Unfortunately for me, my apartment’s internet wasn’t working during that week, so I did my interviews at a loud coffee shop. I didn’t feel great about doing that, but hey, I still ended up getting the offer.

About technical interviews in general… I know some companies interview you on the CS fundamentals like data structures and etc., but in my experience, I’ve gotten those interviews maybe 1 out of every 10 interviews. I’ve also been seeing them less and less with more years of experience. The reason I mention this is because I would always go over those fundamentals expecting those questions to pop up (I never use those in my day to day job, and my knowledge on those get rusty over time), and thinking about it now, I think prepping for those is a waste of time as you rarely get those questions in interviews. Just know your stuff, be confident in your answers, and you should be fine.

Conclusion

So that’s how I landed my first remote position. I’ve left the company since a few months ago but I still work remotely as a software developer.

One last thing. I see a lot of posts by people on reddit asking about how to learn to code so that they can become digital nomads. Every now and then, you’ll hear some success stories of people learning for a few weeks or months on teamtreehouse or some other online resources and started freelancing on upwork to begin their nomadic lifestyle. The truth is, this is the exception rather than the rule. Most well paid and good remote software development jobs require you be an experienced engineer with a few years of professional work experience under his/her belt.

If you want to land a good remote software development job, I highly recommend that you work on-site for a few years first and learn directly under senior engineers. This will give you a solid foundation in software engineering that will last you a lifetime and it’ll be much easier for you to land that dream remote job. Also, the risk of going freelance right away after learning on resources like codecademy or teamtreehouse is that you may never build that foundation to make you a strong engineer. It’s worth spending a few years working on-site alongside senior developers to build the foundation of your programming skills.

I hope this post was helpful for those who are aiming to land their first remote software development jobs in 2017.

About the Author Chris Jeon

Software developer currently focusing on Android development.