Perché la manutenzione delle applicazioni Web dovrebbe essere più di una cosa
Pubblicato: 2022-03-10Gli sviluppatori di software tradizionali ci hanno nascosto un segreto in bella vista. Non è nemmeno un fatto controverso. Fa parte del loro modello di business.
Non importa se stiamo parlando di fornitori di software aziendali di fascia alta o di software house più piccole che scrivono gli strumenti che tutti utilizziamo quotidianamente nei nostri lavori o attività come un gestore di syslog gratuito. È proprio lì davanti e al centro. Costi aggiuntivi che non nascondono e che ci siamo abituati a pagare.
Allora qual è questo segreto?
Ebbene, molti fornitori di software tradizionali guadagnano di più dalla manutenzione del software che scrivono rispetto alla vendita iniziale.
Non convinto?
Una rapida ricerca sul termine "Costo totale di proprietà" ti fornirà molte definizioni simili come questa di Gartner (enfasi mia):
[TCO è] il costo per l'implementazione, il funzionamento, il supporto e la manutenzione o l'estensione e la disattivazione di un'applicazione.
Inoltre, questo documento dell'università di Stanford afferma che la manutenzione normalmente ammonta dal 60% al 90% del TCO di un prodotto software.
Vale la pena lasciarlo affondare per un minuto . Guadagnano ben oltre il prezzo di acquisto iniziale vendendo supporto continuo e piani di manutenzione.
Non spingiamo la manutenzione
Il problema, a mio avviso, è che nel settore dello sviluppo web, la manutenzione delle applicazioni web non è qualcosa su cui ci concentriamo. Potremmo inserirlo nelle nostre proposte perché ci piace l'idea di una conservazione mensile, ma probabilmente copriranno semplici attività di pulizia o richieste di nuove funzionalità.
Non è raro nascondere gli aggiornamenti e le ottimizzazioni essenziali all'interno dei nostri preventivi per le iterazioni successive perché non siamo sicuri che il cliente vorrà pagare per le cose che consideriamo miglioramenti essenziali. Cerchiamo di farli entrare dalla porta sul retro. O in altre parole, non siamo aperti e trasparenti sul fatto che, proprio come i software più tradizionali, queste applicazioni devono essere mantenute.
Indipendentemente dai motivi, sta diventando chiaro che stiamo accumulando problemi per il futuro. Le applicazioni software che stiamo costruendo sono qui a lungo termine . Dobbiamo pensare come i tradizionali fornitori di software. Il nostro software sarà ancora in esecuzione tra 10 o 15 anni e dovrebbe essere mantenuto ben mantenuto.
Quindi, come possiamo cambiarlo? In che modo tutti noi come settore garantiamo che i nostri clienti siano protetti in modo che le cose rimangano sicure e aggiornate? Allo stesso modo, come possiamo prendere una parte della torta di manutenzione ?
Che cos'è la manutenzione?
Nel loro articolo del 2012 Effective Application Maintenance, Heather Smith e James McKeen definiscono la manutenzione come (l'enfasi è mia):
Il porting di un'applicazione su un nuovo server, l'interfacciamento con un sistema operativo diverso, l'aggiornamento a una versione più recente, l'alterazione di una tabella delle imposte o la conformità a nuove normative: tutto richiede la manutenzione dell'applicazione. Di conseguenza, la manutenzione si concentra sull'aggiornamento di un'applicazione per garantire che rimanga produttiva e/o economicamente vantaggiosa . La definizione di manutenzione dell'applicazione preferita dal focus group è: qualsiasi modifica di un'applicazione per correggere gli errori; migliorare le prestazioni; o per adattare l'applicazione a un ambiente modificato oa requisiti modificati. Pertanto, l'aggiunta di nuove funzionalità a un'applicazione esistente (ad es. miglioramento) non è, in senso stretto, considerata manutenzione .
In altre parole, la manutenzione è un lavoro essenziale che deve essere eseguito su un'applicazione software in modo che possa continuare a funzionare in modo affidabile e sicuro.
Non sta aggiungendo nuove funzionalità. Non sta controllando i file di registro o assicurando che i backup siano stati eseguiti (queste sono attività di pulizia). Sta lavorando sul codice e sulla piattaforma sottostante per garantire che le cose siano aggiornate, che funzioni come si aspetterebbero i suoi utenti e che le luci rimangano accese.
Ecco alcuni esempi:
Tecnologia e modifiche alla piattaforma
Le librerie di terze parti devono essere aggiornate. Il linguaggio sottostante richiede un aggiornamento, ad es. da PHP 5.6 a PHP 7.1 I moderni sistemi operativi inviano regolarmente aggiornamenti. Tenere il passo con questo è la manutenzione e, a volte, richiederà anche modifiche alla base del codice poiché i vecchi metodi di fare determinate cose diventano obsoleti.Ridimensionamento
Man mano che l'applicazione cresce, ci saranno problemi con le risorse. Le routine all'interno del codice che funzionavano bene con 10.000 transazioni al giorno lottano con 10.000 all'ora. L'applicazione deve essere monitorata, ma è anche necessario intraprendere un'azione quando vengono attivati gli avvisi.Correzione di bug
Ovvio ma vale la pena esplicitarlo. Il software ha dei bug e devono essere corretti. Anche se includi un breve periodo di correzioni di bug gratuite dopo la spedizione di un progetto, a un certo punto il cliente dovrà iniziare a pagarle.
Difficile da vendere?
È interessante notare che quando ne discuto con i miei colleghi, sentono che è difficile convincere i clienti che hanno bisogno di manutenzione. Sono preoccupati che i loro clienti non abbiano il budget e non vogliono sembrare troppo costosi.
Bene, ecco il punto: in realtà è una vendita abbastanza facile. Abbiamo a che fare con uomini d'affari e dobbiamo semplicemente parlare con loro di manutenzione in termini commerciali. Gli uomini d'affari capiscono che le attività richiedono manutenzione o diventeranno passività. È solo un altro normale sovraccarico mensile in corso. Un costo per fare affari. Dobbiamo solo inserire questo nelle nostre proposte e assicurarci di seguirlo .
Un metodo estremamente efficace consiste nell'offrire un fermo che incorpori la manutenzione al suo interno ma offra anche molto valore extra per il cliente, cose come:
- Rapporti sullo stato di avanzamento rispetto ai KPI (ad es. traffico, conversioni, volumi di ricerca)
- Tempo "libero" limitato ogni mese per piccole modifiche al sito
- Segnalazione di tempi di inattività, aggiornamenti del server o lavoro di sviluppo completato
- Accedi a te o a membri specifici del tuo team per telefono per rispondere alle domande
In effetti, puoi far risparmiare denaro al cliente e pagare da solo. Un buon esempio di ciò potrebbe essere l'esigenza di un cliente di ottenere un semplice report o esportare dal database ogni mese per l'elaborazione offline.
Potresti fare un preventivo per un certo numero di giorni di sviluppo per creare un'interfaccia utente di reporting, probabilmente più complessa di quanto inizialmente ipotizzato, o in alternativa indirizzare il cliente al tuo mantenitore. Includere al suo interno un'attività ogni mese per consentire a uno sviluppatore di eseguire manualmente una query SQL preimpostata per fornire manualmente gli stessi dati.

Un compito banale per te o il tuo team; molto valore per il tuo cliente.
Un esempio pratico
Ovviamente avrai il tuo modo di scrivere proposte, ma qui ci sono un paio di frammenti di un esempio.
Nella sezione della tua proposta in cui potresti dipingere la tua visione per il futuro, puoi aggiungere qualcosa sulla manutenzione. Usa questa come un'opportunità per piantare il seme per formare una relazione a lungo termine.
Stai cercando di ridurre al minimo il rischio a lungo termine.
Vuoi assicurarti che la tua applicazione funzioni bene, che rimanga sicura e che sia facile lavorarci.
Capisci anche quanto sia importante la manutenzione per qualsiasi risorsa aziendale.
Successivamente, nella sezione dei risultati finali, puoi aggiungere una parte sulla manutenzione come opzione autonoma o in bundle con una conservazione continua.
Nell'esempio seguente, lo manteniamo semplice e lo includiamo con un fermo di sviluppo prepagato:
Sosteniamo vivamente che tutti i clienti considerino la manutenzione un sovraccarico essenziale per il loro sito web. Le moderne applicazioni web richiedono manutenzione e proprio come la tua casa o la tua auto; mantieni il tuo bene mantenuto per ridurre il rischio tangibile che diventino passività in seguito .
In qualità di cliente che desidera tenere il passo con la manutenzione dell'applicazione e aggiungere nuove funzionalità, suggeriamo N giorni al mese (come punto di partenza) per la manutenzione generale e lo sviluppo.
Distribuiremmo le cose in modo che uno sviluppatore lavori sul tuo sistema almeno [alcuni periodi alla settimana/mese] dandoti il netto vantaggio di avere uno sviluppatore in grado di passare a qualcosa di più importante in caso di problemi durante lo [stesso periodo] . A seconda delle tue priorità, il tempo potrebbe essere speso per il lavoro su nuove funzionalità o diviso con la manutenzione, tocca a te. Normalmente suggeriamo una suddivisione del 75%/25% tra nuove funzionalità e manutenzione importante.
Come accennato in precedenza, questa è anche una grande opportunità per raggruppare la manutenzione con altri servizi continui a valore aggiunto come il reporting delle prestazioni, lo svolgimento di attività di pulizia come il controllo dei backup e forse una chiamata mensile per discutere i progressi e le priorità.
Quello che probabilmente scoprirai è che dopo aver ottenuto il lavoro, il fermo non viene più menzionato. Questo è comprensibile in quanto c'è molto da considerare per te e il tuo cliente all'inizio di un progetto, ma poiché il progetto si sta concludendo è un ottimo momento per reintrodurlo come parte del processo di offboarding del progetto.
Che si tratti della fase 2 o semplicemente di introdurre fatture finali e consegne, ricorda loro la manutenzione. Ricorda loro la formazione continua, i rapporti e la disponibilità per il supporto . Fai la spinta per un fermo, ricordandoti di parlare negli stessi termini commerciali: il loro nuovo asset deve essere mantenuto per rimanere brillante .
La manutenzione può essere fastidiosa?
Un malinteso comune è che gli importi di mantenimento possono diventare un onere aggiuntivo. La preoccupazione è che i clienti ti chiameranno costantemente chiedendoti piccole modifiche come parte del tuo fermo. Questa è una preoccupazione particolare per i team più piccoli o i consulenti solisti.
Di solito non è così, però. Forse all'inizio, il cliente avrà un elenco di ostacoli che devono essere risolti, ma questo è normale; se hai esperienza, allora te lo aspetti. Questi sono facilmente gestibili migliorando i canali di comunicazione (usare un Issue Tracker) e raggruppando tutte le richieste, cioè lavorando su di esse in un unico colpo.
Man mano che l'applicazione matura, entrerai in una modalità tick-over. È qui che il fermo diventa particolarmente prezioso per entrambe le parti. Ovviamente dipende da come hai strutturato il fermo, ma dal tuo punto di vista, ti stai sforzando di ricordare al cliente ogni mese quanto sei prezioso. Puoi inviare loro il tuo rapporto mensile, dire loro come hai risolto un rallentamento in quella routine e che il server è stato aggiornato per l'exploit globale del sistema operativo di questa settimana.
Eri, ovviamente, disponibile anche a lavorare su una serie di nuove funzionalità richieste che erano inoltre a pagamento . Dal punto di vista del tuo cliente, vedono che sei lì, vedono i progressi e possono rimuovere la "preoccupazione per il sito web" dalla loro lista. Chiaramente, tuttavia, "quei clienti" esistono, quindi la cosa più importante è ottenere una corretta formulazione e gestire le aspettative di conseguenza.
Se il tuo cliente si aspetta la luna sul bastone per un canone mensile basso, respingi o rinegozia. Pagare per fare - diciamo - due ore di manutenzione e pulizia al mese tra la fornitura di un rapporto mensile e altre attività accessorie è esattamente questo; non è un assegno in bianco per apportare molte modifiche ad hoc. Ricorda loro cosa è incluso e cosa no.
Come semplifichiamo la manutenzione?
Infine, per garantire il miglior valore ai tuoi clienti e per semplificarti la vita, usa alcune di queste tattiche durante la creazione delle tue applicazioni.
Supporto a lungo termine (LTS)
- Utilizza piattaforme tecnologiche con versioni LTS ben documentate e percorsi di aggiornamento.
- È necessario prevedere e prendere in considerazione gli aggiornamenti continui del sistema operativo, della lingua, del framework e del CMS per tutti i progetti, quindi tenere traccia di una versione LTS è un gioco da ragazzi.
- Tutto dovrebbe essere in esecuzione su una versione supportata. In caso contrario, dovrebbero suonare grandi campanelli d'allarme.
Buon progetto di igiene
- Avere attività di manutenzione pubblicamente nel tuo backlog di funzionalità o nel sistema di tracciamento dei problemi e concordare le priorità con il tuo cliente. Non nascondere le attività di manutenzione.
- Il livello di codice e i test funzionali ti consentono di tenere d'occhio il codice particolarmente problematico e ti aiuteranno quando si estraggono i moduli per il refactoring.
- Monitorare l'applicazione e capire dove si trovano i colli di bottiglia e gli errori. Eventuali problemi possono essere aggiunti al backlog di sviluppo e assegnati di conseguenza alle priorità.
- Monitora le richieste di supporto. Gli utenti finali forniscono feedback utili che potrebbero indicare i requisiti di manutenzione?
L'applicazione dovrebbe essere portatile
- Qualsiasi sviluppatore dovrebbe essere in grado di far funzionare facilmente il sistema in locale, non solo tu! Utilizzare server o contenitori virtuali per garantire che le versioni di sviluppo delle applicazioni siano identiche a quelle di produzione.
- La domanda dovrebbe essere ben documentata. Come minimo, i flussi di lavoro di fornitura e distribuzione e gli eventuali incantesimi speciali necessari per la distribuzione in tempo reale dovrebbero essere annotati.
La manutenzione è un vero vantaggio per tutti
La manutenzione è il lavoro che dobbiamo fare su un'applicazione in modo che possa rimanere ferma in sicurezza. È un costo aziendale standard. In media il 75% del costo totale di proprietà nel corso della vita di un'applicazione software.
Come professionisti, abbiamo il dovere di educare i nostri clienti sulla manutenzione sin dall'inizio. C'è un'enorme opportunità qui per un reddito aggiuntivo fornendo un valore tangibile ai tuoi clienti. Potrai mantenere una relazione commerciale continua e sarai la prima persona a cui si rivolgeranno quando avranno nuove esigenze.
Continuare a fornire valore attraverso il tuo fermo aumenterà la fiducia con il cliente. Avrai una piattaforma per suggerire miglioramenti o nuove funzionalità. Lavori che hai grandi possibilità di vincere. Il tuo cliente riduce i costi della vita, riduce i rischi e smette di preoccuparsi delle prestazioni o della sicurezza.
Fai un favore a te stesso, al tuo cliente e a tutto il nostro settore: aiutaci a rendere la manutenzione delle applicazioni web più pratica.