Job Description
We are building and modernizing the Lending Payments platform that enables secure, reliable money movement across digital channels and lending servicing systems. This role designs, builds, and operates Java services that process or orchestrate payment transactions and integrates with enterprise data and downstream systems. We prioritize engineering craftsmanship: clean code, SOLID design principles, high-quality testing discipline, and 12-factor application practices to ensure services are scalable, resilient, and maintainable.
What you’ll do (core responsibilities)
Build high-quality Java services (craftsmanship + correctness)
* Design and implement Java/Spring Boot services and APIs that support lending payment capabilities end-to-end.
* Apply SOLID principles, clean coding practices, and disciplined refactoring to keep codebases understandable and evolvable.
* Own quality outcomes through layered testing (unit, integration, contract, and end-to-end as appropriate) and meaningful code reviews.
* Design for correctness in payments: idempotency, transaction boundaries, safe retries, and clear error semantics.
Operational excellence (production ownership)
* Build services with operational readiness in mind: observability (logs/metrics/traces), clear runbooks, and measurable service-level objectives.
* Troubleshoot production issues using evidence (telemetry, logs, traces); drive root-cause fixes and prevention.
* Partner with operations and platform teams on release readiness, incident response, and resiliency improvements.
12-factor application development
* Externalize configuration and secrets; keep codebase environment-agnostic and deployable across environments.
* Treat backing services (databases, queues, downstream APIs) as attached resources; design for transient failures and graceful degradation.
* Emphasize stateless, horizontally scalable services; use concurrency safely and intentionally.
* Build for fast startup/shutdown, immutable deploys, and repeatable builds in CI/CD.
Collaboration and delivery
* Collaborate with product, architecture, QA, and data teams to translate requirements into safe, testable implementations.
* Contribute to design documentation (diagrams, ADRs), API contracts, and operational documentation.
* Participate in an iterative delivery model (backlog-driven), ensuring traceability from requirement to release and support.