Job Responsibilities
- Identifies problems, proposes solutions, suggests what's best to focus on. Sees themselves as a problem solver. Contributes to the problem at hand, even when outside their area of specialty.
- Use domain modelling techniques to allow us to build best in class business products.
- Structure software so that it is easy to understand, test and evolve.
- Build solutions that avoid single points of failure, using scalable architectural patterns and keep us up to date by continuously updating our technologies and patterns.
- Develop secure code so that our customers and ourselves are protected from malicious actors.
- Promptly investigate and fix issues and ensure they do not resurface in the future, make sure our releases happen with zero downtime for our end-users.
- Keep an eye on performance, making sure we use the right approach to identify and solve problems.
Required qualifications, capabilities and skills
- Formal training or certification on software engineering concepts and 3+ years of applied experience.
- Experience working as a back-end software engineer (actively coding) and solid approach to writing unit level tests using mocking frameworks, as well as automating component, integration and end-to-end tests
- Extensive experience with using a JVM language (Java/Scala/Kotlin, preferably Java 8+) and experience in automating deployment, releases and testing in continuous integration, continuous delivery pipelines
- Understanding of security frameworks / standards , data streaming and messaging frameworks (Kafka, Spark, etc.), distributed tracing and monitoring (Zipkin, OpenTracing, Prometheus, ELK stack, Micrometer metrics, etc.) , experience with containers (Docker, Kubernetes, etc.)
- Professional experience working in an agile, dynamic and customer facing environment
- Understanding of distributed systems and cloud technologies (AWS, GCP, Azure, etc.), dependency injection frameworks (Spring / SpringBoot, Guice, etc.), microservices architecture, RESTful APIs, web technologies, relational databases
Preferred qualifications, capabilities and skills
- Ability to work in a collaborative environment and coach other team members on coding practices, design principles, and implementation patterns that lead to high-quality maintainable solutions.
- Ability to work in a dynamic, agile environment within a geographically distributed team and focus on promptly addressing customer needs
- Work within a diverse and inclusive team
- Technically curious, versatile and solution oriented
- Excellent written and verbal communication skills in English