Position: Senior Java Developer for Ciklum
Company: Ciklum
Experience required: 5y
English level: intermediate

**About project:**

We are looking to extend our back-end team with a Senior Java Developer with experience in building high-performing, scalable, event-driven applications. You will be responsible for maintaining and developing a tech stack, consisting of a core gaming platform system and an event-driven microservice-based application operating on top of it. The technology it is built upon is Groovy (core platform), Java (microservice layer), Spring and Kubernetes. You will be a part of a friendly and open-minded team, enjoying informal attitude and high level of cooperation, so bring your positive mindset and be ready to smile while at work!

**Responsibilities**
Participate in the design, extend and support the stack functionality – transactional logic, game play events, campaign and bonus logic, compliance requirements, etc.
Assist customer support and site owners in resolving production issues in a timely manner
Propose and implement improvements and optimizations of the tech stack
Collaborate with the product owners and stakeholders on grooming and estimating stories
Work closely with the front-end team and BI specialists on any back-end dependencies

**Requirements**
Experience in software development for more than 5 years
Excellent knowledge in Computer Science, Computing Theory:
Paradigm & Principles (OOP, SOLID, DDD, TDD, BDD)
Database theory (RDBMS, NoSQL)
Code testing practices
Algorithms
Data structures
Architectural, Enterprise and Design Patterns
Security patterns, Reverse engineering resistance, Common attacks types (OWASP)
You possess solid OOP skills
Understanding of network interactions:
protocols
conventions (e.g. REST, RPC)
authentication and authorization flows
standards and practices (e.g. oAuth, JWT)
Excellent knowledge and experience in Javas (Java 8 or above) (more than 3 years)
Practical commercial experience with:
REST API development
You are experienced with Spring Framework (Spring Boot, Spring Cloud, Spring Integration and Spring Web) (more than 2 years)
Testing frameworks (e.g. JUnit, PowerMock, WiresMock) (more than 2 years)
ORM (e.g. Hibernate) (more than 2 years)
RDBMS (e.g MySQL/MariaDB, PostgreSQL, Oracle) (more than 2 years)
Key-value storages (e.g. Redis, Memcached)
Solid experience with message brokers – RabbitMQ, ActiveMQ etc.
Web Servers
Version control systems (GIT)
Strong understanding of Docker and containerization
Experience with CI/CD – (we are currently using GitLab, but any other system like Bitbucket, Bamboo, Jenkins etc. will also count)
Builders
Experience in supporting production systems, analyzing logs, dashboards etc. (we are currently using the ELK stack)
Experience with:
Troubleshooting, profiling and debugging applications
Creation software architecture and design of complex applications, platforms, microservices solutions
Agile software processes and technologies
Code Review process
Refactoring process
Fluent or Upper-Intermediate English is a must

**Desirable**
Knowledge and experience in Groovy
Cloud computing platforms (Google Cloud Platform)
Experience with Kafka
Experience with Event-Driven systems, Event sourcing, CQRS
Experience with Container Orchestration tools (we are currently using Kubernetes and Nomad)
Certifications on:
Java
Spring Frameworks
Cloud computing platforms (AWS, GCP, Microsoft Azure)
Knowledge in Deployment patterns
Practical commercial experience with:
Serverless architecture
Integration with 3rd party solutions
NoSQL (e.g. MongoDB, ElasticSearch, CouchDB)
Experience with Search Engines (e.g. ElasticSearch, Azure Search, Apache Solr)
Provisioning tools (e.g. Terraform, Ansible)
Quality tools (e.g. SonarQube)
Past working experience in a Gambling/Casino company or understanding the Gambling/Casino business domain
Understanding of React/Redux or a relevant experience

**Personal skills**
Perform a broad range of complex technical or professional activities, in a variety of contexts. Investigate, define and resolve complex issues
Able to work in distributed cross-functional teams effectively
Influence customers and team members on the project level
May supervise others or make decisions which impact the work assigned to individuals or phases of projects
Plan, schedule and monitor own work (and of others where applicable) competently
Have learning agility (readiness for challenge and being open to change)

**What's in it for you**
Career growth opportunities
Realization of your innovative ideas in building new Ciklum Solutions and Services
Friendly collaborative teams and an enjoyable working environment
Professional skills development and training programs
Variety of knowledge sharing, training and self-development opportunities
State of the art, cool, centrally located offices with a warm atmosphere which creates really good working conditions