JOB OFFERS

Senior Software Engineer (Data Processing)

ALTEC è coinvolta in diversi programmi scientifici e tecnologici nel settore aerospaziale, dove i sistemi di dati sono rappresentati da componenti software che, insieme alle infrastrutture e ai sistemi di comunicazione, costituiscono il segmento di terra di una missione spaziale. I sistemi di dati sono essenziali in quanto rappresentano un software affidabile ed efficiente, necessario per fornire servizi al segmento di terra ed eseguire le operazioni di missione.

Il gruppo Sistema di Elaborazione Dati e Applicazioni Scientifiche e Tecnologiche ospita gli ingegneri, i fisici e i matematici che supervisionano i sistemi di dati delle missioni spaziali dalla definizione alla fine delle operazioni; sviluppa e mantiene i sistemi di dati finalizzati al supporto della missione e all’esecuzione delle operazioni scientifiche a terra; archivia e gestisce i dati durante le operazioni e oltre. Inoltre, è coinvolto nello sfruttamento dei dati post-missione per sviluppare applicazioni volte a massimizzare il ritorno scientifico e tecnologico del valore dedicato a massimizzare il valore informativo estratto da tali dati.

Funzioni

Farai parte del team che si occupa di tutti gli aspetti ingegneristici dello sviluppo, dell’implementazione e della manutenzione dei sistemi di dati software sotto la responsabilità di ALTEC.

Lavorerai in stretta collaborazione con gli ingegneri dei dati, i data scientist, gli operatori di missione e gli ingegneri dell’infrastruttura durante le fasi del progetto.

Ti occuperai della raccolta e dell’analisi dei requisiti del software, della progettazione, della codifica, dei test, della documentazione e della valutazione della qualità.

Dovrai impegnarti per l’innovazione e l’eccellenza nell’ingegneria del software nel settore aerospaziale.

Tra le principali mansioni, sarai coinvolto in:

  • Analisi, revisione e definizione dei requisiti del software.
  • Analisi, revisione e definizione del design del software.
  • Codifica e implementazione di sistemi software di elaborazione dati.
  • Definire e implementare test unitari e di integrazione del software.
  • Preparare la documentazione relativa al sistema (Specifiche SW, Design SW, Note tecniche, Manuali utente, Procedure e rapporti di test SW, Note di rilascio SW).
  • Eseguire la risoluzione dei problemi del software e la correzione dei bug.
  • Partecipa a riunioni tecniche periodiche

ESPERIENZA E COMPETENZE TECNICHE RICHIESTE

  • Un MSc o una laurea equivalente in ingegneria del software o informatica con un punteggio elevato.
  • N+ anni di esperienza nel ruolo di Software Engineer nella definizione, progettazione, codifica e test di software distribuito.
  • Conoscenza delle tecniche di ingegneria del software per la raccolta e l’analisi dei requisiti, la progettazione, il test del software, la documentazione e la valutazione della qualità.
  • Conoscenza e capacità di utilizzare UML nel processo di ingegneria del software.
  • Conoscenza approfondita della programmazione funzionale e orientata agli oggetti con esperienza di codifica in Java e Python.
  • Conoscenza dell’architettura software tradizionale (client-server) e moderna (microservizi) e capacità di progettare, implementare e integrare software distribuito.
  • Conoscenza e capacità di utilizzare message broker per gestire flussi di dati asincroni e streaming di dati (ad esempio Apache Kafka).
  • Capacità di progettare, sviluppare e validare microservizi utilizzando framework come SpringBoot e NodeJS.
  • Conoscenza dei database relazionali e del linguaggio SQL.
  • Capacità di configurare e utilizzare strumenti di sviluppo software come Gitlab, Maven.
  • Capacità di configurare e utilizzare strumenti di analisi e distribuzione del software come SonarQube e Nexus.
  • Capacità di utilizzare strumenti di integrazione continua come Gitlab CI, Jenkins o Hudson.
  • Capacità di utilizzare il sistema operativo Linux e i linguaggi di scripting.
  • Capacità di definire e implementare il deployment di software basato sulla tecnologia dei container (ad esempio Docker, Podman), inclusi gli aspetti di orchestrazione (ad esempio Kubernetes, docker swarm).
  • Capacità di utilizzare gli strumenti di debug, di eseguire la risoluzione dei problemi e la profilazione di un’applicazione in esecuzione in un ambiente distribuito.

SOFT SKILLS

  • Problem Solving
  • Orientamento al risultato
  • Efficienza operativa
  • Promozione della cooperazione
  • Gestione delle relazioni
  • Miglioramento continuo

ATTIVITÀ AGGIUNTIVE (non obbligatorie, considerate un plus)

L’esperienza nelle metodologie Agile costituirà un ulteriore vantaggio.

Conoscenza di un database NoSQL (es. Elasticsearch, MongoDB).