Updated September 1, 2023

Transitioning into Tech: From English Teacher to Software Engineer in Japan


Cornelius Phanthanh

Japan Dev contributor

Transitioning from English teacher to Software Engineer in Japan didn’t happen overnight. 

That said, I’m confident that anyone determined and willing to work hard enough can do it. This is for those curious about one way it can be done. 

From leaving the JET program and joining a boot camp to my first software engineering job and working as a software engineer in Japan, these are all the steps I took and mistakes I made to get to where I am today. 

Dropping everything and moving to Japan


I graduated in 2009 with an Economics degree and went to work as a graphic designer for a local company. Though a great learning experience, I had an itch that I felt just wasn’t getting scratched. 

I longed for something completely different. An environment so far from what I was comfortable with that I had to adapt. In the process, I wanted to learn new things about myself and the world. 

At this time, a close college friend of mine--a JET program Assistant Language Teacher (ALT) in Fukushima--told me to look into the program. He later lost his house in the Tohoku tsunami and stayed behind unpaid to volunteer and help. 

I’d never been to Japan. I didn’t speak a word of Japanese. I applied anyway.

In 2012, I interviewed with the JET program, and ended up moving to a place called Tanegashima.

Not sure where that is?  Neither was I.

But moving to this tiny island in Southern Japan was a turning point in my life, and I'm still thankful I made the decision. I met amazing people and built friendships I keep to this day. I taught kids who still keep in touch with me, and changed my life in every way for the better. 

I then traveled through Southeast Asia and Oceania. I took odd jobs like dairy farming and replanting native trees to bring wildlife back to old land. I also freelanced in graphic design along the way to make ends meet. 

Toward the end, I began to think about how I could position my skills to enter a career that I found interesting. This is where I thought about Software Engineering.

Switching from teaching to programming


In 2019 I moved back to California to join a boot camp software engineering immersive. 

I did a lot of research on the different kinds of boot camps available. I researched programming languages to decide which language I wanted to start in, and the kind of work I wanted to be doing. For about 3 months I self-studied every single day like it was my job to test and get into the program. 

Once in, the firehose of information began. It was generally 8 am until 10 or 11 pm (sometimes even past that) every single day except for Sunday.

Imposter Syndrome

I had a major case of imposter syndrome that has been a journey to learn to manage. 

My cohort mates came from all walks of life. Some came with computer science degrees, some already with work experience. Others seemed to pick it up easily. It was hard not to look inward and focus on my inadequacies. I struggled to wrap my head around concepts. Every algorithm I stared at brought me closer and closer to panic. 

I balanced this fear out negatively by coming down hard on myself. “Get it together, Cornelius. Work harder. Stay up later.” 

I thought cracking the whip on myself would motivate me to keep up with everyone else. Later I learned how mentally unproductive this is. Everyone there was going through their own version of struggles. I had to learn to encourage and be patient with myself the same way I was helping my cohort mates.

After completing the program, I applied to stay as a fellow for 3 months and work as an assistant. I worked on my soft skills — I believe my experience as an ALT helped here. 

Communication is important. Making sure everyone feels like they can ask anything is important. Patience when pair programming is important. There’s a line to balance when explaining something to someone without making them feel embarrassed or upset. 

This is most evident in good senior and lead engineers. They facilitate conversation and consequently, better code and teamwork. These are all skills that I practice today in the workplace. On top of programming, companies want engineers who can leverage their soft skills to increase the output and efficiency of the team as a whole.

Searching for my first software engineering job was different from learning to code. 

Through rounds of interviews, I honed my live coding and technical discussion skills. I set up an Excel sheet: status, company name, date submitted, job title, location, link to the application, and contact names. Job searching was my job. 

Here were my stats:

  • 110 applications

  • 7 phone screenings

  • 5 “onsite” interviews

  • 1 offer

