Esperienza professionale di almeno 5 anni nello sviluppo software;
Solida conoscenza dei principi di progettazione Object-Oriented, dei design pattern e degli standard di modellazione software (es. UML);
Esperienza consolidata nello sviluppo con Java, Python e C++;
Buona familiarità con metodologie Test-Driven Development (TDD) e con framework di unit testing (es. JUnit, CPPUnit, Spock);
Conoscenza approfondita dei protocolli di rete e delle dinamiche di comunicazione in sistemi distribuiti;
Esperienza nell’utilizzo di Git come sistema di versionamento del codice;
Familiarità con strumenti di Continuous Integration e DevOps, in particolare Jenkins e strumenti di configuration management;
Capacità di progettare e sviluppare applicazioni multi-threaded, con attenzione all’ottimizzazione della memoria e delle prestazioni;
Competenze di scripting (es. Python, Bash) per attività di automazione e supporto allo sviluppo;
Esperienza nella progettazione e gestione di database relazionali e NoSQL;
Conoscenza delle principali tecniche di scalabilità e load balancing in architetture distribuite;
Attitudine alla scrittura di codice di qualità, testabile e conforme a metriche di performance e manutenibilità.