job_description.job_card.job_descriptionA minimum of 5 years of professional experience in software developmentStrong knowledge of Object-Oriented Analysis and Design, Software Design PatternsStrong Java and / or C++ software design, implementation and testing skillsExperience or studies related to distributed systems, peer-to-peer networks or computer networking, networking sniffingExperience with Data Distribution Services (DDS)Experience with service-oriented architectures and microservicesExperience with RESTful servicesExperience with multi-threaded, concurrent systemsExperience with KubernetesExperience with Docker containersExperience with Gradle / CMake / Conan for build automationExperience with Ansible for software provisioning, configuration and application deploymentExperience with developing in a Linux-based environmentExperience working on Linux based platformsStrong analytical skills, and experience in software development lifecycleDesign and implement platform software and servicesWork across the entire software development lifecycle including software requirements, high-level and detailed design specifications, software implementation, verification, defect resolution and maintenance activitiesCollaborate with Architects to design solutions and implement them into productEvaluate basic technology / software design choices and articulate tradeoffsParticipate in pair programming and code reviewsDevelop automated unit, integration and system level tests to verify the design and implementationParticipate in Agile project planning activities with the team to define, estimate and plan tasksTake ownership of tasks and deliver without supervision while using discretion to seek help when needed Communication; Ability to work in teams