Senior Software Developer/Engineer
QuEST Global
Job Requirements
Contribute to the elaboration of product/system specification & architecture, in collaboration with cross-functional teamsDefine the software requirements specificationsDefine the functional requirements, operational requirements, interfaces requirements and the requirements linked to performance, safety, cybersecurity, Reliability Availability and Maintainability (RAM)… constraintsEnsure that all the requirements can be verified (testability, …)Ensure the traceability of the software requirements through the development cycleDefine the software architectureElaborate the functional and structural breakdown into software componentsAllocate the requirements to the software componentsDefine the interfaces between the software componentsDefine the dynamical behavior of the softwareValidate the feasibility of the solution: model simulation, mock-upTake main technical choices for software developmentSelect development tools, methodology (ex: UML, …), programming languages, coding strategy and coding rules…, strictly following internal process/methods & tools recommendationsContribute to the selection of the execution environment (processor, operating system, middleware, basic software…), together with the product architect, system engineering manager and hardware architectDesigning and implementing DevOps strategies:
This includes creating scalable frameworks (GitLab CI/CD components), integrating tools (compilation, SCA, SATS, etc) and processes, and aligning DevOps practices with business objectives.Building and maintaining CI/CD pipelines:
Automating the build with powershell, python; automatic deployment processes to enable rapid and reliable software releases.
Managing cloud-based infrastructure: Overseeing the deployment and management of cloud infrastructure using tools like Terraform and Kubernetes.Collaborating with other teams: Working with development, operations, and security teams to ensure smooth and secure software delivery.Monitoring and optimizing system performance: Ensuring the system is running efficiently, is scalable, and is secure.Guiding and mentoring junior engineers: Helping to foster a culture of continuous improvement.
Implementing Infrastructure as Code (IaC): Defining and managing infrastructure using code to bring agility and consistency. Ensuring security: Implementing security measures, identity management, and compliance controls.Arbitrate and validate major software design choicesMentor developers and provide technical leadership within the teamPerform software/software integration, together with the software designersPerform hardware/software integration, together with the hardware architectSpecify, design, prepare and perform tests and verifications of his/her deliverablesSustain the softwareOrganize the software Design ReviewsKeep informed of the evolution of technologies through techno watchContribute to standardization by reusing existing solutions or by defining reusable solutions, including COTS*Apply and ensure application of processes and standardsContribute to continuous improvement (RoE: Return of Experience, process…)Organize and lead software development activities so that to ensure QCD commitment, till the end of software development:Coordinate software development activities (software design - including activities performed by subcontractors)Participate to the product CCB (Change Control Board) for software part (i.e. manage commitment and change to software requirements)Alert the reporting structure for any event that could impact software development QCD commitments
Work Experience
Security knowledge: Understanding of security best practices and vulnerabilities.
Contribute to the elaboration of product/system specification & architecture, in collaboration with cross-functional teamsDefine the software requirements specificationsDefine the functional requirements, operational requirements, interfaces requirements and the requirements linked to performance, safety, cybersecurity, Reliability Availability and Maintainability (RAM)… constraintsEnsure that all the requirements can be verified (testability, …)Ensure the traceability of the software requirements through the development cycleDefine the software architectureElaborate the functional and structural breakdown into software componentsAllocate the requirements to the software componentsDefine the interfaces between the software componentsDefine the dynamical behavior of the softwareValidate the feasibility of the solution: model simulation, mock-upTake main technical choices for software developmentSelect development tools, methodology (ex: UML, …), programming languages, coding strategy and coding rules…, strictly following internal process/methods & tools recommendationsContribute to the selection of the execution environment (processor, operating system, middleware, basic software…), together with the product architect, system engineering manager and hardware architectDesigning and implementing DevOps strategies:
This includes creating scalable frameworks (GitLab CI/CD components), integrating tools (compilation, SCA, SATS, etc) and processes, and aligning DevOps practices with business objectives.Building and maintaining CI/CD pipelines:
Automating the build with powershell, python; automatic deployment processes to enable rapid and reliable software releases.
Managing cloud-based infrastructure: Overseeing the deployment and management of cloud infrastructure using tools like Terraform and Kubernetes.Collaborating with other teams: Working with development, operations, and security teams to ensure smooth and secure software delivery.Monitoring and optimizing system performance: Ensuring the system is running efficiently, is scalable, and is secure.Guiding and mentoring junior engineers: Helping to foster a culture of continuous improvement.
Implementing Infrastructure as Code (IaC): Defining and managing infrastructure using code to bring agility and consistency. Ensuring security: Implementing security measures, identity management, and compliance controls.Arbitrate and validate major software design choicesMentor developers and provide technical leadership within the teamPerform software/software integration, together with the software designersPerform hardware/software integration, together with the hardware architectSpecify, design, prepare and perform tests and verifications of his/her deliverablesSustain the softwareOrganize the software Design ReviewsKeep informed of the evolution of technologies through techno watchContribute to standardization by reusing existing solutions or by defining reusable solutions, including COTS*Apply and ensure application of processes and standardsContribute to continuous improvement (RoE: Return of Experience, process…)Organize and lead software development activities so that to ensure QCD commitment, till the end of software development:Coordinate software development activities (software design - including activities performed by subcontractors)Participate to the product CCB (Change Control Board) for software part (i.e. manage commitment and change to software requirements)Alert the reporting structure for any event that could impact software development QCD commitments
Work Experience
Mandatory:
Proven experience as a Software Architect with a strong portfolio of successful projects.Proficiency in Python and C programming languages.Knowledge on communication protocols [Ethernet, TCP/IP, UDP, NTP, etc.]Knowledge of software development methodologies and lifecycle.Understanding of agile development practices.Familiarity with version control systems, such as Git.Knowledge of user interface design principles for desktop applications.Experience in performance optimization and code refactoring
Desirable:
Knowledge of software development methodologies and lifecycle.Experience with railway signaling software or other transportation-related systems.Vital or secure software developmentKnowledge of databases [MySQL, InfluxDB, MongoDB, NoSQL, Prometheus, RethinkDB or Redis], and communication protocols [Profibus or Modbus] would be a plus.
Competencies & Skills
Strong understanding of CI/CD: Proficiency in setting up and managing continuous integration and continuous deployment pipelines using Gitlab; should be knowing configuration of CI/CD components for various activities like code compilation, SCA, unit test, antifactory management, component test, integration test, performance tests.Cloud computing expertise: Knowledge of different cloud services and platforms (e.g., AWS, Azure, Google Cloud).Containerization and orchestration: Experience with containerization technologies (e.g., Docker) and orchestration platforms (e.g., Kubernetes).Automation and orchestration tools: Familiarity with tools like Terraform, Ansible, Puppet, and Chef.Monitoring and logging: Experience with tools for monitoring and logging system performance and activity.Security knowledge: Understanding of security best practices and vulnerabilities.
Problem-solving and communication skills: Ability to identify and resolve technical issues and effectively communicate with different teams
Agile, Inclusive, ResponsibleInternational mindsetStrong problem-solving skills and ability to think critically and independently.Excellent English communication skills, both written and verbal.Ability to work effectively in a collaborative team environment and lead projects autonomously.Detail-oriented with a commitment to delivering high-quality software solutions.Ability to work with remote collaborators
Por favor confirme su dirección de correo electrónico: Send Email