Senior Software Engineer - Consumer Finance Engineering
About Paidy Inc.
Paidy is Japan's pioneer and leading BNPL service with the mission to spread trust through society and to give people room to dream.
Paidy offers instant, monthly-consolidated credit to consumers by removing hassles from payment and purchase experiences. Paidy uses proprietary models and machine learning to underwrite transactions in seconds and guarantee payments to merchants. Paidy increases revenue for merchants by reducing the number of incomplete transactions, increasing conversion rates, boosting average order values, and facilitating repeat purchases from consumers.
Paidy continues to innovate to make shopping easier and more fun both online and offline. For more information, please visit http://www.paidy.com.
This position is for a Senior Software Engineer, reporting to the Consumer Finance Engineering Manager, who will lead and develop projects integrating with APIs for credit card integrations and other credit products. The position calls for a senior engineering role, meaning someone who can be a leader for projects as well as for people. The engineer in this role will likely be tasked with leading projects and would be a key person in the team leadership.
Our tech stack includes:
- Docker-based microservices written mainly in the Rust Programming Language
- Other Paidy microservices written in Scala (outside the team, but have occasional interactions with these services in our team)
- AWS Services (fargate, RDS, lambda) with PostgreSQL DB
- Circle CI + terraform provisioning and deployment
- Linux/MacOS development environment
- HTTPS, SSL, X.509, and other secure technologies for secure communications
- HTTP REST and GraphQL APIs (JSON data)
- Kafka Message Queueing
Your Duties & Responsibilities
As a senior software engineer, you will be responsible for both individual contribution and project leadership. Gathering requirements, design, testing, implementation, and operations of services under the Consumer Finance Engineering team purview will all be a part of your daily responsibilities.
You will be responsible for design and implementation of systems mainly using the Rust programming language. You will also be expected to design and implement services using the following principles:
- Functional Programming - Use of data transformations (map-reduce, etc.), immutable variables, pure functions where possible, etc.
- SOLID principles, where applicable for Functional Programming using a “trait”-based language (such as Rust, Python, or Scala).
- REST-based microservices for synchronous service communication (orchestration)
- Queue-based publishing/consumption for asynchronous service communication (choreography)
- Test-driven design and development where possible.
As a senior engineer, you will be expected to meet these following qualifications upon employment, as well as grow and develop yourself in the field of software development:
- At least 5 years of backend development in multiple modern programming languages (combination of C/C++, Java, Rust, Scala, Golang, Python, etc.)
- Extensive experience with designing software both from the ground up and making changes to existing applications (OO-design, Microservices, functional design, DDD, Domain/Protocol separation, etc.)
- Knowledge of systems development and operations (Docker, Redis, SQL DBs, AWS, Source-control, CI/CD systems, etc.)
- Business-level or higher English (both reading and writing)
- Solid understanding of basic software engineering principles (data structures, number theory, machine data calculations, networking, multithreaded programming, etc.)
- Basic understanding of functional programming paradigm and methodologies
- Basic understanding of OO-design
Please note that prior Rust or Scala experience is not a requirement, however you will be expected to learn quickly and be able to contribute in a short amount of time, so at least gaining some familiarity with Rust, in particular, before joining the team is recommended.
The following are not expected, but are very helpful in your role on the Consumer Finance Engineering team:
- Deep development experience with multiple programming languages
- Intermediate knowledge of and experience with functional programming.
- 2+ years experience in the Fin-Tech industry, especially with banking systems and/or credit-card processing systems.
- Team-management or project lead experience leading teams of 3+ people on development projects.
- Conversational fluency in Japanese is also a plus (NOT required)
Be a winner / 勝ちにこだわる
- Beat expectations / 常に期待値を超える
- Display surprising speed / 人をスピードで驚かす
- Embrace risk / リスクを恐れない
Own it and deliver / 結果を出す
- Commit to what, when and how to deliver/ 目的・やり方・期限にコミットする。
- Own the actions to deliver / 結果のためのアクションにこだわる
- Embrace conflict when needed to deliver results / 必要なら対立・衝突も恐れない
Play an integral role / 大切なピースになる
- Make an irreplaceable contribution to our business / 替えの効かない貢献をする
- Embrace and bridge differences in language and culture / 皆が言語と文化の架け橋になる
- Raise the bar / スタンダードを上げ続ける