Position: Senior Java developer for banking project
Company: Unicsoft
Category: Java
Experience required: 5y
English level: upper

Looking for Senior Java developer for banking project.

**Requirements **

- Experience in software development for more than 7 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;
- Deployment patterns;
- Security patterns, Reverse engineering resistance, Common attacks types (OWASP);
- 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 Java (more than 7 years);
- Practical commercial experience with:
REST API development;
Web application frameworks (e.g. Spring Boot Framework) (more than 4 years);
Testing frameworks (e.g.e.g. JUnit, PowerMock, WiresMock) (more than 4 years);
- ORM (e.g. Hibernate) (more than 2 years);
- RDBMS (e.g MySQL/MariaDB, PostgreSQL, Oracle) (more than 4 years);
- NoSQL (e.g. MongoDB, ElasticSearch, CouchDB);
- Key-value storages (e.g. Redis, Memcached);
- Messaging systems (e.g. RabbitMQ, Apache Kafka, Active MQ, AWS SQS, - Azure Service Bus, Google Pub/Sub);
- Web Servers;
- Version control systems (GIT);
- Cloud solutions (e.g. AWS, Google Cloud Platform, Microsoft Azure);
- Docker;
- Continuous Integration tools (e.g. Gitlab Pipeline, Jenkins, TeamCity, Bamboo);
- Builders;

- Experience with:
Leading Team;
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 English is a must;

**Will be a plus:**
- Integration with 3rd party solutions;
- Search Engines (e.g. ElasticSearch, Azure Search, Apache Solr);
- Certifications on:
Java;
Spring Frameworks;
Cloud providers;
Delivery processes (SAFe, Agile, etc);

- Experience with Leading and Supporting medium to large size solution delivery projects;
-Understanding of orchestration and containerisation (e.g. Kubernetes, Swarm);
- Practical commercial experience with:
- Serverless architecture;
- Provisioning tools (e.g. Terraform, Ansible);
- Quality tools (e.g. SonarQube);

**Responsibilities:**
- Lead development team; 
- Lead and improve the decision-making process in design solution architecture, solution development, architecture and code review;
- Back-end development to meet customer’s business needs and implement components according to modern software development environment (cloud-based platforms, microservice architecture, etc.);
- Develop and review feature design documents and provide inputs/update to specifications for the solution;
- Design and implement a set of various types of tests (unit, integration, functional, etc);
- Proactive position in architecture preparation, solution development, processes improvements;
- Working in an international distributed team in an Agile environment;
- Communicate with PMs, engineers, Architects, QA and other colleagues and stakeholders;
- Delivering the product roadmap and plannings;
- To use high coding standards, software best practices and write highly testable, automatable and performant code over the whole SDLC.