Job Title - Software Engineer
Team - Sim Engineering
Department - Modelling & Data Engineering
Contract - Permanent, Full-time
Location - Based in the London Office, Hybrid Role (1-2 days in a week)
Reporting to - Lead Engineer
Job description
Purpose of role:
This position as a Software Engineer on the Simulation Engineering team provides a rare opportunity to combine maths, sports, and computer science to create a simulation of a sports game. The role touches on a wide array of subjects from probabilities, matrix manipulation, and statistics to in depth sports game rules, data structuring, advanced algorithms, high performance computation, latency management, threading, cache optimisation, and more. The position fills an essential role in the business as the foundation for our product. The main goal of the role is to produce fast, accurate, and efficient sports simulations for use downstream in our cloud-based microservices architecture. This is accomplished by high level software architecture, well designed systems and solutions, and implementing SOLID code.
Key responsibilities:
● Execute full agile software development lifecycle.
● Write well-designed, testable code.
● Produce unit, integration, and end-to-end tests.
● Produce specifications and work estimations.
● Engineer solutions to medium-sized problems.
● Troubleshoot and debug existing systems.
● Lead projects with up to two other junior engineers.
● Help teach and mentor new team members.
● Comply with project plans and help meet deadlines.
● Perform code reviews for junior engineers.
● Protects operations by keeping information confidential.
● Investigate new technologies to aid in development.
● Continually update technical knowledge and skills.
● Work closely with other Software Engineering, Data Science, Data Engineering and Quality Assurance teams.
● Clean technical debt.
● Suggest improvements and optimisations to existing products.
Person Specification
Qualification - A degree (PhD, MSc, BSc) in a STEM subject, preferably Computer Science, or similar provable programming skills.
Experience and knowledge - Demonstrate over two years’ experience of Programming skills in the areas of Threading, algorithms, data structures, and high-performance computing, by using Design Patterns and SOLID Principles.
Skills and competencies Essential:
- Experience (2+ year) working on the .Net Framework as a Software Engineer, particularly .NET 5+.
- Mathematics skills such as dealing with matrices, probabilities, and statistics.
- Experience (1+ year) using Kafka or equivalent distributed event store and stream-processing platform.
- Experience (1+ year) working with Redis or equivalent inmemory storage.
- Experience (1+ year) working with AWS S3, Athena, ECS, Cloud Formation, Lambdas & Cloudwatch.
- Experience (2+ year) with concurrent development source control (GIT).
- Familiarity with SQL and experience (1+ year) working with relational databases.
- Systems integration experience (1+ year) with networking, data migrations, API integration and design.
- Enthusiasm for clean systems, including documentation, logging, and reproducibility.
- Excellent presentation, documentation, time management, communication skills with the ability to work collaboratively and autonomously.
- Strong problem-solving skills with a pragmatic and analytical outlook.
Desirable:
- A keen interest in American sports. (NFL, NBA, MLB, NHL, NCAAB, NCAAF, Tennis or Soccer)
- Experience working with Data Scientists and Data Engineers.
Working hours: Monday to Friday (35 hours per week). Potential for On-Call status during evenings and weekends.