Barca spiaggiata

Un progetto software può fallire in tanti modi diversi, e quelli che invece hanno successo riescono a mettere in fila le cose giuste nel modo giusto.

Ma quali sono i fattori essenziali?

Tre assi fondamentali

Nella nostra esperienza abbiamo visto che i “paletti” fondamentali sono relativi a queste 3 questioni, semplici da formulare, ma difficili da trattare bene:

  1. Capire che problema risolvere. Lungi dall’essere banale, il delineare chi userà il nostro sistema, per trarne quali benefici, e come lo userà è una delle cose più difficili da fare bene.
  2. Realizzare il sistema in modo che sia sostenibile. Nel 2022 non è difficile costruire un sistema che funziona. Quello che è difficile è realizzarlo in modo sostenibile, ovverossia che lo si possa far facilmente evolvere. Il software è molto duttile, ma questa è una delle due facce della medaglia: la duttilità si riflette in facilità di modifica, che porta a richieste di modifiche frequenti, sia perché cambiano le esigenze, sia perché cambiano le infrastrutture su cui il sistema funziona. Una scarsa manutenibilità ha come conseguenza che il team di sviluppo si trova presto fagocitato nella risoluzione di bug e ha poco tempo per dedicarsi a estensioni e modifiche che servono al business.
  3. Verificare di averlo realizzato. Non basta aver capito “qual è il sistema giusto che serve”, non basta “averne implementato uno”: occorre anche assicurarsi che “quello che si è realizzato è conforme a quanto deciso”. Questo è l’ambito del testing, che nel 2022 non può non basarsi per buona parte sull’automazione dei test.

Dal punto di vista del management, la tranquillità viene solo se la giusta attenzione a tutti questi tre aspetti viene data.

Tre livelli

Per ciascuno degli assi descritti sopra si possono individuare 3 livelli su cui agire.

  1. Il livello tecnico. È relativo alle specifiche tecniche e buone pratiche che si adottano. Ad es. l’aderenza ai principi SOLID della buona programmazione, la scrittura di test di unitå secondo il TDD.
  2. Il livello organizzativo. È relativo a come il lavoro delle varie persone coinvolte (di tutti i ruoli professionali che servono) viene organizzato. Chi fa cosa e quando e perché. Ad es. un’organizzazione agile prevede determinati ruoli, determinate cerimonie, e determinati artefatti.
  3. Il livello strategico. Risponde alla domanda “perché vale la pena fare qualcosa?”. Ad es. perché occorre investire sul testing? in che modo si rientra dall’investimento?

Quindi, per portare a termine con successo una iniziativa software, occorre pensare a ciascuno dei 3 assi (comprensione del problema, realizzazione del sistema, verifica) e per ciascun asse esaminare i 3 livelli (tecnico, organizzativo, strategico).

In conclusione, anche se non ci si pensa esplicitamente, scelte concrete vengono fatte. Tanto vale cercare di fare delle scelte intenzionali.

La tranquillità viene dall’aver pensato alle cose giuste.