Dietro le quinte

Come un software engineer si innamora della logistica

Da quasi 5 anni sono responsabile dello sviluppo software della logistica presso Digitec Galaxus. Non avrei mai immaginato di appassionarmi così tanto alla logistica. Eppure è successo. Cerco di trovare una risposta.

Quando ho iniziato a lavorare da Digitec Galaxus subito dopo gli studi e ho ricevuto un'offerta per un posto da Junior Software Engineer in un team di logistica in fase di costituzione, all'inizio la mia inesperienza non sapeva bene cosa aspettarsi. Il mondo della logistica mi era ancora sconosciuto. Non c'erano quasi punti di contatto durante i miei studi. All'inizio non pensavo che potesse essere così vario come nel team di un negozio online. E di certo non avrei mai immaginato di pubblicare un articolo su questo argomento.

Io e la logistica: come ci siamo conosciuti

La situazione è cambiata rapidamente. Già nella prima settimana ho potuto sperimentare il magazzino di Wohlen. Un process engineer ha guidato me e un piccolo gruppo di nuovi dipendenti attraverso l'intero magazzino. Ci è stato permesso di dare una mano a tutti gli anelli della catena e abbiamo così potuto conoscere le persone e i processi coinvolti. I team leader che ci hanno introdotto ai processi hanno scoperto molto rapidamente che ero un nuovo software engineer. Naturalmente, non potevano esimersi dal darmi suggerimenti e idee di miglioramento. La visita ha lasciato un'impressione indelebile che ho elaborato ancora a tarda sera. Mi ha entusiasmato vedere come persone e tecnologia lavorino insieme in modo così coordinato.

Le idee migliori mi vengono sempre sul posto, al campo.
Le idee migliori mi vengono sempre sul posto, al campo.

Con così tante impressioni, mi sono chiesto all'inizio: di cosa siamo responsabili? Per rispondere a questa domanda, all'inizio abbiamo scelto la seguente missione di team, chiamato «Lords of Logistics»: «Articoli, distribuirli, trovarli tutti, farli uscire dai magazzini e legarli per sempre al cliente». Siamo fondamentalmente responsabili del cuore della logistica, dello stoccaggio dei prodotti.

Vorrei presentarti tre delle mie iniziative (progetti) preferite a cui ho lavorato negli ultimi 5 anni.

Come un lampo nel primo progetto: consegna lampo

Poco dopo aver iniziato, mi è stato permesso di partecipare a un'iniziativa più grande: il progetto pilota di consegna lampo nella città di Zurigo. Come molti clienti, spesso desidero che i miei acquisti arrivino a casa mia il più rapidamente possibile. Con la consegna lampo dovrebbe essere possibile. Con una funzione di questo tipo, si uniscono molti desideri e aspettative, che rendono rapidamente la soluzione molto complessa.

L'iniziativa è stata portata avanti in molte aree del nostro vasto panorama software e ha richiesto una buona collaborazione tra tutti i team coinvolti. A partire dal negozio online, dove abbiamo dovuto ampliare la disponibilità. Per la prima volta, si applicava solo a determinati codici postali. Alla cassa, la disponibilità dovrebbe essere utilizzata anche per bloccare il canale di spedizione per la consegna lampo, in quanto i clienti si aspettano il loro ordine il giorno stesso e non vogliono essere sorpresi improvvisamente da una mancanza di disponibilità. In questo caso, dovevamo fornire interfacce REST stabili per i team del nostro negozio online e soddisfare le prestazioni e gli SLA richiesti.

Naturalmente, c'erano anche una serie di sfide logistiche da superare. La più grande, a mio avviso, è stata il coordinamento di tutti i processi critici in termini di tempo. Dovevamo assicurarci che gli ordini fossero prenotati in tempo per essere ritirati entro la scadenza, altrimenti avrebbero perso l'orario di partenza del camion. E se qualcosa dovesse andare storto, vogliamo essere in grado di reagire rapidamente grazie a una buona registrazione, al monitoraggio e agli avvisi.

Quando mi occupo di logistica, mi piace sempre dare subito una mano
Quando mi occupo di logistica, mi piace sempre dare subito una mano

Responsabile della consegna è poi il nostro partner notime, che deve avere tutti i dati in anticipo e in modo corretto affinché la consegna possa avvenire lo stesso giorno. Anche per notime, tuttavia, il processo non è stato lo stesso di quello con gli altri clienti: volevamo spedire i nostri prodotti non imballati, il che significava che notime poteva consolidare i prodotti per ogni indirizzo di consegna e allegare gli adattatori di corrente.

Ora sono qui con i miei nuovi Airpods, ordinati all'ora di pranzo. Non vedo l'ora di ascoltare la musica e sono orgoglioso di aver partecipato all'iniziativa della consegna lampo.

Il magazzino a corsie strette: non per i claustrofobici

L'anno scorso, per un'iniziativa di dimensioni analoghe, mi è stato permesso di assumere il ruolo di solution architect, ovvero il referente dello sviluppo software responsabile della progettazione e dell'implementazione del software. La nostra missione: sviluppare una soluzione interna per un magazzino a corsie strette che doveva essere pronto per il commercio natalizio del 2022.

Ecco come si presenta oggi il magazzino a corsie strette
Ecco come si presenta oggi il magazzino a corsie strette

