Come sanno bene tutti gli studenti (e in parte anche i lettori dei miei articoli), io sono un grande appassionato di metafore: in tutti i miei corsi, cerco di trovare sempre il modo più semplice ma non banale, preso dalla vita di tutti i giorni o da esempi facilmente comprensibili, di spiegare tutti i concetti più ostici e complicati relativi al meraviglioso mondo dello sviluppo software.
Per questo motivo, vorrei farti capire con un esempio preso dalla fantascienza che cosa potrebbe mancare al tuo Processo di Sviluppo Software per renderlo ancora più ingegneristico, efficiente e soprattutto profittevole: le Multi-Dimensioni.
Le 2 dimensioni dei normali Processi di Sviluppo Software
Esatto, parliamo del mondo dello sviluppo di codice in generale:
se vieni dal mondo tecnico come me, sono solamente due le “dimensioni” con le quali sei abituato naturalmente a confrontarti nei tuoi progetto software.
Dal tuo punto di vista, vedi solamente un mondo bidimensionale, piatto: se sei veramente bravo hai il potere di vederlo tri-dimensionale, ma stai correndo il grande rischio che dei “nemici” arrivino da altri pianeti o da altre Dimensioni, che non riesci a vedere perché ti manca un “SUPER-POTERE”.
Infatti tornando un attimo seri, sono ben 5 i Pilastri di un progetto software completo sotto tutti gli aspetti, ingegnerizzato nei dettagli e che considera tutti i possibili fattori di rischio, compresi quelli economici.
Vediamo intanto in dettaglio quali sono quegli aspetti che sicuramente conosci già bene:
PROCESSO
Certo, è molto importante scegliere il metodo di sviluppo software corretto, ci mancherebbe. Quelle dei Requisiti Perfetti, Modellazione, Architettura, Sviluppo, Test… sono tutte fasi estremamente delicate di un ciclo di vita che è molto più lungo e delicato di quanto sembri. Scegliere un approccio rigido, inefficiente o peggio ancora troppo poco formale potrebbe portare delle pesanti conseguenze nel tuo ciclo di vita con grandi ripercussioni sui tempi che si allungano e sulla qualità.
Ma non commettere anche tu l’errore da “tecnico” che io ho fatto per anni: non credere che sia SOLO una questione di processo, di tool, di compilatori. Ci sono troppi aspetti trascurati che fanno la differenza tra successo e disastro.
Anche la metodologia più efficiente del mondo, se non supportata da tutte le altre dimensioni come quelle del Processo Multi-Dimensionale M.E.D.S. che ti illustrerò tra poco, rischia di farti costruire un bellissimo prodotto al top della gamma tecnicamente ma che poi non vende nulla, come il famoso Sony BetaMax, con la conseguenza drammatica di far naufragare tutti i tuoi sforzi nell’essere competitivo sul mercato.
MANAGEMENT
Gli aspetti gestionali sai bene che sono altrettanto fondamentali. Hai ben compreso sulle tue spalle che la selezione, la formazione e la gestione del team ad esempio sono uno dei pilastri fondamentali di un buon progetto che funziona.
Ci sono altri aspetti che spesso sono più trascurati ma si rivelano altrettanto importanti come la gestione del rischio, la creazione e la crescita di una cultura aziendale diffusa, nonché l’individuazione e il mantenimento di una dashboard di metriche e KPI importanti per condurre l’azienda.
Anche qua, il problema è che anche il miglior gruppo di lavoro al mondo, con una formazione e coesione eccellenti, non ha da solo la forza, il potere di sfruttare al meglio gli strumenti pur eccellenti che ha a disposizione e rischia di dover abortire poco dopo il lancio sul mercato.
Sai quanti esempi si possono fare presi dalla vita di tutti i giorni? Potrei infierire su altri prodotti come il Sony MiniDisc, i dischi Blu-Ray… tecnologie che dovevano aiutarci come le video-chiamate sul cellulare. Potrei prendermela anche altri colossi che hanno partorito progetti già morti come Google Plus. Solo che per loro un fallimento del genere è un qualche decimo di percentuale del bilancio annuo… per te invece non è solo questione di frustrazione nel vedere un progetto fallire, è anche questione di sopravvivenza del tuo business o del tuo ramo aziendale.
I pilastri mancanti per uno Sviluppo Software Profittevole
Cerchiamo ora di capire quali sono le altre 3 “dimensioni” del M.E.D.S. (Method for Efficient Development of Software) che danno quella profondità di visione, quell’approccio multi-fattoriale, quel “SUPER-POTERE” che solo permette di avere un Processo di Sviluppo che sia:
– ingegnerizzato
– ripetibile
– efficiente
– ma soprattutto PROFITTEVOLE
Vediamoli uno ad uno:
STRATEGIA
Questo è uno dei pilastri fondamentali del processo M.E.D.S. ed è in assoluto il più trascurato e vilipeso soprattutto in Italia, dove certe discipline hanno avuto una pessima fortuna, per colpa di alcuni personaggi che le hanno usate per fini di truffa.
Sto parlando di concetti come Marketing, Posizionamento, Focus… di Vendita Professionale. Tutte discipline che in America ad esempio vengono studiate in maniera scientifica da anni e hanno il solo scopo di presentare e vendere meglio la Verità, ossia il prodotto che vendi.
Ti sarai accorto da solo che non è più sufficiente garantire quello che promettono tutti: qualità, efficienza, servizio.
Parliamoci molto chiaro, basta analizzare tante delle storie di fallimento aziendali da questo punto di vista per capire in maniera lampante una verità molto allarmante:
UN POSIZIONAMENTO SBAGLIATO (O DEL TUTTO ASSENTE) VANIFICA QUALUNQUE SFORZO TECNICO ED ECONOMICO E TI BUTTA SUL MERCATO ALLO SBARAGLIO PIU’ TOTALE
Basta il primo competitor che per qualunque motivo abbassa i prezzi, rinuncia ai margini, o semplicemente ha più soldi da buttare di te, per farti trovare gambe all’aria anche se pensavi di avere una superiorità tecnica inattaccabile.
E senza adeguata Strategia di Marketing successiva, diventa poi impossibile farsi conoscere in maniera adeguata sul mercato per i problemi che si risolvono ai nostri clienti, concentrandosi solo sull’esibire un prodotto o un servizio scintillante ma invenduto.
Il tutto poi avviene in sequenza:
– senza un approccio Marketing-First, non hai Requisiti Perfetti
– senza Requisiti Perfetti, non hai un Prodotto che risponde alle aspettative del cliente
– senza Requisiti Perfetti, non hai neanche una Strategia di Verifica per dimostrare di aver fatto quello che ti si chiedeva di fare
– senza una Strategia di Verifica efficiente ed automatica, non esiste Gestione del Cambiamento
Quanto è frustrante ritrovarsi in una situazione per cui nessuno sforzo che un team di Ricerca e Sviluppo possa fare, serva realmente a cambiare il destino del progetto?
Devi risalire a monte… devi allargare la tua visione piatta ed estenderla alla prima e più importante Dimensione: la STRATEGIA M.E.D.S., l’unico modo per costruire poi delle fondamenta in grado di reggere il resto del processo.
ECONOMIA
Lo ripeto da sempre: l’unica, vera, indiscutibile metrica indispensabile da tenere sempre sotto controllo in un progetto software è il MOL.
Che non è qualcosa tipo Model-Oriented Language, Master Object Lines o una roba tecnicosa del genere, ma molto più semplicemente:
MARGINE OPERATIVO LORDO
Esatto: una voce di bilancio, l’EBIT (Earnings Before Incoming Taxes) all’americana, è di fatto l’unica risposta alla vera, unica domanda che dovrebbe risuonare sempre nel tuo cervello, indipendentemente dalle menate tecnologiche e dalla competenza, sia che l’azienda sia tua sia che tu sia un manager o dipendente, dovrebbe essere:
STIAMO GUADAGNANDO O PERDENDO SOLDI?
Già, il vile denaro è di fatto quello che ti dà lo stipendio o comunque da vivere e senza di quello non c’è dominanza tecnologia, efficienza di sviluppo che tenga: se vendi a un prezzo troppo basso o troppo poco, se hai dei costi troppo alti, puoi annaspare quanto vuoi ma indipendentemente dalla tua bravura e competenza, prima o poi finisci gambe all’aria, tu e la tua azienda.
Insieme ad altri parametri fondamentali come il T.C.O. (Total Cost of Ownership), il R.O.I. (Return of Investment) curare questo fondamentale pilastro, tenere continuamente sotto controllo anche questa dimensione, è l’unico modo per avere quel Super-Potere fondamentale per lo sviluppo del software moderno: Profitable Software Development.
Ed è proprio a questo, un processo di sviluppo software che ti assicura di essere sempre PROFITTEVOLE, l’obiettivo a cui pian piano ti spiegherò come arrivare…
SUPPORTO
Anche questo ultimo pilastro è del tutto importante, anche se apparentemente collaterale agli altri, anche perché… quello che abbiamo visto finora è la situazione tranquilla, pacifica: ma le cose non vanno sempre bene. Non tutto procede come previsto. Il software contiene bug e malfunzionamenti trovati magari mentre sei sul campo. Prima o poi, come scherzosamente ho definito il tema dei miei prossimi corsi, ci sarà la RIVOLTA DEL SOFTWARE: non tanto uno scenario alla SkyNet di Terminator, ma più un momento in cui perdiamo il controllo dello sviluppo in un modo tale da ritorcersi contro.
Infatti, ci sono tutta una serie di elementi spesso trascurati o comunque non perfettamente integrati nel ciclo di vita, che possono vanificare un processo che funziona come un orologio.
Se la Gestione della Configurazione (Configuration Management) è una tematica oramai molto diffusa, anche se lontana dall’essere implementata correttamente e completamente, ci sono altri tipi di problemi che sono piuttosto nebulosi nei piani e nelle procedure anche delle migliori aziende
Ad esempio: è prevista una Gestione delle Emergenze? Cosa succede in caso di gravi disastri come quelli ambientali (alluvione, terremoto o anche solo incendio)? Oppure di un attacco hacker? Di nemici e mostri di altre dimensioni?
La strategia di backup è implementata correttamente? Quanto tempo ci si metterebbe a rimettersi in piedi e funzionanti come prima? Queste tematiche sono affrontate correttamente solo da aziende che devono fornire servizi molto critici, ma in realtà in misura minore coinvolgono TUTTE le aziende perché magari sono rare ma quando capitano, di solito, sono mortali per tutte le PMI.
Così come la Gestione del Cambiamento: le esigenze di Time to Market sempre più pressanti, i cambiamenti del cliente o del legislatore, le modifiche all’ultimo minuto… senza una strategia che renda efficiente e sicuro rispondere al cambiamento, senza uno “scudo gravitazionale”, anche il più bel castello di carte rischia di essere abbattuto da una modifica dell’ultimo minuto.
Conclusioni
Bene, spero di averti aiutato a capire che, nell’era del Software Moderno, non ha più senso ragionare in maniera bidimensionale, perché rischi di avere un punto di vista del tutto piatto ed incompleto e di non accorgerti dei pericoli, dei nemici, dei “mostri” che arrivano dalle altre dimensioni, mentre tu sei preso e accanito sugli aspetti tecnologici e quotidiani dello sviluppo del codice.
Il primo e finora unico metodo al mondo che per precisa scelta si fonda su 5 pilastri imprescindibili è proprio il M.E.D.S. e il nostro ironico super-eroe è qui per guidarti nelle 5 Dimensioni del Profitable Software Development: l’unico SUPER-POTERE per assicurare a te e alla tua azienda di prosperare a lungo.
Sto preparando da tanto tempo un corso “fanta-scientifico” (in realtà molto Scientifico e poco “fanta”), mai visto prima, su come affrontare questa ipotetico ma iper-realistico scenario di una preoccupante RIVOLTA DEL SOFTWARE: nella primavera 2021, a Roma e Milano, avrai la possibilità di fare un viaggio Multi-Dimensionale nello Sviluppo Software e di imparare le tecniche su come affrontare i “nemici” da punti di vista che nessun altro corso ha mai affrontato così in profondità.
Scrivici per ricevere maggiori informazioni su questo corso:
assistenza@softwaresicuro.it