If I didn’t get rejected, I was ghosted. I wasn’t going to let that ever stop me, making it a point to stubbornly apply until I landed a job.

If I could have changed something about this process, it would be to have sought out a group of like-minded people with the same goals during the job hunt. My boot camp cohort went job hunting as soon as the program ended. 

After the bootcamp, I applied as a fellow. Fellows act as assistants, which helped me to continue practicing in areas where I felt I was weak. This meant that when my time came to job hunt, nearly everyone already had a job. I like the accountability of being in a group. I want to practice algorithms together and discuss interview tips and tricks. 

I felt a little lonely on this one, and that made the search a little tougher.

Preventing search burnout

Months into my search, I was burning out quickly. Everything was getting to me, and I needed to get myself out of the rut. 

Through a cohort mate, I heard about an open-source project called Uproot. It sought to inform the public about how their local representatives vote. This was a turning point for me. 

Run by FAANG engineers, it was the perfect opportunity for me to do something different while continuing to learn. They operated their standups, git flow, and code reviews just like they did on their teams at work. Here I felt like I was contributing to a work environment. 

It felt the same way a software engineer might do their job but without the pressure to perform. I applied what I’d learned to a real production environment and saw my changes on a product actually in use.

And then I got the job! I worked to transform a legacy C# Blazor app into a modern React app. We used react-native-web for a shared component library. It allowed us to revamp the legacy native iOS and Android apps. All my hard work had come to fruition, though this was only the first exciting step in this ongoing journey.

For about 6 months I worked from California. After that, I told my company that I wouldn’t be able to make the return to office directive. I'd decided to move back to Japan and ask my now-wife to marry me

My boss decided to keep me and allow me to work remotely in a nearly opposite time zone. While this felt like a gift, there were also cons to the pros. Especially in the very first job of my programming career.

The pros and cons of working remotely in an opposite time zone


The pros: 

I live in Hokkaido where the cost of living is low. My salary allowed me to save a lot of money and buy a house and start a family. Of course, I’ll forever be grateful for this! 

I learned how important it was to communicate clearly when working so asynchronously. I documented every part of my day: my blockers, what exactly I did, what I tried, what went wrong, or what went right. I tried to make it as easy as possible for my teammates to pick up where I left off. When my day in Japan was starting, they were wrapping up. Aside from our standups, there were no longer any times I could ping a coworker for help. No second set of eyes on something. This meant I had to be extremely organized and communicative, traits valuable to any team.

The cons: 

I’m a social person. I like teamwork. I like being able to talk to my teammates immediately to fix problems or discuss issues. 

Work aside, sometimes I simply want to send a light joke in the slack water cooler channel to break up the day. Unfortunately, I lost all of that when I moved to Japan. Everyone was logged off by the time I started getting into my day. 

I’m capable of working and learning independently. Unfortunately, not having a senior engineer around during work hours slowed my growth. This was a crucial time when I wanted to focus on it. This gap in communication hours led to inevitable delays. If I hit blocks in the middle of the day that I couldn’t get through, it’d have to wait. 

Developers started waking up in California around midnight Japan time. If this was 3+ years into my career, I'd have been more comfortable with the situation. I don’t think I should have done this drastic a time difference for my first job. I learned a lot and made it work. However, in my next job, I wanted to be able to communicate with other engineers during the same hours.

Finding a developer job in Japan

When I began the search for a position in Japan, I noticed how different my Excel sheet was. 

Fewer rejections and more first-round interviews. 

During my first search, I focused on talking about my skills and what I was capable of during the interviews. This time around felt so much more natural. I talked about what I’d done at my previous position. I discussed trade offs in technology and swapped programmer stories. I wrote down important metrics from meetings and put them all down on my updated resume. 

My bullet points went from talking about the technology I knew, to how using the technology contributed to the betterment of the team. I also made sure to write about the direct measurement of the impact it had.

