We're Manzanita, a digital marketing company that builds software to accelerate client campaigns. Our goal is to bring marketing in Japan into the modern era. We're not content building run-of-the-mill solutions; there are enough marketing companies out there doing that already. Our approach has seen success so far, and we're now looking to scale the team and platform even further. We recently revamped our hiring process for this role and are excited to find passionate candidates.
About the position
This position is full-time, on-site in our Tokyo headquarters. We're open to candidates looking to relocate to Japan, and don't require Japanese abilities.
As a full-stack software engineer, you'll wear many hats, having a wide range of responsibilities.
Architect systems that run at scale
Internally, we use a combination of Docker and AWS to run our services.
You should have a thorough understanding of the HTTP(S) stack, including domain networking, load balancing, session handling, and how services communicate with one-another.
We care greatly about protecting any customer data we may touch. You should too! This means understanding web security, from why SSL should be used, to data encryption (at-rest and in-transit), to authenticating communication between services, and beyond.
We practice continuous integration, and have hooks for proper testing… although we're always looking to improve this. A release will not move unless all tests pass.
We're very Git friendly. New features and work are done in their own branches, and undergo review before getting released. If something breaks at a bad hour, we consider that outside the norm, and attempt to avoid it before it's a problem.
We currently run a slightly custom pipeline, but are looking to build this even further.
You don't have to be a data scientist at heart, but you do need to be able to confidently state where a machine-learning component would sit in the stack.
Occasionally, a data scientist may write a piece of code that works amazingly as a math solution. It might not work well in practice, because computers have a million other concerns. You might be asked to weigh in and help diagnose performance issues.
Exposure and understanding of some of the algorithms and libraries below are nice-to-have, but not absolutely required:
- k-means, k-nn, Naive Bayes, SVM, Random Forest
- Numpy, Pandas, Scikit, XGBoost, Keras or Tensorflow
Our internal API is heavily Python based, but we're open to the right tool for the job. With that said, you should be very comfortable in Python. We're fully Python 3, if you're curious.
We run on a Django-based stack with a PostgreSQL database backing it. You should be comfortable building Django applications that avoid common pain points (SQL join issues, etc). You should be comfortable with PostgreSQL, to the point where a manual migration doesn't scare you and a bit of raw SQL isn't.
We have a Redis instance for basic caching and the like. You ideally have experience with Redis and understand why you'd use it over a table in a database.
Leading and Mentoring
Japan's software industry is unlike other parts of the world. This provides a unique opportunity to mentor and build up candidates who might not otherwise have exposure to modern development concepts. You would help lead a team of engineers to build the product, and work with them to grow their skillset.
OUR INTERVIEW PROCESS
We try to be respectful of candidate time. If you have an existing body of work (GitHub, etc) feel free to send it along - we actually do review them!
Our interview process starts with a 1:1 call with the Engineering team, where the goal is to chat about you, your experience, what you're looking for, and whether there's a fit. You will be tested on the concepts above, and should allocate about an hour for the call.
If that goes well, then you'll be invited for an on-site interview, where you'll meet with the rest of the team. You can get a better understanding of the work culture, office life, and who you'd be working with. If that also goes well, then an offer would be extended, at which point the ball would be in your court.