Photo by Markus Winkler on Unsplash
Just enough preparation guide to land a backend engineer job in Japan (2022 version)
4 min read
Yes, it is possible. Even if you don’t speak Japanese and as long as you can write code. Not only big names like Rakuten, Line etc but (ex-)unicorns like Mercari, SmartNews are accepting non-Japanese software engineers. Some of them even offer relocation support if you are not a residence. In 2022, we could also observe non-local tech companies starting to set up engineering teams here. Either they are a truly distributed team (GitLab, fastly, CircleCI etc) or they need a dedicated team for the “unique “ Japan market (Stripe, Square, DoorDash etc).
Despite the opportunities, there aren’t a lot of information regarding the software engineer interview process in Japan. Many discussions on Glassdoors, leetcode focus mainly on big companies like FAANG. There are a lot of resources out there but to be honest some of them are overkilled. So hopefully I could give you some insights regarding the technical interview process here, and how I prepared them. The interview process of course varies from company to company. However, in 2021, I applied for more than 10 companies, went through more than 40 times of interviews. So they should cover a lot.
While being one of the weirdest countries, the software engineer interview process here is quite standard. For non-local tech companies, their process is similar around the world. Except that your interview might be conducted in the early morning or late evening because of the time zone. Or if you do not speak Japanese you might have to talk to your interviewer via an interpreter.
Live Coding / Whiteboard
Practice on leetcode is the best thing you can do. It really depends on you but I practice around 200 questions. Although some companies offer non-leetcode style coding interviews, in the end, they want you to solve a problem by writing code in front of interviewers under time constraints.
Take home assignment
This is a fair process. As your future potential employer, they want to see your ability to write code in a less stressful environment. One caveat about this is some companies have a larger scope of the question and you might have to spend a lot of time on this. Because you don’t know how hard should you try. Personally, I am not a fan of taking home assignments but it’s better to do this under time constraints. Most of the time, these assignments are what you are familiar with. Generating CSV reports, designing an API are a few examples. Besides, understand your own code really well, I don’t think there is a lot of preparation you can do.
General Computer Science Knowledge
This is a rare one but there are few companies in Japan that do this. Basically, they want to test your general computer science knowledge. A few examples of these kinds of questions will be “what is ACID”, “what is the difference between UDP and TCP”. By “general” it could be anything. From database to disk to network to virtualization to consensus algorithm.
A few books I had been reading multiple times including:
- Designing Data-Intensive Application: Database, distributed systems
- High Performance Browser Networking: Networking (Chapter 2, 3)
- Systems Performance: Enterprise and the Cloud: OS
Interviewer: Design a NewsFeed
Because there is no right answer (but you can give a lot of the wrong answers!), this is one of the most difficult to prepare. I can’t stress out how important is this round because it could affect your offer at a great impact. You can still pass your interview if you perform averagely in this round. However, if you are outstanding, you might end up getting an offer with a higher engineer rank (which usually needs promotion if you start working in the company). I recommend you to resources like:
- Bite Sized System Design Videos (video course by me)
- System Design Interview — An Insider’s Guide
Despite the great resources, you need to output what you have been disgesting to measure how much you know. And to achieve greatness, not only do you need to know as much as approaches and their tradeoffs as well, you need to think hard during your interview. Usually, after you have a high-level design you will be asked to make your system more reliable or scalable. Everyone has different opinions. So does your interviewer. So doing these interviews with friends or colleagues are the best way. Also, I found it was weird to talk to myself along with my practices so you really need help on this. Some companies, test your system design knowledge by asking you to describe your past project (for instance: Shopify technical deep dive)
To be honest, it’s a good time. Not only a lot of tech companies are hiring non-Japanese speaking software engineers, but Japan is also one of the top-paying markets around the world.
Subscribe to my newsletter for more things topics like this