Come continuiamo a sviluppare il nostro software
Come continuiamo a sviluppare il nostro software
Come continuiamo a sviluppare il nostro software
Dietro le quinte

Come continuiamo a sviluppare il nostro software

Oliver Herren
Oliver Herren
Zurigo, il 12.10.2017
Responsabile di traduzione/revisione: Alessandra Ruggieri De Micheli
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:

Placeholder image
placeholder

placeholder

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?)

Le sfide

  • Crescita da 5 a 12 team di scrum nell’ultimo anno
  • Ulteriore crescita del reparto sviluppo prevista per i prossimi anni
  • Molti nuovi collaboratori richiedono un know-how ben strutturato
  • Maggiori esigenze relativamente ai tempi di risposta dell'applicazione (Performance matters)
  • Garantire la scalabilità per un ulteriore aumento degli ordini e delle interazioni con gli utenti
  • Rendere la complessità trasparente attraverso moduli chiari (Bounded Contexts) e interfacce pulite
  • Spostare l'intera soluzione nel cloud

Essere in grado di gestire la complessità

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: * Con il partizionamento: suddividendo l'intero sistema in diversi sottosistemi e facendoli comunicare tra loro attraverso interfacce chiare e semplici quanto più possibile. * Stabilendo una gerarchia esplicita tra le parti del sistema, in modo da poter mantenere una visione d'insieme sullo stesso, evidenziare le dipendenze e le interfacce in modo chiaro e ben definito, e quindi stabilire in modo chiaro anche le priorità. * Rendendo autonome le singole parti del sistema, in modo che la maggior parte di esse possa concentrarsi esclusivamente sulle rispettive aree di competenza.

Cosa, secondo me, è importante: * Eliminare i processi e le fasi di lavoro non necessari che non aggiungono valore per il cliente. Questo è chiaramente il punto più importante, perché a volte tendiamo a complicare e burocratizzare le cose. * Focalizzarsi sul cliente. Ci sono vantaggi per il cliente? E questi vantaggi sono proporzionati? * Questo ci porta alla definizione delle priorità: per definire le priorità in modo utile e sensato dobbiamo implementare una strategia e una visione chiara. * Ognuno può aiutare esponendo i processi complicati e affrontando apertamente le questioni rilevanti, ma anche evitando di cercare ulteriori problemi insignificanti. * Definire gerarchie piatte e un approccio orientato al lavoro di squadra. * Le competenze dovrebbero essere distribuite il più possibile tra le squadre. * In caso di dubbio, dobbiamo essere in grado di prendere decisioni chiare, anche quando non tutti sono d'accordo. Altrimenti rischiamo di rimanere bloccati su un problema in eterno, mentre in realtà potrebbe essere risolto in molti modi diversi. * Bisogna essere costruttivi e ottimisti, perché i problemi esistono per essere risolti. E una volta che sono stati risolti, portano alla luce nuovi problemi. È così che gira la vita emozionante di un ingegnere ;-)

Come affrontiamo le sfide?

Ecco una breve panoramica di quanto è accaduto negli ultimi quindici mesi e di cosa abbiamo fatto per far crescere il nostro reparto sviluppo.

Specializzazione per settore

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).

Team interdisciplinari

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.

Coaching di nuovi team

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.

Competenze e responsabilità individuali all'interno dei 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.

Strategia del cloud

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.

Per saperne di più sullo sviluppo del nostro software

Placeholder image
placeholder

placeholder

Placeholder image
placeholder

placeholder

Placeholder image
placeholder

placeholder

Placeholder image
placeholder

placeholder

Ti piacerebbe sviluppare con noi?

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.

A 129 persone piace questo articolo


Oliver Herren
Oliver Herren
Chief Innovation Officer, Zurigo
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.

Potrebbero interessarti anche questi articoli