Senior Software Engineer (Backend)
Location: Candidates must be located within the EU.
Language: English C1 (The team is entirely English-speaking; candidates must have strong English skills.)
Skills and Qualifications:
- At least 5 years of experience as Software Engineer
- Advanced knowledge of at least one JVM language (Kotlin or Java).
- Advanced knowledge of frontend technologies Angular and NX.
- Proven knowledge in designing Microservice architectures and Event-Driven architectures.
- Strong desire to apply methodological knowledge such as domain-driven design.
- Experience with central logging and monitoring using tools like Grafana and Prometheus on the cloud.
- Experience in modern software development and delivery practices, including Continuous Integration/Delivery/Deployment (using Docker, Kubernetes, and GitLab).
- Strong hands-on experience in both frontend and backend development.
- Ability to support architects and work effectively across multiple teams.
- Passionate about coding over designing, with the ability to implement higher-level concepts across several services.
- Ideally brings some architectural understanding and experience.
- Broad knowledge of a range of software development and delivery life cycles, including agile, iterative, and waterfall.
- Knowledge of relevant applications, languages, environments, systems software, packages, and platforms.
- Good knowledge of secure coding practices.
Key Responsibilities:
- Take technical responsibility across all stages and iterations of software development.
- Plan and drive software construction activities using both predictive (plan-driven) and adaptive (iterative/agile) approaches.
- Measure and monitor applications of project/team standards for software construction, including software security.
- Contribute to the development of organizational policies, standards, and guidelines for software development.
- Execute tasks across the full life cycle in line with agreed software development methodology.
- Write well-designed, testable, efficient code to meet delivery timescales/milestones.
- Produce specifications and determine operational feasibility.
- Integrate software components into a fully functional software system.
- Document and maintain software functionality.
- Prepare time and resource estimates for development activities.
- Tailor and deploy software tools, processes, and metrics.
- Perform unit and component testing, supporting both functional and non-functional unit testing.
- Own issues: drive and address open questions and follow-ups until all are clarified and resolved.
- Support code deployment to enable efficient and accurate implementations.
- Implement standard processes, tools, metrics, measurement, and reporting.
- Identify opportunities for improvement in software development processes.
- Share expertise and provide technical advice and guidance to others.
- Develop specialist knowledge in relevant programming languages, tools, techniques, and apply expertise to deliver effective solutions.