Role Overview
The Senior Python Back-End Developer (Profile 8.B Senior) supports the CMRE Data Management Programme, focusing on the design, development, and maintenance of scalable backend systems and APIs.
The role is centered on building core data capabilities, including:
Data Catalogue
Data Domain Model
Data Sharing Workflows
Working within an Agile environment under the guidance of a Software Architect, the developer translates architectural designs into secure, high-performance, production-grade solutions. The role requires strong ownership across the full software lifecycle—from design through deployment—along with active participation in technical decision-making and team collaboration.
Key Duties and Responsibilities
Design, develop, and maintain backend services and APIs using Python
Translate architectural designs into scalable, maintainable code
Build and support data-driven systems (catalogues, models, workflows)
Ensure performance, security, and reliability of backend applications
Take full ownership of features from design through deployment
Develop and execute testing strategies (unit, integration, TDD)
Participate in code reviews and enforce coding standards
Mentor junior developers and support team knowledge sharing
Contribute to architectural discussions and technical design decisions
Identify and communicate risks, blockers, and dependencies proactively
Collaborate with cross-functional teams (DevOps, QA, frontend, architects)
Maintain CI/CD pipelines and support automated deployment processes
Ensure proper documentation of code, APIs, and architectural decisions
Mandatory Requirements
Experience
Minimum 7 years of professional experience in backend software development
Technical Skills
Programming & Frameworks
Advanced Python (async programming, type hints, packaging)
Production experience with FastAPI and async best practices
Strong OOP and design pattern knowledge
API Development
REST API design (OpenAPI, versioning, pagination, error handling)
JSON and schema validation (Pydantic, Marshmallow)
Event-driven architectures and message brokers (e.g. Kafka, RabbitMQ)
Databases
Strong SQL and relational database experience (PostgreSQL, SQL Server)
Experience with NoSQL (e.g. MongoDB, Redis, Elasticsearch)
ORM frameworks (SQLAlchemy, Django ORM)
Infrastructure & DevOps
Docker (multi-stage builds, optimisation)
Kubernetes basics (deployment, debugging)
Linux administration and scripting
Software Engineering Practices
Testing (pytest, TDD, integration testing)
CI/CD pipelines (GitHub Actions, GitLab CI, Azure DevOps)
Advanced Git usage (branching, merging, conflict resolution)
Code quality tools (linting, static analysis, type checking)
Security
Secure coding practices (OWASP Top 10)
Authentication/authorisation (OAuth2, JWT, OpenID Connect)
API security (rate limiting, CORS, TLS)
Architecture & Collaboration
Understanding of microservices and distributed systems
Ability to read and contribute to architecture diagrams (UML, C4)
Agile methodology experience (Scrum ceremonies, backlog refinement)
Strong communication skills in English
Desirable Requirements
Data Management & Standards
Experience with metadata standards (e.g. Dublin Core, ISO 19115, STANAG 2586)
Knowledge of Semantic Web technologies (RDF, DCAT, Apache Jena)
Cloud & Platforms
Microsoft Azure (Entra ID, DevOps, Key Vault)
Cloud-native development and services
Observability
Logging, monitoring, and metrics (Prometheus, Grafana)
Distributed tracing (OpenTelemetry)
AI / Advanced Technologies
Experience with LLM frameworks (LangChain, LlamaIndex)
Knowledge of Retrieval-Augmented Generation (RAG) pipelines
Familiarity with AI-assisted development tools
