Our Engineering team helps Nu create and scale the technology that powers the best financial products in Latin America. We strive for state-of-the-art software development practices, using a variety of technologies and architectures to build resilient, secure, and highly scalable systems
As a Senior Software Engineer, you will play a key role in leading the design and evolution of large-scale distributed systems within your team, and influencing technical decisions in close collaboration with adjacent teams. While we value experience with our tech stack, we are confident that engineers who are eager to learn will be successful here — and we will teach you Clojure as our main backend language
Horizontally scalable microservices written mostly in Clojure, using Finagle and leveraging functional programming techniques and hexagonal architecture
High-throughput jobs and inter-service communication using Kafka
Continuous Integration and Deployment pipelines on AWS
Data storage solutions using Datomic and DynamoDB
Monitoring and observability with Prometheus
Services running as much as possible in Kubernetes
We are a process-light organization that values human interactions. We work in small, independent teams that feel like startups within the company and avoid unnecessary coupling and centralization whenever realistic. We understand that execution is key to success and continuously optimize our processes to remove bottlenecks
Working with large-scale distributed systems and understanding their broad architecture and trade-offs
Leading technical direction for your team and partnering with adjacent teams to keep solutions aligned with our architecture and business strategy
Driving pragmatic innovation while ensuring resilient, secure, and flexible solutions that scale across products and geographies
Mentoring engineers within and around your team and helping maintain a high technical bar
Writing, testing, instrumenting, documenting, and maintaining high-quality code
Pairing and participating in code reviews to support the growth of others in and around your team
Collaborating closely with Product, Design, and Engineering leaders to build new end-to-end experiences
Ensuring comprehensive observability, performance monitoring, and robust error handling across your team’s services
Participating in on-call rotations for your team and responding to incidents as necessary
Focusing primarily on backend applications