JOB OFFERS
Senior Software Engineer (Data Processing)
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).
