Non importa quanto sia bello il tuo software, quanto sia intuitivo e quanto sia ricco di funzioni al momento dell'implementazione, è destinato ad essere messo alla prova dai requisiti che cambiano costantemente. Ecco l’importanza dell’essere a prova di futuro: un software, per durare nel tempo, deve essere facile da mantenere, adattare ed estendere.
Bassi costi di manutenzione
Quando si sceglie un nuovo sistema software, le organizzazioni sono spesso tentate di scegliere il sistema con il costo iniziale più basso. Tuttavia, il costo di gestione e manutenzione del software - aggiornamenti, correzione di bug, ecc. - può essere enorme, pari al 15% o anche al 20% del costo iniziale, all'anno. Aggiungete a questo il costo del tempo di inattività dovuto a problemi, e capirete quanto sia importante investire in un software di alta qualità e a prova di futuro fin dall'inizio.
Il costo di gestione e manutenzione del software - aggiornamenti, correzione di bug, ecc. - può essere molto alto, pari al 15% o anche al 20% del costo iniziale, all'anno.
Il lavoro per garantire alta qualità e applicazioni a prova di futuro inizia già dalle prime fasi del progetto. Ecco come si costruisce software di successo future proof nella nostra fabbrica digitale.
1. Comprendiamo il tuo business value: la fase di Foundation
In Cegeka, tutti amiamo la (nuova) tecnologia. Tuttavia, mettiamo il tuo business al centro delle nostre priorità. Dopo tutto, il primo e principale requisito di qualsiasi software a prova di futuro è che soddisfi le aspettative del cliente - oggi e in futuro. Ecco perché iniziamo ogni progetto di sviluppo software complesso con la fase di Foundation: una serie di workshop volti a comprendere i tuoi driver di business e il software (l'architettura) di cui hai bisogno per soddisfare tali esigenze - per essere sicuri di costruire un'applicazione giusta al primo colpo.
Scopri perché la fase di Foundation è la base del successo di ogni progetto di sviluppo software.
2. Scegliamo tecnologia testata e future-proof
Quando si determina l'ambito tecnico, cioè l'architettura e lo stack tecnologico necessari, la sicurezza sul medio lungo periodo della tecnologia - linguaggi, framework, metodologie, ecc. - è un fattore determinante. Grazie ad anni di esperienza e di formazione continua, i nostri ingegneri non solo sono allineati con le ultime e più importanti tendenze e tecnologie, ma sono in grado di valutare anche quali sono quelle destinate a perdurare e quelle passeggere. Le nostre scelte ricadono su tecnologie innovative ma solide, stabili e ben supportate.
3. Scrivere codice: il valore della disciplina, del lavoro di squadra e della semplicità
La sicurezza futura del vostro software dipende molto dalla qualità dell'architettura e del codice scritto. Un codice di alta qualità è più facile da mantenere, adattare, estendere con un nuovo modulo o nuove funzionalità, o eseguire in un nuovo ambiente. I nostri sviluppatori aderiscono costantemente alle best practice per assicurare un codice di alta qualità:
- Scriviamo codice pulito e riutilizzabile che è facile da capire per i colleghi, facile da testare e leggere ed è auto esplicativo per coloro che lo manterranno in futuro.
- Quando due sviluppatori lavorano insieme in coppia (pair programming), otteniamo un codice di migliore qualità, rendendo più facile per gli altri leggerlo e modificarlo quando necessario.
- Tutto il codice scritto appartiene all'intera squadra (collective code ownership). Ciò significa che ogni sviluppatore può modificare qualsiasi pezzo di codice e iniziare a lavorare sulla prossima iterazione.
- Manteniamo sistematicamente il codice organizzato e decompresso e miglioriamo la sua leggibilità e manutenibilità. In questo modo, minimizziamo il debito tecnico ovvero il rischio che i difetti del passato debbano essere corretti prima di poter aggiungere nuove funzionalità (continuous refactoring).
- I test continui - sia automatizzati che manuali – eseguiti fin dall'inizio del progetto, aiutano gli sviluppatori a rilevare i bug o le deviazioni dal perimetro di progetto il più presto possibile, ovvero prima che influenzino il codice, e a supportare i rapidi cambiamenti dell'applicazione senza la paura di impattare il codice esistente. Un test rapido aiuta a verificare che l'intera applicazione continui a funzionare. Inoltre, monitoriamo continuamente la manutenibilità del codice tramite strumenti di analisi.
Falla semplice! Scrivendo il codice più semplice possibile, ci assicuriamo che esso sia facile da mantenere: tutti possono apportare modifiche ed estendere il sistema con nuove funzionalità.
4. Cicli di feedback iterativi
I nostri sviluppatori lavorano per brevi sprint, assicurandosi di poter facilmente apportare modifiche al codice senza impattare troppo su timeline e budget. A intervalli regolari, ci incontriamo con voi per stabilire le priorità - se necessario, confrontando le conseguenze dei costi di una caratteristica extra o di un bug segnalato con il costo di sviluppo o di correzione.
5. Condividi la conoscenza acquisita
Le migliori pratiche come il pair programming, la proprietà collettiva del codice, le revisioni del codice e il nostro approccio di sviluppo agile in generale, facilitano la condivisione delle conoscenze all’interno del team di sviluppo. In questo modo, ci assicuriamo che le nostre persone abbiano una conoscenza approfondita del vostro sistema - piuttosto che questa conoscenza sia posseduta da un unico ingegnere che ha lavorato sul sistema per molto tempo. La stessa conoscenza è trasferita a voi in stretta collaborazione per garantire la sostenibilità del vostro sistema.