We’re looking for a team player for a small, cross-functional team of talented and passionate Software Engineers responsible for designing, building and maintaining most successful ecosystems of microservices. Working with a cloud-native stack of state-of-the-art technologies and modern development approaches that work. Solving real-world data-intensive problems.
What & how
- Creating cutting-edge data-intensive systems for one of the leading global retailers to transform business through technology in the spotlight of the process
- Reinforcing software security against modern threats (e.g. botnets) using custom-built multi-factor adaptive authentication mechanisms
- Contributions to the open-source software communities
- Single-responsibility, loosely-coupled, highly-cohesive software (Microservices)
- Highly-available and low-latency software with elastic scalability and strict SLA requirements
- Professional and comprehensive monitoring, logging and alerting
- Data-intensive systems used at the backbone (e.g. Kafka, Spark) with appropriate data storage technologies (e.g. Cassandra)
- Asynchronous, non-blocking, event-driven architectures (using e.g. Vert.x, RxJava, Reactor)
- Multi-paradigm (incl. functional) development using modern Java and JVM languages including Scala and Kotlin
- Domain-Driven Design with Event Sourcing and CQRS
- Getting the most value out of the tests following TDD/BDD and multi-layer automation
- Rapid delivery of small changes to production
- Clear "you build it, you run it" philosophy displayed in cloud environments (e.g. AWS)
- Evolutionary Agile approach to software delivery
- Following Reactive Manifesto and 12-Factor applications
- Great teamwork and knowledge sharing
What we expect
- Team player eager to share, lead by example but also open to new ideas and solutions
- Hands-on software engineer rather than a programmer
- Fluent in Java and/or other JVM languages, understands language applicability and implementation fundamentals
- Able to develop and maintain high-quality code
- Has a deep understanding of data-intensive distributed systems
- Hands-on experience in designing and development of scalable, distributed, highly available solutions
- Experience in infrastructure development in the cloud environment
- Deep understanding of the functional paradigm
- Can communicate with the business
- Can express and document ideas through diagrams and technical documentation
- Communicative English, both written and verbal