Description
About the Role
We are looking for a skilled Software Engineer to join a growing engineering team developing advanced software components and services for complex, distributed technology platforms.
This is a hands-on engineering role for someone who enjoys solving technically challenging problems, building high-performance software, and contributing to the development of new products and capabilities in a fast-moving environment.
You will work as part of a small, highly collaborative engineering team where you will have significant ownership over the software you develop.
Your contributions will directly influence system architecture, technical design decisions, platform capabilities, and the long-term evolution of the product.
We welcome candidates with a strong background in systems software, backend engineering, distributed systems, networking, or other technically demanding software environments.
Experience with telecommunications or network-related software is beneficial but not essential.
Key Responsibilities
Design, develop, test, and deploy software components and services across a complex technology platform.Translate architectural designs, interface specifications, functional requirements, and non-functional requirements into clean, maintainable, production-ready software.Develop modular and scalable software in accordance with established engineering and coding standards.Produce clear technical documentation and meaningful code comments to support maintainability and knowledge sharing.Design, implement, and maintain unit tests, integration tests, regression test suites, and performance benchmarks for developed components.Troubleshoot and resolve technical issues across the software stack, including communication issues, interface incompatibilities, performance bottlenecks, unexpected system behaviour, and deployment failures.Participate actively in software architecture discussions, technical design sessions, and code reviews.Provide constructive technical feedback and incorporate feedback from other engineers to continuously improve software quality.Support system-level integration, validation, and acceptance testing to ensure delivered software meets defined functional, quality, reliability, and performance requirements.Contribute to Agile software delivery activities, including sprint planning, backlog refinement, technical estimation, and delivery against agreed milestones.Use, maintain, and continuously improve CI/CD pipelines, automated testing frameworks, and containerized development and deployment environments.Maintain technical documentation including component designs, API and interface definitions, test results, deployment procedures, and operational runbooks.Collaborate with software engineers, architects, infrastructure specialists, and other cross-functional stakeholders to clarify requirements, validate technical assumptions, and ensure solutions meet operational and business needs.Required Qualifications
Education
Bachelor's or Master's degree in Computer Science, Software Engineering, Telecommunications Engineering, Computer Engineering, or a related technical discipline.Equivalent professional experience will also be considered.Professional Experience
Minimum of 3 years of professional software development experience.Experience developing systems software, backend services, distributed applications, or network-related software is highly relevant.Exposure to telecommunications, connectivity, networking, protocol-driven applications, or similar technology domains is considered an advantage.Programming Languages
Strong proficiency in at least one systems or backend programming language, particularly C, C++, or Go.Experience with, or a strong interest in developing expertise in, Rust is considered a plus.Proficiency in Python, Bash, or similar languages for scripting, tooling, automation, and test development.Software Engineering Fundamentals
Solid understanding of data structures, algorithms, concurrency, memory management, and software architecture.Experience designing software for high-performance, distributed, low-latency, or resource-sensitive applications.Ability to analyse complex technical problems and develop practical, reliable, and maintainable solutions.Networking and Distributed Systems
Good understanding of networking concepts and communication between software components.Familiarity with TCP/IP, socket programming, protocol design, inter-process communication, and related concepts relevant to distributed or networked applications.Experience working with APIs, service-to-service communication, or event-driven architectures is beneficial.Development Tools and Environments
Strong experience using Git within a collaborative software engineering environment.Comfortable working with branching strategies, pull or merge requests, code reviews, and CI/CD workflows.Comfortable developing, testing, troubleshooting, and debugging in Linux or Unix-based environments.Experience working with command-line development and debugging tools.Software Testing
Experience writing and maintaining unit tests and integration tests.Experience contributing to automated testing frameworks and improving software quality through automated validation.Understanding of regression testing and performance validation practices.Language Skills
English proficiency at B2 level or above, with the ability to collaborate effectively with engineers, architects, and other stakeholders within an international and distributed team.Preferred Qualifications
Experience developing telecommunications, networking, connectivity, protocol-based, or distributed software systems.Familiarity with network architectures, communication protocols, or complex software interfaces.Experience developing software for high-throughput, low-latency, highly available, or performance-critical systems.Exposure to containerized and cloud-native software development environments.Experience with Kubernetes, Docker, Helm, or similar container and orchestration technologies.Experience working with gRPC, RESTful APIs, Kafka, or other messaging and communication technologies.Familiarity with observability and monitoring platforms such as Prometheus and Grafana.Experience working with cross-compilation environments, GCC, Clang, or similar build toolchains.Experience within telecommunications, infrastructure, connectivity, aerospace, satellite, or other complex technology sectors is considered a plus.Technology Environment
The engineering environment may include:
Programming Languages: C, C++, Go, Rust, Python, and BashContainerization and Orchestration: Docker, Kubernetes, HelmBuild and Compilation: GCC, Clang, cross-compilation toolchains, and related development toolsCI/CD and Deployment Automation: GitHub Actions, GitLab CI, ArgoCD, automated testing pipelines, and similar technologiesVersion Control and Collaboration: Git, GitHub, GitLab, and comparable platformsAPIs and Communication: gRPC, RESTful APIs, Kafka, and other distributed communication technologiesMonitoring and Observability: Prometheus, Grafana, logging, and diagnostic toolsProject and Documentation Tools: Jira, Confluence, Markdown, Mermaid, PlantUML, or similar solutionsPersonal Skills
We are looking for someone who combines strong software engineering fundamentals with curiosity, initiative, and a high degree of ownership.
The successful candidate should demonstrate:
Strong analytical and problem-solving skills, with the ability to break down complex or partially defined problems and deliver practical solutions iteratively.A strong sense of ownership and personal responsibility for the quality, correctness, maintainability, and reliability of their work.A collaborative and communicative approach, with active participation in technical discussions, architecture reviews, code reviews, and cross-functional conversations.Curiosity and a self-directed approach to learning new technologies, technical domains, architectures, and software concepts.The ability to work effectively in evolving technical environments where requirements and specifications may develop over time.Comfort making engineering decisions and progressing work without relying on an extensive legacy codebase or predefined implementation.Strong attention to detail in code quality, testing, documentation, and software design.Working Environment
Ability to work effectively from a standard office environment or remote home-office setup.Comfortable using computers and technical development tools for extended periods.Willingness to occasionally participate in after-hours incident response or technical support activities when required.