Software Development @Bitrock
Intervista a Marco Stefani (Responsabile Software Engineering)
Abbiamo incontrato Marco Stefani, Head of Software Engineering di Bitrock, per capire il suo punto di vista e la sua visione dello sviluppo software oggi. Un’ottima occasione per esplorare i punti chiave dell’esperienza tecnologica di Bitrock e per comprendere meglio le caratteristiche che uno sviluppatore deve avere per entrare a far parte di questo team.
Marco Stefani(Head of Engineering @Bitrock) intervistato da Luca Lanza(Corporate Strategist @Databiz Group).
1) COME SI È EVOLUTO NEL TEMPO L’APPROCCIO ALLO SVILUPPO DEL SOFTWARE E COSA SIGNIFICA OGGI ESSERE UNO SVILUPPATORE IN QUESTA AZIENDA?
Quando ho iniziato a lavorare, nel tipico ambiente aziendale lo sviluppatore era tenuto a codificare tutto il giorno, testare un po’ il suo lavoro e poi passarlo a qualcun altro che lo avrebbe confezionato e distribuito. I test venivano eseguiti da un’altra unità e se si riscontrava un bug veniva riportato allo sviluppatore. Gli sviluppatori non si assumevano alcuna responsabilità dopo aver ritenuto il software pronto (“funziona sulla mia macchina”). I release in produzione erano rari e dolorosi, perché nessuno era davvero responsabile.
Negli ultimi anni abbiamo assistito a una trasformazione radicale del modo di lavorare in questo settore, grazie alle metodologie e alle pratiche Agile. XP, Scrum e DevOps hanno spostato l’attenzione degli sviluppatori sulla qualità, l’impegno e il controllo dell’intero ciclo di vita del software: gli sviluppatori non si limitano a scrivere il codice sorgente, ma sono i proprietari del codice.
In Bitrock gli sviluppatori vogliono essere proprietari del codice.
2) QUALI SONO I PUNTI DI FORZA DELLA VOSTRA UNITÀ OGGI? E QUALI SONO I VALORI DIFFERENZIANTI?
Gli sviluppatori di Bitrock vanno da quelli con maggiore esperienza a quelli appena laureati. Indipendentemente dall’anzianità, tutti vogliono migliorare le proprie capacità in questo mestiere. Lavoriamo sia con aziende di vecchio stampo sia con aziende innovative, e siamo sempre in grado di fornire contributi utili, non solo in termini di linee di codice, ma anche di leadership tecnica.
Pur essendo in grado di gestire essenzialmente qualsiasi tipo di esigenza software, come azienda prediligiamo la programmazione funzionale e le architetture a microservizi basate su eventi. Crediamo che nei sistemi complessi questi due paradigmi siano fondamentali per creare il software più flessibile e gestibile: qualcosa che possa evolvere il più facilmente possibile con le nuove e spesso impreviste esigenze del futuro.
3) QUALI SFIDE SIETE PRONTI AD AFFRONTARE CON LA VOSTRA UNITÀ E CON QUALE APPROCCIO?
Oggi le aspettative degli utenti finali sono che le applicazioni software siano sempre disponibili e veloci; le aspettative dei nostri clienti sono che lo stesso sistema sia il più economico possibile, in termini di sviluppo e manutenibilità, ma anche di costi operativi. Ciò significa che dobbiamo costruire sistemi reattivi, resilienti ed elastici. Se si aggiungono i messaggi asincroni come mezzo di comunicazione tra i componenti, si ottiene un “sistema reattivo” come definito dal Reactive Manifesto.
(Scoprite il Manifesto reattivo su: https://www.reactivemanifesto.org/)
Lo sviluppo di sistemi software moderni richiede un insieme di competenze non solo tecniche, ma anche di comprensione del business e dell’organizzazione sottostante: se si vogliono modellare correttamente i messaggi (gli eventi, in realtà), o si vuole suddividere l’applicazione in componenti significativi e trattabili, è necessario comprendere la logica e i processi aziendali; inoltre, la definizione dei componenti avrà un impatto su come sono strutturati il lavoro e i team. La progettazione di un’architettura software richiede strumenti in grado di collegare tutti questi diversi livelli. Le best practice, i modelli di progettazione e di architettura devono essere presenti nella cassetta degli attrezzi dello sviluppatore.
4) QUALI COMPETENZE DEVE AVERE UN NUOVO MEMBRO DEL VOSTRO TEAM?
Lo sviluppo del software è una disciplina molto complessa e impegnativa. Le competenze tecniche devono essere migliorate e cambiano continuamente; tenersi al passo con i progressi tecnologici è un lavoro a sé stante, e spesso non è sufficiente. In Bitrock crediamo nell’apprendimento continuo, quindi per i nuovi membri è importante capire che ciò che sanno durante il colloquio è solo il primo passo di un processo senza fine. Lavorare in un’azienda di consulenza aggiunge ulteriori sfide, perché richiede un costante adattamento a nuovi ambienti e modi di lavorare dettati dai clienti.
Il vantaggio è che sia le competenze tecniche che quelle trasversali possono essere migliorate in un tempo molto più breve rispetto a una “comoda” azienda di prodotti.