Position: Senior Java Software Engineer
Company: United Software Solutions
Experience required: 5y
English level: upper

**Company Description:**
SG Digital leads the online gaming and sports betting industry with cutting-edge software and technologies that put the player first. Our solutions are used by some of the world’s most successful operators, including William Hill, Ladbrokes, Paddy Power, Betfair and SkyBet. Our world-leading OpenSports product portfolio processes over 70% of all UK & Gibraltar regulated bets, on a system that offers unparalleled levels of performance and scalability.

Our customer teams ensure that our global clients receive ongoing support and development to keep their sports betting solutions ahead rapidly evolving tech trends.

With offices in the UK, North America, Australia, Greece, and Romania, over 20 customers in the online gaming industry and over 100 partners worldwide, SG Digital provides the most open gaming platform and a product suite that ensures the very best and most flexible solution available. We are passionate about the work we do and have built a reputation on the high quality of our software, our delivery and client satisfaction.

**Job Purpose:**
The Senior Software Engineer (Java) role will be a key one for the SGDigital New Product Development (NPD) team. Reporting to a L4 Senior Software Engineer, the Senior Java Software Engineer will be working alongside other Software Engineers, Project Managers, Scrum Masters, Product Owners, QA, Software Architects and Operational Excellence in order to shape and implement the technology and product deliverables that will drive forward this strategic initiative.
The NPD team will be more aggressively adopting newer technologies, architectural principles and approaches to development, deployment and monitoring. Java Software Engineers will be critical to ensure the highest coding standards and quality of deliverables to the QA and Operational Excellence teams and for adoption by operators. A Java Software Engineer will be expected to both lead and mentor less experienced developers, actively contributing to their day-to-day activities and training needs.
There will be a mixture of small, but strategically significant projects, and also large scale complex programs of work, all delivered in an Agile format with direction from Product Management, but with delivery via a tightly contained team focused on quality deliverables across the platform.

**Requirements:**
Technical skills of relevance:
● Mandatory
○ A minimum of 6+ years’ hands-on experience in designing and developing applications using Java Enterprise platforms, using UNIX / Linux
○ A minimum of 3+ years’ hands-on experience in designing distributed systems, for example using (preferably) DDD or SOA and potentially also a central ‘broker’ (such as Kafka or potentially an ESB)
○ A minimum of 2 years’ hands-on experience in designing applications using the actor model
○ Excellent knowledge of Relational Databases, SQL and ORM technologies (JPA2, Hibernate etc.)
○ Experience in developing web applications, preferably on Springboot MVC or using at least one other popular web framework (JSF, Drupal, GWT etc.)
○ Demonstrable experience with TDD and / or BDD
○ Experience in web sessions, SSO flows and exposing REStful APIs to frontend clients
○ Some experience in use of Akka, Kafka, Scala and Cassandra
○ Extensive experience is the use of Docker, Ansible, Maven, Jenkins, Sonar and Git (BitBucket)
○ Demonstrable experience in developing large distributed systems and concepts such as caching, sharding, consistent hashing, interprocess communications and brokering
● Preferred
○ Hands-on experience in developing microservices using at least one popular framework (Netflix OSS, Spring Cloud, Play etc.)
○ Some experience in Domain-Driven Design, the actor model, event-sourcing and CQRS
○ Secondary expertise in Python (maybe PHP) and PostgreSQL or MySQL would be beneficial
○ General scripting skills: Bash, Perl, Python, Javascript etc.
Domain knowledge is not required, but having worked on major eCommerce or any significant widely distributed system is.

Knowledge & Experience
● A Bachelor’s degree (1st or 2:1) in a traditional science subject, ideally computer science, engineering or information systems from a well-regarded university
● At least 4 years of experience developing commercial Java applications
● Ability to document technical solutions in a variety of formats and to constructively share knowledge with less experienced team members
● Ability to learn and critique new technologies quickly
● Excellent verbal and written communication skills, including presentations to peer groups
● Excellent teamwork skills, capable of supervising a small sub team or deputizing in a management role
● Demonstrably being able to deal with change on a daily basis; must be comfortable both with external factors driving this change as well as internal
● Experience in contributing to and influencing technical strategic planning or responsibility for a technical strategy

**Responsibilities:**
Key Accountabilities:
● Development of new features and functionality for NPD products and services, including the production of unit tests as and where required
● Code reviews for products and services delivered across the wider NPD team
● Code quality for products and services delivered by the team for whom the Senior Software Engineer is responsible
● Ensuring that products and services adhere to agreed performance KPIs and are delivered in line with NPD pipeline requirements
● Ensuring that all products and services have agreed levels of test coverage, in line with NPD requirements, and adhere to agreed architectural and technology (including security) standards
● Provision of detailed release documentation for handover to “BAU” team
● Line management and mentorship of a small team of Software Engineers

Key Responsibilities:
● Active participation in solutions architecture and design, including KPI definition
● Ability to act as the design authority and provide high level estimates of software deliverables for planning purposes
● Supporting the Development Manager and Head of QA to ensure continuous quality improvement in the development teams
● Proactively identify and address areas of material improvement, notably around performance, security and scalability
● Where applicable, ensuring that development team processes are aligned with technical processes prevalent in the wider company
● Ensure that all team members have a clear understanding of the overall system architecture and design components, in the context of meeting product requirements
● Experience of Agile development processes and scrum roles and responsibilities
● As required, technically lead an Agile workstream

**We offer:**
● Direct cooperation with our customer
● State holidays
● 20 days of vacation
● Company legal and accounting support
● Office breakfasts, snacks, beverages, and cheer-up events