My wife is Japanese and we only speak Japanese to each other, but I have no JLPT certifications. I like to think I can speak at a pretty confident level, but I’d probably have trouble understanding high-level business conversations. 

This puts me in a narrower position in finding the right job for me. Though I’m comfortable speaking Japanese in the workplace, I’d ideally like to be on an English-speaking engineering team. This makes communication as effective as possible. 

This is exactly why Japan Dev is so useful. It can find positions for software engineers and filter for English OK jobs, allowing people like me to find the perfect fit.

In a big contrast to the large corporation I worked for back in California, I found my next position at a Tokyo startup. It’s fast-paced and hard work, but I learn so much every single day. The team is diverse. The business side speaks mainly Japanese, but the developers are international and use English. Anything too difficult to translate is solved with a handy little Slack bot. It intercepts messages and spits out the translation into the chat.

I’m now moving to Tokyo for an offer at a large Japanese corporation, so on to the next steps! My journey up to this point has been nothing short of an amazing learning experience, and I’m thankful to have made it this far. 

Though difficult, it’s certainly not impossible. Here are a few things I’ve learned along the way.

What I’ve learned from working as a software developer


Programming ability is very important, but so are soft skills. 

Software development isn’t usually done alone, it’s done as a team. Engineers that are empathetic and willing to discuss problems become invaluable assets to their teams. They improve by listening to constructive criticism or code review. Working with kids and classroom teachers as an ALT helped me to build a solid foundation for these skills.

Ask as many questions as possible, only after you’ve truly tried it yourself. And I don’t mean the onboarding process when joining a new company. When joining any new company, ask as many questions as possible. You’re allowed to do so, and it’s the best time to do it. 

Write everything down. When I hit a block while programming, I make a list: the problem I’m facing, what I’ve tried to fix, and what I think the issue may be. Sometimes in writing this all out, I’ll rubber duck it and find a different approach or the answer myself. If I’m still stuck then I’ll ask others, providing as much information as I can instead of “I don’t know this. Please help.” People are more inclined to help when they know you’re trying your hardest.

It takes grit. A stubborn level of grit. It may take hundreds of applications and tons of deflating rejections, but keep at it. Learn from each experience — you will get there.

Changing careers is scary, but it’s because it’s a career change. It’s big, so drop being too hard on yourself (something I am very guilty of doing). Sometimes we think that being hard on ourselves will motivate us to do better. 

Treat yourself the way you’d treat a friend. If your friend was trying to do this, chances are you’d be encouraging them when they were feeling unmotivated or defeated. You wouldn’t be telling them to “suck it up” or to “just work harder.” 

Treat yourself the same way.

Always stay open and continue to learn. Chances are if you’re wanting to make the change from ALT to software developer, you’re already the type to do this. This doesn’t have to mean staying up to date on every cutting-edge technology or drilling leetcode every single hour outside of work. It means continuous movement and gradual improvement. 

My work allows me to live the life I want — spend time with my wife and son, surf, and enjoy a nice dinner with friends. This prevents the burnout that can be so common in this career. It’s a marathon, not a sprint. Find the balance that works for you so that you can enjoy your career and life as well. I know software engineer friends that love to code outside of their work hours. That’s what makes them happy. I know other engineer friends who close their laptops when work is done and go off to other hobbies. 

Whatever it is, find the balance that works for you.


I think it’s important to emphasize how every situation is different

This is only my version of transitioning from English teacher to software engineer, and this journey is far from over. The road hasn’t been easy, but I don’t expect it to be. I always want to be learning, and I’m happy to say that I’m doing exactly that. If you’re reading this and considering making the jump, I want to tell you that if you are committed and willing to work hard, you can make it happen.

I wish you patience and persistence, and most of all fun on the road ahead!


Cornelius Phanthanh

Cornelius is a German born, California raised, Vietnamese-American software engineer who’s been living in Japan for 12 years. He loves learning about cultures, languages, and all things front-end!