
Dietro le quinte
Team Isotopes: i demoni della velocità dell'ingegneria
di Dominik Bärlocher
Noi di Digitec Galaxus sviluppiamo internamente sia i nostri negozi online che il nostro sistema ERP. Attualmente, più di 260 ingegneri software, product owner, analisti di dati e UX designer lavorano in 35 team di sviluppo per ottimizzare continuamente i nostri processi, con l'obiettivo di generare valore aggiunto per i nostri clienti nel modo più efficace ed efficiente possibile. In questo articolo scopri quali aspetti sono particolarmente importanti per noi.
La nostra cultura è plasmata dai nostri valori aziendali: siamo cooperativi, innovativi, piratici, responsabili e ambiziosi. Questi costituiscono la base della nostra collaborazione.
Attribuiamo particolare importanza al fatto che tutti in azienda, a prescindere dalla gerarchia, si confrontino con gli altri in modo aperto e siano positivi nei confronti di altre opinioni e punti di vista. Questo ci fa sentire liberi di discutere anche le idee più folli e di esprimere apertamente i nostri dubbi. Questa apertura è un prerequisito importantissimo per sviluppare soluzioni intelligenti e innovative e attuarle con determinazione.
Per noi è importante anche affrontare i nostri compiti e le nostre sfide in modo proattivo e sotto la nostra responsabilità e prendere decisioni autonomamente, per quanto possibile. Per raggiungere questo obiettivo, è essenziale evitare ostacoli burocratici inutili e mantenere i processi decisionali quanto più snelli.
Abbiamo anche una forte cultura dell'apprendimento e dell'errore: quanto più riusciamo, come organizzazione, a non colpevolizzare chi commette degli errori, ma a imparare il più possibile dall’accaduto, tanto maggiore sarà il nostro apprendimento. E questo ci aiuta a sviluppare software in modo efficace ed efficiente. Le seguenti pratiche si sono pertanto rivelate preziose:
La direzione definisce l'orientamento strategico dell'azienda negli obiettivi annuali. Su questa base, i nostri team di sviluppo formulano le cosiddette iniziative in stretta collaborazione con tutti i settori aziendali. Un'iniziativa descrive un progetto di cambiamento con obiettivi chiari e risultati verificabili, contribuendo direttamente agli obiettivi strategici. Un'iniziativa deve essere attuabile in un massimo di quattro mesi. Questo ci permette di imparare rapidamente e di reagire con prontezza ai cambiamenti di priorità.
Non appena viene messa in atto un'iniziativa, quest’ultima viene suddivisa in pacchetti di lavoro più piccoli – le cosiddette «epic» e «story». Le story vengono poi classificate per priorità e implementate nei product backlog dei team di sviluppo. Lo sviluppo avviene nell'ambito del framework Scrum, parzialmente integrato da pratiche Kanban.
I team di sviluppo sono specializzati in una particolare area aziendale e sono responsabili di migliorare l'esperienza cliente sviluppando sia i processi che la soluzione tecnica in quel determinato settore. Per promuovere un'organizzazione scalabile e un ambiente di lavoro motivante, per noi è importante che il maggior numero possibile di decisioni possa essere preso direttamente all'interno di un team. Grazie alla nostra specializzazione, siamo in grado di ampliare continuamente le conoscenze dettagliate necessarie, sia a livello di prodotto che di tecnica, all'interno del team. Un team è solitamente composto da un totale di 6-9 persone. Oltre a sviluppatrici e sviluppatori, ogni team conta un product owner, responsabile della definizione delle priorità del «product backlog». E poi c'è il o la team leader, responsabile della gestione del personale, ma che sviluppa anche attivamente la soluzione tecnica. Il team è responsabile dell'architettura del software: per ogni iniziativa, un membro del team assume il ruolo di solution architect, modellando così l'architettura delle soluzioni implementate.
Diversi team messi insieme formano un'aera. La tabella seguente fornisce una panoramica approssimativa delle responsabilità delle aree, mentre l'immagine mostra i singoli team per area.
Per noi è importante poter integrare rapidamente e con frequenza le modifiche implementate nell'ambiente produttivo (continuous delivery). Questo avviene di solito dopo ogni story implementata – quindi in genere diverse volte al giorno. In questo modo evitiamo i release cosiddetti Big Bang e otteniamo un feedback rapido se qualcosa non funziona come desiderato. Inoltre, la clientela può beneficiare immediatamente dei miglioramenti. I test automatizzati nell'ambito del processo di release aumentano la probabilità di scoprire e risolvere tempestivamente eventuali bug. E se qualcosa dovesse sfuggirci, siamo sempre lieti di ricevere un feedback da parte della Community.
Ci affidiamo a un'architettura modulare con interfacce tra i singoli componenti software quanto più snelli e stabili. Ogni componente corrisponde a una parte della nostra attività ed è di competenza di un team designato. In questo modo si garantisce che tutti i team si concentrino sulla propria area di responsabilità e non si intralcino a vicenda nell'implementazione di nuove funzionalità.
Un componente software vive in un modulo (microservice) o nel monolite modulare. Attualmente ci sono oltre 50 moduli (uno o due per team). Il nostro stack tecnologico si basa principalmente su .NET Core, MS SQL Server e MongoDB. Nel front-end del negozio online utilizziamo React con Next.js e GraphQL. Sia i moduli che il monolite sono gestiti in un cluster Kubernetes. Utilizziamo la messaggistica (Kafka e Azure Service Bus) per la comunicazione asincrona. Puoi trovare il nostro radar tecnologico completo qui.
I team dell'area «Platform & SysOps» si impegnano al massimo affinché gli altri team di sviluppo possano lavorare nel modo più efficiente possibile, offrendo soluzioni standardizzate per questioni trasversali e infrastrutturali. Si tratta, ad esempio, di un modello di modulo, di un cluster Kubernetes, di una soluzione di observability centrale (logging, monitoring, alerting) o di Database-as-a-Service per le nostre tecnologie di persistenza standard (SQL Server e MongoDb). L'obiettivo è che questi servizi di piattaforma siano facili da capire e da usare per i team di sviluppo, lasciando il massimo spazio possibile per lo sviluppo di funzionalità che abbiano un impatto sul cliente.
Hai domande o vuoi migliorare i nostri negozi e processi? Lascia un commento in fondo alla pagina.
Siamo sempre alla ricerca di rinforzi. Dai un'occhiata alle nostre offerte di lavoro
La mia passione è la tecnologia e le persone che ci sono dietro. Mi piace trovare soluzioni semplici a problemi complessi insieme a persone in gamba. Nel tempo libero mi piace stare con la mia famiglia e fare sport.