
Dietro le quinte
Come sviluppiamo il nostro software?
di Oliver Herren
Le sfide poste dalla crescita di un’azienda richiedono adeguamenti agili e intelligenti a tutti i livelli. Non è solo l'organizzazione a doversi adattare costantemente, ma anche l'architettura del software. In questo articolo puoi scoprire di cosa ci stiamo occupando attualmente e quali temi stiamo affrontando.
È passato molto, troppo tempo dall’ultima volta che ho dato un’occhiata alle attività di sviluppo di Digitec Galaxus. Se ci leggi spesso, forse ricordi questo articolo:
Da allora, il reparto sviluppo si è ampliato da cinque a dodici team di scrum. Questo comporta una serie di problemi che devono essere affrontati con attenzione. È così che siamo arrivati alle molteplici sfide di oggi, sfide che probabilmente non diminuiranno nei prossimi anni.
Per via del rapido sviluppo del reparto sviluppo, si è sviluppata la necessità di sviluppare ulteriormente lo sviluppo a causa della lentezza nella crescita dello sviluppo. (chiarissimo, no?)
Quando si tratta di complessità, le cose si fanno complicate. «Simple can be harder than complex: You have to work hard to get your thinking clean to make it simple», ha detto una volta Steve Jobs. Insomma: per semplificare i processi e i problemi, non solo è necessario possedere le conoscenze tecniche adeguate, ma anche conoscere i processi aziendali in modo approfondito. Se un sistema viene suddiviso in modo insensato, aumenta inutilmente la complessità e si riduce la possibilità di gestirlo. La modularizzazione è un’ottima soluzione, ma non è un rimedio universale a tutti i problemi: anche se vengono creati moduli utili, non viene ridotta la complessità generale, che invece viene semplicemente trasferita alle interfacce tra i sistemi. Idealmente devono esserci poche interfacce, che sono stabili quanto più possibile. In questo modo, un team può concentrarsi sul lavoro in un singolo modulo e non deve preoccuparsi del resto dell’applicazione.
La complessità può essere ridotta (in tedesco) solo se vengono ridotte anche le esigenze e le capacità del sistema. Quindi: l’obiettivo principale non deve essere quello di ridurre la complessità, ma di essere in grado di gestirla.
E come si fa?
La teoria:
Cosa, secondo me, è importante:
Ecco una breve panoramica di quanto è accaduto negli ultimi quindici mesi e di cosa abbiamo fatto per far crescere il nostro reparto sviluppo.
I team di scrum sono stati assegnati a un dominio, cioè a un reparto ben definito come la logistica, la gestione dei prodotti o il negozio online. Ogni team può così specializzarsi in questo settore e, sviluppando costantemente le conoscenze e i processi individuali, può trovare soluzioni sempre migliori e più eleganti. La sfera di competenza è solitamente rappresentata da un reparto. Il team sviluppo lavora il più possibile a stretto contatto con il cliente per scoprire come generare il massimo valore aggiunto in base alle possibilità attuali. Per noi è anche molto importante che una squadra sia stabile quanto più possibile; idealmente, un team funziona così bene che lavora in stato di flusso.
Un team non è più composto esclusivamente da sviluppatori di software, ma racchiude sempre un insieme di tutte le competenze richieste nel dominio o sottodominio. Ad esempio, in un team dedicato allo shop online devono lavorare anche gli Interaciton Designer e gli sviluppatori front-end. A seconda del contesto, è necessaria anche la presenza di un Requirement Engineer, un esperto di business intelligence o un System Engineer. L'obiettivo è ridurre il numero di interfacce e abbreviare i percorsi di comunicazione: il team dovrebbe essere in grado di lavorare in modo autonomo senza ostacoli e senza dipendere da altri settori.
Per assicurarsi che i team siano stabili il più possibile e che la loro composizione non cambi in continuazione, la maggior parte di essi viene formata da nuovi dipendenti. Per facilitare una rapida acquisizione del know-how, vengono seguiti in modo professionale e metodico da un coach specializzato: uno sviluppatore di software che ha familiarità con il nostro ambiente li assiste per un certo periodo e si rende disponibile a rispondere alle loro domande. Dal punto di vista metodologico, un coach per il settore scrum e per quello dello sviluppo agile di software lavora con tutto il team.
Affinché ogni singolo dipendente possa lavorare secondo uno spirito imprenditoriale, è necessario che le informazioni rilevanti siano liberamente accessibili a tutti. Che si tratti della nostra strategia, missione e visione o dei risultati dei sondaggi ai collaboratori, in pratica non disponiamo di informazioni che non siano consultabili da tutti i dipendenti. Ciò significa che tutti possono verificare se i loro progetti o compiti sono in linea con la strategia aziendale. È importante che tutti sappiano quale servizio vogliamo fornire al cliente. La nostra proposta di valore è pubblica e trasparente, in modo che ogni cliente possa misurare le nostre prestazioni rispetto alla nostra promessa.
In base ai progressi tecnologici, crediamo che in futuro le aziende opereranno esclusivamente nel cloud. Già oggi capita che alcune funzionalità vengano rese disponibili prima, o addirittura esclusivamente, tramite questa soluzione. Se prendiamo in considerazione i miliardi di dollari investiti nelle varie piattaforme cloud, è un fenomeno che non potrà fare altro che accelerare. E per riuscire a cavalcare l’onda del cambiamento con successo, ci affidiamo a più fornitori. La flessibilità e l'innovazione che ci garantisce l’utilizzo del cloud sono fondamentali, ed è per questo che i nuovi servizi verranno sviluppati esclusivamente lì. Anche quando apportiamo modifiche a un settore, trasferiamo tutto su una piattaforma cloud ottimale. Attualmente, stiamo già svolgendo questo lavoro con le piattaforme Google Cloud, Microsoft Azure ed Elastic. A questo scopo, tutti i componenti applicativi che non sono stati ancora adattati continueranno a essere utilizzati in loco nel nostro Dual Datacenter. Più ibrido di così non si può. Questo spiega anche perché DevOps è diventato molto più importante e perché in futuro lo sarà ancora di più. Perché nel cloud, l'infrastruttura diventa parte dell'applicazione.
Al momento, non mi vengono in mente altri cambiamenti. E comunque ormai sicuramente ho scritto troppo, perciò termino qui questo mio contributo e mi impegno ad accorciare l'intervallo tra un articolo e l’altro! In questo modo spero anche di ricordarmi bene tutto ciò che modifichiamo e aggiorniamo.
Vorremmo lavorare ancora più velocemente; se sei in linea con la nostra visione, qui trovi diverse offerte di lavoro attualmente aperte per entrare a far parte del nostro reparto sviluppo. Ti aspettiamo per affrontare tante altre sfide nell’ambito della crescita.
Cool: costruire ponti tra il mondo reale e il mondo dell'informazione. Non cool: dover prendere l’auto per andare a fare shopping. La mia vita è «online» e l'era dell'informazione è esattamente dove mi sento a casa.