Dietro le quinte

Product Development – un gruppo variopinto che odia la burocrazia e impara dagli errori

Stefan Müller
31.5.2022
Traduzione: Leandra Amato

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.

Sbagliando si impara

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:

  • Appoggiamo i cambiamenti di team temporanei – i cosiddetti DevXChanges – che ci permettono di fare esperienza in un contesto diverso e di ampliare i nostri orizzonti.
  • Ogni due settimane, i team di sviluppo presentano i loro successi e le nuove scoperte all'intero dipartimento durante il meeting DevInfo.
  • Dopo gli «incident» più gravi, effettuiamo un «postmortem», con lo scopo di imparare dai nostri errori e ridurre il rischio di commetterli di nuovo.
  • Per lo sviluppo personale, offriamo diversi corsi interni per sviluppare competenze professionali, sociali e di leadership. Alcuni temi attuali sono ad esempio il Domain Driven Design, i metodi agili e la gestione dei conflitti.

Pianificazione e processo di sviluppo agile

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.

Dall'obiettivo strategico dell'azienda alla story nel product backlog.
Dall'obiettivo strategico dell'azienda alla story nel product backlog.

I team di sviluppo specializzati creano valore aggiunto

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.

Team e aree.
Team e aree.

Feedback rapido grazie al «continuous delivery»

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.

Il ciclo DevOps mostra tutte le fasi necessarie per i release frequenti.
Il ciclo DevOps mostra tutte le fasi necessarie per i release frequenti.

L'architettura software modulare consente di definire chiaramente le responsabilità

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.

Componenti software e la loro interazione.
Componenti software e la loro interazione.

Standard intelligenti

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

Più informazioni sul gruppo variopinto:

  • Dietro le quinte

    Team Isotopes: i demoni della velocità dell'ingegneria

    di Dominik Bärlocher

  • Dietro le quinte

    Team KickAss: lavorare dove fa male

    di Dominik Bärlocher

  • Dietro le quinte

    Team Spectre: quelli che agiscono nelle tenebre

    di Dominik Bärlocher

  • Dietro le quinte

    Nessuna intelligenza artificiale, senza intelligenza umana

    di Norina Brun

A 65 persone piace questo articolo


User Avatar
User Avatar

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.


Tecnologia
Segui gli argomenti e ricevi gli aggiornamenti settimanali relativi ai tuoi interessi.

Potrebbero interessarti anche questi articoli

  • Dietro le quinte

    Lego e iPhone: le ricerche più frequenti della clientela

    di Manuel Wenk

  • Dietro le quinte

    Come un software engineer si innamora della logistica

    di Tiago Santos Baranita

  • Dietro le quinte

    I nostri team leader dell’Engineering sviluppano anche codici

    di Norina Brun

40 commenti

Avatar
later