Job Responsibilities - Take functional requirements and translate it into code - Develop solutions that are testable and can be enhanced in the future - Build solutions that are easily configurable without the need for deployment - Talk through thinking and designs for potential solutions - Develop software that can be easily distributed as a service - Run standup meetings on a daily basis - Define sprint backlog with project manager - Assign sprint tasks to members of the team - Perform code reviews - Organize and run design sessions - Prepare and execute deployments with the team - Manage the current and future state of the tech stack - Recruit and manage intermediate and junior developers - Build team processes that foster efficient software development, team cohesion and keeps development stack up to date with best practices Coordinating tasks between the development team and the project managers - Documenting technical specifications and maintaining time spent by the developers for the business. Qualifications and Experience - Have at least eight years experience working in Java - Understanding of common design patterns and principles, and how/when to apply them - Is comfortable with a fast paced and often ambiguous environment - Understanding and being able to implement services in a microservice Architecture - Knowledge of at least one SQL or NoSQL database technology - Must be able to identify and cater for various use cases from the customers perspective - Knowledge and experience in the following technologies is a requirement: o Java 8 o Spring Boot (including Spring Security, Spring Data, Actuator etc.) o JPA/Hibernate o MySQL 8 o RabbitMQ (or any broker-based queuing technology) o Git o CI/CD (we use GitLab) o Flutter and Dart for Android development o Basic Linux commands - Knowledge and experience in the following technologies will be an advantage o MongoDB o JBOSS Enterprise Java Beans (EJBs) o ISO8583 Finance Protocol o SOAP Web Services