Principal Software Engineer
SG Digital (part of Scientific Games Corp. NASDAQ:SGMS) is a world leader in gaming entertainment offering the industry's broadest and most integrated portfolio of game content, advanced systems, cutting-edge platforms and professional services. The company is #1 in technology-based gaming systems, digital real-money gaming and sports betting platforms, casino table games and utility products and lottery instant games, and a leading provider of games, systems and services for casino, lottery and social gaming. Committed to responsible gaming, Scientific Games delivers what customers and players value most: trusted security, engaging entertainment content, operating efficiencies and innovative technology
At SG Digital we have 1,250+ employees (including 600+ engineers and developers) and over 200 customers. We currently provide our technology to customers across the globe. Our head office is in Las Vegas with principal offices in London, Stockholm, Athens, Sydney, Montreal and Chicago, as well as 27 other offices world-wide.
Our software platform is built on a fully-flexible system that is deployable within the international gaming industry. It supports all parts of our customers’ business (interactive, mobile, and social networks). Our content platform has approximately 750 proprietary and over 900 third-party supplied lottery, bingo, and casino games developed to address the multi-channel content and distribution strategies of our customers. Our software platform supports online interactive game play and enables the deployment of software applications for casino, lottery, bingo, poker, mini-games, and social games over web-based, tablet/mobile, and social media applications.
Our solutions are designed to provide a complete account suite with full back-office capabilities, including tournaments, bonuses, affiliates, campaigns, data warehouses, and data mining across multiple products, all while providing players with community and social media-based entertainment content to maximize their playing experience.
Want to be part of our story?
The Principal Software Engineer is a key team member of the Product Development team. The Principal Software Engineer 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 Principal Software Engineer will be expected to both lead and mentor less experienced developers, actively contributing to their day-to-day activities and training needs.
The Principal Software Engineer will have a central role to play to ensure that the Software Engineering teams are aligned with overall Group and Product Engineering architectural & technology (A&T), QA and Operational Excellence strategies, and also to act as a key influencer for such. Along with the Development Manager and Senior Software Engineers, the Principal Software Engineer will ensure that new technologies and architectural principles are utilised appropriately and with rigour, whilst delivering the stability and performance that the SG Digital platforms have become synonymous with over time.
The role will also be required to help build a development capability with new and existing development teams, ensuring that best of breed engineering practices are implemented, particularly around CI / CD and also monitoring and support requirements.
The role will be across the OpenPlayer suite of products including PAM and Promotions, 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.
- Ability to act as the design authority and provide high-level estimates of software deliverables for planning purposes
- Supporting the Development Manager and Heads of Operational Excellence and QA to ensure continuous quality improvement in the development teams
- Supporting the Architecture team in the definition of the overall A&T strategy for the Product Engineering deliverables, and also adherence to Group A&T standards across NPD deliverables
- Proactively identify and address areas of material improvement, notably around performance, security and scalability
- Supporting the Product Engineering leadership team in the planning, implementation and evolution of technical processes and feedback to the wider company
- Where required, provision of 3rd line support and supporting production deployments
- Supporting recruitment of technical staff onto the New Platform team
- Identification and support of the training needs of the broader NPD team
- Provision of technical input into Project Management, notably to support in the management of the Backlog, including Problems raised via Operations.
Knowledge and Experience
- A Bachelor's degree in a traditional science subject, ideally computer science, engineering or information systems from a well regarded university
- At least 7+ years of experience developing commercial enterprise applications.
- Ideally 4+ years of demonstrable experience in designing distributed, high-volume, highly available, complex transactional systems
- Proven accountability for delivering technical components of both major IT or commercial projects and ongoing Product Engineering programmes
- 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
- 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
- Ability to work as part of a senior management team leading Product Engineering
- Experience in contributing to and influencing technical strategic planning or responsibility for a technical strategy strategy
- Good managerial and leadership skills, able to motivate teams as well as driving change and handling difficult and complex project development activities both internally and externally
- Should be opinionated, especially about technology
A minimum of 6 years’ hands-on experience in designing and developing applications in at least one major language (e.g. Java, J2EE, C, C++), using UNIX / Linux.
A minimum of 4 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 using at least one popular web framework (React, JSF, Drupal, GWT, Spring MVC etc.)
Demonstrable experience with TDD and / or BDD
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
Some experience of developing and deploying distributed eCommerce (or similar) platforms in the cloud, using at least one major cloud provider (e.g. AWS or Google Cloud)
Hands-on experience in TCL development.
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
Working in a highly co-operative team in an international environment, there will be significant training and clear career development opportunities for the right individual.