The role is part of the Technology and Product team, reporting to the Head of Backend Software Engineering. The software engineers work as part of a team on a number of eLearning applications in the portfolio, including the learning management platform and data insights platform.
The software team are at the start of an exciting journey, adopting Agile scrum to deliver applications using AWS’s cloud. There will be a mixture of maintaining and enhancing our existing products as well as the opportunity to work on our brand new products.
Python is our primary backend language, with systems running Django and FastAPI, as well as serverless code on AWS Lambda.
The exact stack varies from product to product, but will usually involve Postgres, Redis, Docker, Kubernetes, etc. We are starting to increase the use of CI/CD pipelines, along with the necessary test automation.
Technologies we work with:
- Python, using frameworks including Django and FastAPI
- Cloud computing providers (AWS/GCP) and how to leverage their functionality and features
- Code repos (git, GitHub)
- Docker, Kubernetes
- Linux (Debian/Alpine preferable)
- Build pipelines (GitHub Actions)
We’re looking for people who have experience with:
- At least 4 years of proven experience as a Python developer
- Django, Flask or similar frameworks
- Continuous integration and deployment tools and techniques
- Designing, planning and leading development on sets of related stories
- Writing clean, testable, maintainable code
- Designing and development of RESTFul APIs
- Performance tuning and optimisation
- Designing and using relational databases to store and query complex data
- Handling large datasets and designing for scalability
- Finding ways to improve system robustness, resilience and stability
We’re looking for people who can demonstrate:
- Logical thinking and problem solving
- Aptitude and keenness to learn new tech and processes
- Good communication skills (written and verbal) to work as part of a close-knit team
- Willingness to coach and mentor more junior colleagues
- Ability to constructively peer review other people’s code
- Understanding of the importance of security and how to engineer secure systems
- Ability to understand whole systems and how their various parts fit together
- User-centric design
Minimum of Bachelor's degree in computer science, software engineering, or related field.