TLDR Alert: Skip to the tips at the bottom
I can work from anywhere?
That's what I asked myself two years ago, and ultimately changed my life's path for forever.
After meeting during my exchange studies, moving back together to Sweden, getting married and having a child, my wife wanted to move back to her home city in China. We had been living in Sweden for many years and we had always talked about moving east, but when we finally decided, oh boy... time to hustle.
Changing Career Path
I was working as a Hardware engineer at the time at one of the largest surveillance camera companies in the world. The pay was actually quite sub-par, not enough for a single income household, but it was stable and the Swedish government does provide many benefits to families with small children.
I've always been building websites, I got the highest grades on the subject in high school, and 3 years prior to our move I found a site called CodeCademy. Without knowing the ultimate benefit of it, I completed the free Python course, and later I found freeCodeCamp, you've might heard of it? (lol). I quickly ran through many of the courses through fcc, and also made my first portfolio site, just for fun. With that I also started following more and more dev people on twitter, I liked the energy. I had a short journey on teamtreehouse as well.
As my day job fluctuated in workload, my son got born, progress on the coding sites became stagnant for years.
Quitting my job
It was not easy to resign, the uncertainty ahead, we had little savings and a small boy to support. However I was optimistic, I had 3 years of experience as a Electronics Engineer, and I also from university soon had completed a Bachelors degree in Mandarin, at least I would be able to find a job, right....?
A long way from home
After selling most of our possessions back in Sweden, getting on a plane with 3x20kg 3x10kg 3xback-packs and a full size baby stroller we landed in Shanghai.
2 months went while settling in, at the meantime I was looking for hardware engineering positions. As time went by it became increasingly clear to me that getting into a Chinese Company as an Hardware R&D Engineer was going to be tough. I was directly told by many that they don't allow foreigners to enter the company. It did not matter that I was qualified with more than 3 years experience, a Masters Degree and spoke good Mandarin.
But during the time looking at all the job adverts I came to a realisation:
The amount of Software related positions out-numbered hardware positions 5 to 1. And they were paying double on average.
Career switcher in China? They are not taking that bet, and my Chinese friends looked at me like I was crazy. OK...
I started to look into it and as the dev community had changed from my previous stint with software, my eyes opened up to remote working. Unlike before people had started teaching programming on youtube, remote communities were popping up, and sites dedicated to remote workers was available. I can work remotely?!
Not only that, there were success stories from self-taught programmers everywhere. Not only was I in need of re-inventing myself professionally but also I was so excited about the possibility of working from anywhere that I became obsessed.
I looked at the remote job listings and determined that the number of React positions were far greater than those of Angular or Vue. Done deal off to the races we go!
I started researching everything I could get my hands on, youtube, medium, twitter, anything that might be useful. I joined online communities, found mentors online and wen't into tutorial purgatory.
Tutorial Hell
For me YouTube tutorials became the way to learn, I could code along the teacher and after slowly starting to understand the best way for me to learn I could go back, re-engineer the projects and understand the parts that were important.
I opened my Github account where everything would go, did not matter what I was learning, it would be on GitHub so I can refer back to my old code. I understood quickly that consistency was key, and I was pushing code everyday.
Standing on my own
They call it tutorial hell or tutorial purgatory for a reason. It's hard to stop and build something by yourself. Even the smallest things would make me choke, and flush me with self-doubt. Maybe I'm not ready? Maybe just one more tutorial and things click into place?
Forget about it...
I went back to the drawing board, and asked myself:
How can I get real programming experience, without a job?
And did the following thought experiment:
If someone puts founder on their CV and builds software does that experience count? Given that he/she does not (probably) get payed for it? Does the money matter at all? Is it only valid experience if we are getting payed for it?
I answered myself:
It's all about the work you produce
So I started thinking: If I'm working for myself (unpaid lol), What can I build that gives me real experience?
This was the most crucial thought conclusion to take me forward
Build genuine competency!
Build things like your life depends on it
I cut tutorials out of my life and went to work. My first PR was a new portfolio starter to the Gatsby project. I still remember the feeling today when it got accepted. I asked several people to review my design before finalising it, and I shared my success with the people who was rooting for me.
No matter how small, move forward. No matter how small your success is, celebrate it with people who believes in you.
Your biggest supporter is a stranger.
The fact that I was engaged in the online community made me succeed. But you have to be brave enough to ask for support. There's so many awesome people out there and they will help you, they won't pull you down, and they won't heckle you for asking trivial questions. But also you want to be respectful, people have jobs and other engagements, you still have to do the work by yourself, none want's to share their energy with someone who demands attention or comes off as lazy.
I wanted to quit and got lucky
9 months in and I was soon burning out, I had two job interviews left with two take home coding challenges.
I think I got lucky when I needed it the most. Because the hiring engineer I met took his time with my application and he appreciated my struggle and consistency. He hired me to the team and August 1 2019 I started working full time remotely. Without getting into numbers I also earn more, with what I think is a fair market salary that can support my family. I also see more development in that area than what I previous did.
After talking to him and discussing what made me stand out, here's my ultimate checklist for getting ahead of your competition:
I was thinking for juniors but honestly for anybody who want's to go remote.
The List
Todo | why |
---|---|
GitHub | Those green tiles matter, I was able to show consistent code pushing for 9 months straight. There was projects related to the position I wanted (react) but also branching out with backend, and other languages |
Contribute to Open-Source | This might sound daunting for anyone to get into but it really makes all the difference. It does not matter how small of a contribution you are making, correct some docs, fix grammar problems are all things that you could do right off the bat. You can make repos where you collect resources etc. |
Personal Site | I made sure that my personal site looked alright, all links working, no typos, easy structure for hiring parties to find the information they are looking for. All projects links to a hosted version, and to the source code. I linked to Github right at the top, and other small things like: my email looks professional, up to date CV etc. |
Start blogging | Writing about your daily progress is a win-win situation. You help others struggling with the same thing, you help yourself understand it better, and you take steps towards building your own developer brand. Potential hiring party can go in and see your progress and they can see how you communicate ideas or code to others, further they can see a glimpse of who you are and build a perception of you as a person. |
Stable internet | It sounds like a no-brainer but if working remote it becomes very clear if your connection is not great. Would you hire someone to work for you remotely if they keep disconnecting? probably not right? |
Comfortable to Share screen | As a remote developer you'll be sharing your screen a lot. |
Clear communication | Being able in a clear and concise way explain code, talk about complex topics. Code is sometimes difficult to explain, because we are not used to talking while we code and our mind-maps of how things fit together will be very different. No one will hire you if you can not explain what you are doing. |
Be in the now | Be alert, be present, answer questions within reasonable time on Slack or Email. And turn everything off during your interview. |
Calm environment | If you have constant background noise, like motorcycles, trucks, vacuum cleaner, screaming, you get the point etc. You will not be liked in your everyday meetings. Dare I say low key hated. So find a quiet spot to work. |
Voice Quality | This ties into the above row, but if your microphone is bad, buy a new one. Record yourself, listen to it and you'll understand what the other end hears. |
Energy | You want to send a lot of positive energy to the person you are talking to. You have to be interested in what you do and like to talk about things related to the field. Don't be a biggot, asshole, racist, or other negative. at least pretend... |
Know what you know, and you want to continue learning. | If there's something you don't know, come clean and say that you have not used said thing yet. It shows that you know what you don't know, and explain that you are willing to learn that asap if that's a required skill. Maybe fire up a new repo and do something with it, and send it soon after the meeting ended. It shows you are a self starter and can learn new things when required. |
IMO if you do these things and can present them through your online presence then you are way ahead of the competition. And further to note much of the list is not even related to coding skills. They are what's called soft skills and many companies are realising that they are waaay more important than your technical skill. Chances are that the project they are hiring for are using new technologies anyway and they are looking a really solid team player.
Shameless plug
Here's what I collected during the time I was searching 1.5 years ago. Some stuff might be out of date but in general I think it's still valid information: It's companies who hire remotely, resources, communities etc. all for getting a remote job.
Remote-Junior-Developer-jobs-directory
If you want me to write more about this topic let me know. I think I'm going to write some more posts about working remotely and what I have picked up along the way.
Hope I could help!
Top comments (68)
Wooh. This is really helpful and inspiring to follow. Thanks Carl
I'm happy if I could help and inspire you, Thanks for reading John 😁
When I don't know how to become a software engineer, I saw your post. What a coincidence! Thanks for sharing
There's only one way to be, and that is to do!
Thanks for reading 😁
Totally!
I find problems when I actually do it. But I can learn from solving problems.
Solving problems you encounter is the main way you learn programming, so you are on a good path! Take care!
This post has inspired me to continue my development journey. Thank you for pointing out how important it is to break out of tutorial hell by creating own projects. I believe that community is everything and we all thrive working together!
Have a great day!
I'm happy if I could help you 😄
I think you are right, within a group we can accomplish more than on our own! We just need to be cautious: watch your energy levels closely. If you notice that there are certain interactions online that takes more energy than what they give, steer clear from it. Especially from any gatekeeping type of crowd or people who try to one up one another constantly. Pin-point the things that lifts you up instead of draining you.
I made a conscious decision to cut out everything possible that gave me bad energy, still do, and it's become a very important practice to me. Time is too scarce.
Common man, this is great post. Keep writing and informing us. We're thirsty of your knowledge. Thank you
Thank you! 😆 I will keep writing, what would you like to know more about?
Thank you so much dear Carl,
I'd like to know more about
Minimum technical skills needed for starting job search?
How can I survive and find a remote job in China? (or actually anywhere else, as I see most of employers don't trust juniors for remote jobs and they're more inclined to senior for remote positions)
9 months is not a huge time and would like to know how you progressed and what you learned in this period?
A roadmap would be great
Thank you so much
great post. it was very useful for me. big thanks.
Awesome! Thank you for your comment, it makes me happy that I was able to bring you some value 🤓
'Your biggest supporter is a stranger' - how true that is!
Totally agree on that
It's exceptional and a tragedy at the same time! Initially I reached out to anyone in my original network. Nothing, not much belief in that I could make it either.
But complete strangers, whom I've never met, helped me more than I ever could have thought.
Thanks for reading 😁
I've come across a variation of this idea lately - that most opportunities lie in your extended network, not the people who are closest to you, because they all know the same people and have access to the same opportunities. (I got this idea from Kelly Diels, to give credit where it is due.) This is an interesting twist: that they also might have the same (stale) ideas about what is possible for you.
Great post - thank you.
Glad you liked the post!
Thank you for you input, I've also been thinking on the topic for a while. It could be also that there's jealousy at play as well. My thinking is that original networks will be making comparisons to each other, who's the more successful, who's making more money and the list goes on. If someone is taking a risk with a high reward, no one can say for sure if that person is going to be successful in that pursuit or not. But, if they are successful it might "put them ahead" in the competition, and people are much less likely to lend a hand. It will help the enemy so to say. Maybe we are keeping our enemies closest after all 🤔
In comparison if it's not someone in your direct network looking for help it does not impact you at all if they are successful. It does not infringe on your position in your current "pack". Also further, there's a slight chance of new opportunity if they do succeed.
One small tip to add for juniors re: getting out of tutorial hell... You could participate in #100daysofcode, which is a challenge taking place mostly on Twitter. To do it, you need to pledge that you'll code 100 days straight, every day, and update the community on your progress (every day if possible). There is a lot of encouragement from new and veteran coders, which is nice. Good luck to all the new coders out there! Remember, everyone started somewhere... :)
~AD
+1 !
Great post!
You mentioned online communities that you joined... I'd love to hear more about your experience with that and online mentors. I find as a self taught dev in a non-tech city - community and mentorship are some of the most difficult things to find.
Thank you!
I can really relate to not having local meet-ups or irl dev community so here's the communities I joined at the time and had the most impact:
Awesome! Thanks for sharing this.
Awesome read
Thank you !
This one had me crying. Great story, its compelling.
Oh! I never wanted to make someone cry
Thank you for reading 😁