JOB OFFERS
Junior 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 elaborazione 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 progettazione di componenti software, della codifica, dei test e della documentazione.
Tra le principali mansioni, sarai coinvolto in:
- Comprensione dei requisiti del software.
- Analisi, revisione e definizione del design del software.
- Definire e implementare test unitari e di integrazione del software.
- Preparare la documentazione relativa al sistema (progetto SW, note tecniche, manuali utente, procedure di test SW e rapporti di test SW, note di rilascio SW).
- Eseguire la risoluzione dei problemi del software e la correzione dei bug.
- Partecipa alle riunioni tecniche periodiche.
ESPERIENZA E COMPETENZE TECNICHE RICHIESTE
- Un MSc o una laurea equivalente in ingegneria del software o informatica con un punteggio elevato.
- 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 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 le code di messaggi per gestire i flussi di dati e lo scambio di dati asincroni.
- Capacità di sviluppare microservizi utilizzando framework come SpringBoot e NodeJS.
- Conoscenza delle relazioni tra database e del linguaggio SQL.
- Conoscenza dei seguenti strumenti di sviluppo: Gitlab, Maven e Nexus.
- Conoscenza di strumenti di integrazione continua come Gitlab CI, Jenkins o Hudson.
- Conoscenza del sistema operativo Linux e dei linguaggi di scripting.
- 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)
- Conoscenza della tecnologia dei container (ad esempio Docker, Podman) e degli aspetti di orchestrazione (ad esempio Kubernetes, docker swarm).
- Conoscenza di un database NoSQL (es. Elasticsearch, MongoDB).
- Conoscenza dei formati di interscambio dati XML e JSON per la descrizione dei metadati.
