First-year of Gaijin Engineer in Tokyo
The year of new experiences.
Hi, I’m Son (ソン) software engineer @ MoneyForward.
It’s been one year since I moved to Tokyo, the capital of Japan. Tokyo is a beautiful city that has everything I need: bookstores are everywhere, coffee shops are in every corner of the street, convenient public transportation system, and people are really friendly. Yes, I really enjoy my first year in Tokyo.
In my note for Money Forward Advent Calendar 2019, it’s time to look back at what I have done, especially as an engineer.
1. 2019/01 - 2019/05: Blockchain Engineer
2. 2019/06: Hackathon, Hackathon, Hackathon
3. 2019/06 - 2019/12: Microservice Team
4. The challenges?
5. What's next?
1. 2019/01–2019/05: Blockchain Engineer
I worked as Blockchain Engineer at the Wallet team to build CLI based Bitcoin/Ethereum wallet. My primary job is to make sure the wallet system is stable and secure. Our main tech stack included
- Golang: All functions at wallet system are written by Golang
- MySQL: Store transaction history and account’s information
- Bitcoin core/Bitcoin ABC/Parity: Client node to connect to the Bitcoin/Bitcoin Cash/Ethereum network.
- Docker: Mysql, Bitcoin node, Bitcoin Cash node, Ethereum node are running on Docker.
- gRPC: RPC framework built on top of HTTP/2 to connect with Backend
- GCP: Hot wallets run on GCP
- JSON-RPC: to query information from the blockchain node.
Besides focusing on building the Wallet system, we also have weekly research event with the purpose of catching up with the latest trends in tech. It also covers some complicated topics like Ethereum's Transaction, Ethererum 2.0 architecture, Ethereum Virtual Machine…etc.
Sharing knowledge is always my passion, fortunately, I had an opportunity to give a talk in front of hundreds of audiences about what’s different between a private blockchain and public blockchain. My first tech public speaking, so obviously that was an unforgettable experience of my life. (I remember I had to practice weeks for just 15 minutes)
Honestly, working as a Blockchain engineer was my best time in Japan so far. I joined a small agile team — 4 engineers managed around 20 containers and ~10 repositories on Github to build a blockchain-related product from almost scratch.
But, to deliver a product to end-user, especially a complex project like cryptocurrency exchange project requires a huge effort and resources from development, business, customer supports, operation…team. This is the first real project that I was involved in both tech and business side (reading about stable coin, STO…) . But due to the volatility of the market, unfortunately, the project had been postponed indefinitely.
I personally still believe by using blockchain to build open financial infrastructure will be a true game-changer. Let’s think about moving money smoothly as same as you move information nowaday, “that will enable wallets, merchants and services from all over the world to move value around at an incredibly low cost”. But the new tech revolution always needs time for massive adoption.
2. 2019/06: Hackathon, Hackathon, Hackathon
I need to refresh myself after my first, not a really successful project. So I came back with my favorite hobby — Hackathon.
- Brainstorming and coding 48 hours through the night with your friends.
- Building something from scratch under high stress using a new tech stack.
- Pitch in front of hundreds of people about your idea (even your app doesn’t work)
Yeah, that’s why I love the hackathon.
Decrypt Tokyo — Blockchain Hackathon
I teamed up with 4 Japanese guys, and I was the only developer in my team. So obviously no hope to beat engineers from Quantum, Kyber Network, Omisego... Instead of building a real product, we just focus on slide and a little fancy front-end to demo to audiences.
But at the end of the day, we won the Judge’s special award with “Reduce rush hour in a train” idea. 🎉
The solution is the train companies give some incentive (token) who avoid rush hour time zone, and the person who gets token will be visualized contribution by anchoring semi-private blockchain. Actually you don’t really need blockchain in this case, I just added blockchain to take the prize.
AngelHack is a global hackathon organization. It began in San Francisco and expanded to over 50 cities with around 100,000 developers in the community.
Three years ago, I have failed at Angel Hanoi Hackathon 2016, so this time, I gathered my close friends, aim to get the highest prize.
Unfortunately, we couldn’t get any prize (that was sad), but speaking about our idea in front of 200 people by English was already my big challenge (even my speech was just 2.5 minutes)
By joining the global hackathon, it clears my mind that my level is nowhere to compare with America, Japan, India…engineers.
After the exhausting hackathons, time to back to work.
3. 2019/06–2019/12: Microservice Team
My next adventure began when I joined to Microservice team at CTO Office. Moving from Rails world to Microservice world is totally different, not only about tech stack, programming language… but about how to design and implement the service. How many processes in our service? Should we use synchronous, or asynchronous for communication between each service? If synchronous, should we use REST or RPC? If asynchronous, should we use polling, callback by WebSocket or Pub/Sub?. What’s should we log? What’s about metrics?
Building the microservice platform requires wide-range knowledge. To be honest, its event difficult for me to remember the name of all the tech stack that I have been using. I still can’t catch up with all these technologies.
Go, Nodejs, Typescript, Lerna, Docker, K8S, Terraform, ArgoCD, CircleCI, K8S, Loki, Grafana, Prometheus, Envoy, Istio, Kiali…
In addition, the team was just established, so some services that I took responsibility from the beginning. Working from a prototype to production is definitely necessary for any kind of engineer. Having said that, I believe an engineer who is the creator/builder not only who can write code.
Writing documentation, design architecture, development, deployment, delivery. Yeah, the engineer should be involved in these works and microservice architecture is definitely helping us achieve this goal.
Currently, our team has only 3 ~ 4 services but hopefully, we can make it around 10 ~ 15 services next year.
4. The challenges?
The language barrier and cultural differences are definitely the most challenges when you work abroad.
The language barrier
It’s OK to talk about the weather, daily stuff. Then it will be a little hard to talk about tech. And then if you have to explain blockchain for non-tech guys, it would be very very challenging. Like I said above, an engineer should have an ability working from prototype to production. But that progress may require many meetings, conversations between teams, inside team… So your life will be miserable if your communication isn’t good enough. Importantly, Communication can open a new idea, a brilliant solution can come through deep communication.
Moreover, the language barrier also comes to lack of information problem. Since all of the documentation is written by Japanese, you have to spend days browse, understand… project’s document, it's also difficult to contribute to the core products of the company.
True be told, my Japanese level must be around N1 to catch up with the growing speed of my company.
Too much new technologies
Don’t get me wrong, I really enjoy to learn new things to fresh my mind, expand my knowledge. But since this is my first year abroad, I have to deal with other non-tech problems, it would be a challenge to me if I change my tech stack every single project. Instead of that, I can focus on better communication, deep dive on some techniques…
5. What’s next?
What I most realized after 1 year by observing, working at ~1B startup, that building a product is hard. Especially,
Building a world-class product needs the world-class engineer.
In order to do that, I need to go focus and sharp all my skills: English, Japanese, System Design (continue with Microservice). It feels really bad when you know you are not good at anything.
Since my first year in Japan basically didn’t bring any output, I hope the new year will be better, but my priority is still learning as much as possible, not only techniques but also about thinking, management, problem-solving… from my Japanese colleagues.
Be hustle. But also be patient. You still have a long run. Your life is a marathon.
First tech public speaking, First English pitching, First failed project, First time try with microservice architecture, First time join a meeting without understanding…
Life is all about new experiences! Can’t wait for the new year!