Un magazzino a corsie strette ha, come suggerisce il nome, corridoi stretti. I carrelli a corsia stretta devono essere guidati di conseguenza all'interno dei corridoi, altrimenti c'è il rischio di collisione con le scaffalature. Inoltre, è molto difficile vedere dove ci sono spazi di archiviazione liberi o dove si trovano determinati numeri di spazio di archiviazione.

Per questi motivi, abbiamo dovuto sviluppare i processi in modo che la selezione automatica dei corridoi e delle posizioni di stoccaggio avvenga nel modo più efficiente possibile. I veicoli devono anche conoscere i rispettivi corridoi e le posizioni di stoccaggio, per poter guidare il dipendente alla posizione di stoccaggio successiva in modo rapido e controllato.

Abbiamo anche sfruttato questa opportunità per avvicinare il codice del nostro team all'architettura di destinazione. Per noi, questo significava che per la prima volta stavamo costruendo un software di stoccaggio separato dal nostro monolite da un modulo (= microservice). Il modo in cui il modulo si inserisce nell'architettura complessiva è qualcosa che elaboriamo, come di consueto nella nostra azienda, con gli strategici domain-driven design pattern. Un esempio di ciò può essere visto nell'immagine dell'«architettura high-level».

L'immagazzinamento secondo l'architettura high-level.
L'immagazzinamento secondo l'architettura high-level.

Per quanto possibile, applichiamo il principio «un modulo, un team». Così ci è stato permesso di dare libero sfogo ai nostri desideri all'interno del nostro modulo. Abbiamo optato per l'onion architecture con vertical slice e CQRS. Nel cuore del nostro modulo, il dominio, utilizziamo anche DDD pattern tattici, come aggregate, value object, domain event e domain service. A livello di persistenza, il repository e lo unit of work pattern ci semplificano la vita.

L'architettura interna del nostro modulo.
L'architettura interna del nostro modulo.

Siamo molto soddisfatti del prodotto finale, perché ora possiamo integrare nuove funzionalità in modo relativamente rapido e testarle con la nostra suite di test composta da NUnit, FluentAssertions, AutoFixture, Moq e Playwright. Naturalmente c'è ancora potenziale di ottimizzazione. Un esempio potrebbe essere quello degli eventi di integrazione che comunicano con il nostro monolite e sincronizzano le scorte. Ma lavoriamo costantemente per migliorare la nostra soluzione.

Da un hackfest alla visualizzazione del magazzino

Avendo un giorno fisso in ufficio, spesso ci incontriamo nel nostro bar interno per una birra dopo il lavoro. Durante una di queste, abbiamo avuto l'idea di costruire una visualizzazione 3D del magazzino per poter immaginare meglio la situazione sul posto. «Piraticamente», ho provato a realizzare un prototipo con la libreria 3D Javascript three.js. La visualizzazione sembrava già promettente in questo stato di prototipo, ma purtroppo si bloccava ancora quando la telecamera si muoveva a causa delle scarse prestazioni. Ma non sono riuscito a trattenermi e ho presentato il prototipo al team.

Fortunatamente nel nostro team c'è Christian Sami, uno sviluppatore con un Master of Arts in Game Design, che ha visto il potenziale del mio prototipo e sapeva esattamente come ottimizzarlo e ampliarlo. Insieme a un altro ingegnere, ha sviluppato ulteriormente il mio prototipo all'Hackfest 2022 e lo ha trasformato in una soluzione applicabile.

La visualizzazione finale del magazzino in uso.
La visualizzazione finale del magazzino in uso.

Sono riusciti a risolvere il problema delle prestazioni con diverse tecniche: la cache degli spazi di archiviazione a livello di server, una texture centrale per tutti gli spazi di archiviazione e un grande mesh contenente tutti i box. Hanno anche incluso altre utili funzioni, come una delle mie preferite: il livello di riempimento come sfumatura di colore dal verde al rosso. La visualizzazione estesa dell'Hackfest viene ora utilizzata quotidianamente nel magazzino. Aiuta il personale a configurare più facilmente il magazzino e a identificare visivamente i problemi, ad esempio quando gli spazi di stoccaggio disponibili sono troppo pochi.

Cosa ci riserva il futuro?

All'orizzonte ci sono ancora tanti progetti interessanti. Attualmente stiamo lavorando all'espansione del nostro servizio di consegna lampo, che in futuro consentirà a 60% delle economie domestiche in Svizzera di beneficiare di tempi di consegna più rapidi, fino al giorno stesso. Qui affronteremo anche molti debiti tecnici che sono stati un po' trascurati nel progetto pilota, come la migrazione di quanto più codice possibile dal monorepo al modulo.

Hai le farfalle logistiche nello stomaco dopo questo articolo? Da Digitec Galaxus troverai sicuramente il tuo amore.

A 58 persone piace questo articolo


Potrebbero interessarti anche questi articoli

  • Dietro le quinte

    Lego e iPhone: le ricerche più frequenti della clientela

    di Manuel Wenk

  • Dietro le quinte

    Tre giorni di «Hackfest»: 27 team hanno programmato idee per lo shop

    di Martin Jungfer

  • Dietro le quinte

    «Hackfest» da Digitec Galaxus: 54 ore di lavoro, 3 minuti di presentazione

    di Martin Jungfer

Commenti

Avatar