While studying at university, John Joe began learning Japanese, and as part of that, did a study abroad program in Hokkaido. After graduating, he joined the US office of Amazon, but was left wanting to return to Japan. So when the opportunity to transfer to their Japan office came up a couple of years later, he went for it.
Three years after moving to Japan, he was ready for his next career move, and came across Givery. He was immediately attracted to their vision. He said, “I was really appreciative of the company’s vision about empowering engineers, trying to help engineers find jobs, and helping companies hire good engineers. I thought that it would be a better opportunity for me to have a more influential role in the product direction, and actually be able to influence things in a way that would lead to the product being more aligned with my views about what developers need.”
At least for my team, the code base is in Scala. That’s something that appealed to me a lot because I’m a big fan of functional programming.
That they used functional programming was also attractive. He said, “At least for my team, the code base is in Scala. That’s something that appealed to me a lot because I’m a big fan of functional programming. It’s pretty rare to find companies, especially in Japan, that are following that methodology.”
Joining the company, he also found that their work culture was much more comfortable than his previous employer. He said, “I was used to doing on-call every couple of months and getting paged in the middle of the night. Here, if something comes up during work hours, you try and fix it. But if it’s outside of work hours, it’s fine to wait for working hours to fix things. The work-life balance is a lot better for me here.”
We have a pretty light amount of load compared to what I’m used to. Once our sprint tasks are complete, we’re given total autonomy about what we want to work on.
This culture results in a creative environment where developers have a lot of freedom in product development. He said, “We have a pretty light amount of load compared to what I’m used to. Once our sprint tasks are complete, we’re given total autonomy about what we want to work on. For me, at least my experience previously was like, ‘Okay, you’ve completed your sprint work, pick up one of these specific things from the operation backlog and work on that.’”
For John Joe, he’s most enthusiastic about making technical improvements to the codebase and infrastructure. He said, “If I want to refactor the code base to improve the functional style, like use Cats or Akka, or reconfigure our infrastructure to use Athena or Simple Workflow Service, I can just try it out, propose a change and, once I get the team’s approval, just kind of go with that. That’s a lot of fun and I think it’s pretty rare for businesses to be willing to support that type of work where it’s not bringing a direct quantifiable business value, but it is keeping the code fresh and readable and allowing our development speed to improve, just because it’s easier to work through things when are done in a more logical manner.”
Being able to work on these kinds of refactoring tasks isn’t a rare thing. John Joe said, “On average, I have about 25% of the sprint leftover for technical improvements or whatever that I want to do.”
The teams operate in English. I think that makes it really accessible for international developers that aren’t fluent in Japanese.
At Givery, he doesn’t need to use Japanese, though he sometimes seeks out opportunities to use it. He said, “Within several of the development teams there is no expectation of Japanese language ability. The teams operate in English. I think that makes it really accessible for international developers that aren’t fluent in Japanese, but on top of that, a large percentage of the company does work in Japanese. So there’s a lot of opportunities to improve your Japanese working here. It’s not completely siloed away from the Japanese parts of the company. So for me, that’s nice, because I had few opportunities to improve my Japanese at Amazon.”
A recent technical challenge John Joe faced was scheduling the delivery of coding exams. Givery customers may occasionally face situations where they would want to synchronize the email delivery of a coding exam for up to thousands of candidates applying over multiple days, such as at a career fair. John Joe said, “Until we were tasked with solving this problem, I hadn’t really appreciated just how difficult it is to schedule an arbitrary amount of actions to occur at arbitrary times across a distributed system.”
While he prototyped solutions to the scheduling problem using tools like Quartz Scheduler or AWS Step Functions, he ultimately simplified the problem by restricting customers to specify only the hour of delivery (e.g. 7pm or 8pm). This allowed him to go with a cost-effective solution that was resilient to errors: a Cron job that triggered a Lambda function to initiate the delivery sequence.
John Joe recommends other international developers join Givery because of their culture of working sustainably, the ability developers have to influence the direction of the project, the ability to communicate in English, and their support to work completely remotely.