De ce întreținerea aplicațiilor web ar trebui să fie mai mult un lucru

Publicat: 2022-03-10
Rezumat rapid ↬ Aplicațiile web necesită întreținere la fel ca orice alt tip de software, dar ca industrie, nu este ceva pe care să-l subliniem suficient. Drept urmare, ne expunem clienții la un risc tangibil și lăsăm bani pe masă.

Dezvoltatorii tradiționali de software ne-au ascuns un secret la vedere. Nici măcar nu este un fapt contestat. Face parte din modelul lor de afaceri.

Nu contează dacă vorbim de furnizori de software pentru întreprinderi de vârf sau de case de software mai mici care scriu instrumentele pe care le folosim zilnic cu toții în locurile de muncă sau în afaceri, cum ar fi un manager syslog gratuit. Este chiar acolo, în față și în centru. Costuri suplimentare pe care ei nu le ascund și pe care ne-am obișnuit să le plătim.

Deci care este acest secret?

Ei bine, mulți furnizori tradiționali de software câștigă mai mulți bani din întreținerea software-ului pe care îl scriu decât fac cu vânzarea inițială.

Nu sunteți convins?

O căutare rapidă a termenului „Costul total de proprietate” vă va oferi o mulțime de definiții similare precum aceasta de la Gartner (sublinierea mea):

[TCO este] costul implementării, operațiunii, susținerii și întreținerii sau extinderii și dezafectării unei aplicații.

În plus, această lucrare a universității Stanford afirmă că întreținerea se ridică în mod normal la 60% până la 90% din TCO al unui produs software.

Merită să-l lași să intre timp de un minut . Aceștia câștigă mult peste prețul inițial de achiziție prin vânzarea de planuri de asistență și întreținere continuă.

Mai multe după săritură! Continuați să citiți mai jos ↓

Noi nu împingem întreținerea

Problema, așa cum o văd, este că în industria dezvoltării web, întreținerea aplicațiilor web nu este ceva asupra căruia ne concentrăm. S-ar putea să o punem în propunerile noastre pentru că ne place ideea de menținere lunară, dar acestea vor acoperi probabil sarcini simple de menaj sau solicitări de noi funcții.

Nu este neobișnuit să ascundem actualizările și optimizările esențiale în cadrul ofertelor noastre pentru iterațiile ulterioare, deoarece nu suntem încrezători că clientul va dori să plătească pentru lucrurile pe care le considerăm îmbunătățiri esențiale. Încercăm să-i aducem pe ușa din spate. Sau, cu alte cuvinte, nu suntem deschiși și transparenți că, la fel ca software-ul mai tradițional, aceste aplicații au nevoie de întreținere.

Indiferent de motivele pentru care, devine clar că stocăm probleme pentru viitor. Aplicațiile software pe care le construim sunt aici pe termen lung . Trebuie să gândim ca furnizorii tradiționali de software. Software-ul nostru va funcționa în continuare timp de 10 sau 15 ani de acum înainte și ar trebui să fie bine întreținut.

Deci, cum putem schimba asta? Cum ne asigurăm cu toții ca industrie că clienții noștri sunt protejați, astfel încât lucrurile să rămână în siguranță și la zi? De asemenea, cum ajungem să luăm o parte din plăcinta de întreținere ?

Ce este întreținerea?

În lucrarea din 2012, „Efective Application Maintenance”, Heather Smith și James McKeen definesc întreținerea ca (accentul este al meu):

Portarea unei aplicații pe un nou server, interfața cu un alt sistem de operare, actualizarea la o versiune mai nouă, modificarea unui tabel de taxe sau respectarea noilor reglementări - toate necesită aplicație - întreținere. Ca rezultat, întreținerea se concentrează pe actualizarea unei aplicații pentru a se asigura că rămâne productivă și/sau rentabilă . Definiția întreținerii aplicației preferată de grupul focus este — orice modificare a unei aplicații pentru a corecta defecțiunile; pentru a îmbunătăți performanța; sau pentru a adapta aplicația la un mediu schimbat sau la cerințe modificate. Astfel, adăugarea de noi funcționalități la o aplicație existentă (adică îmbunătățirea) nu este, strict vorbind, considerată întreținere .

Cu alte cuvinte, întreținerea este o muncă esențială care trebuie efectuată pe o aplicație software, astfel încât aceasta să poată continua să funcționeze în mod fiabil și sigur.

Nu adaugă funcții noi. Nu verifică fișierele jurnal sau se asigură că au rulat copiile de siguranță (acestea sunt sarcini de menaj). Lucrează la cod și la platforma de bază pentru a se asigura că lucrurile sunt la zi, că funcționează așa cum s-ar aștepta utilizatorii săi și că luminile rămân aprinse.

Iată câteva exemple:

  • Schimbări de tehnologie și platformă
    Bibliotecile terță parte necesită actualizare. Limbajul de bază necesită o actualizare, de exemplu, de la PHP 5.6 la PHP 7.1 Sistemele de operare moderne trimit actualizări în mod regulat. Menținerea la curent este întreținere și, uneori, va necesita și modificări ale bazei de cod, deoarece vechile moduri de a face anumite lucruri devin depreciate.

  • Scalare
    Pe măsură ce aplicația crește, vor apărea probleme legate de resurse. Rutinele din cod care au funcționat bine cu 10.000 de tranzacții pe zi se luptă cu 10.000 pe oră. Aplicația trebuie monitorizată, dar trebuie luate și acțiuni atunci când sunt declanșate alerte.

  • Corectarea unui bug
    Evident, dar merită explicit. Software-ul are erori și au nevoie de remediere. Chiar dacă includeți o perioadă mică de remedieri gratuite de erori după expedierea unui proiect, la un moment dat clientul va trebui să înceapă să plătească pentru acestea.

Greu de vândut?

Interesant este că atunci când discut despre asta cu colegii mei, ei simt că este dificil să convingă clienții că au nevoie de întreținere. Sunt îngrijorați că clienții lor nu au buget și nu vor să pară prea scumpi.

Ei bine, iată chestia: de fapt, este o vânzare destul de ușoară. Avem de-a face cu oameni de afaceri și pur și simplu trebuie să vorbim cu ei despre întreținere în termeni comerciali. Oamenii de afaceri înțeleg că activele necesită întreținere sau vor deveni pasive. Este doar un alt standard de cheltuieli lunare în curs de desfășurare. Un cost pentru a face afaceri. Trebuie doar să includem acest lucru în propunerile noastre și să ne asigurăm că vom urmări acest lucru .

O metodă extrem de eficientă este de a oferi un dispozitiv de reținere care încorporează întreținerea în centrul său, dar care oferă și o mulțime de valoare suplimentară pentru client, lucruri precum:

  • Raportarea progresului față de KPI-uri (de exemplu, trafic, conversii, volume de căutare)
  • Timp „liber” limitat în fiecare lună pentru mici modificări ale site-ului
  • Raportarea privind timpul de nefuncționare, actualizările de server sau munca de dezvoltare finalizată
  • Acces la dvs. sau la anumiți membri ai echipei dvs. prin telefon pentru a răspunde la întrebări

Într-adevăr, îl puteți face pe reținător să economisească banii clientului și să plătească singur. Un bun exemplu în acest sens ar fi cerința unui client de a obține un raport simplu sau de a exporta din baza de date în fiecare lună pentru procesare offline.

Puteți cita pentru un număr de zile de dezvoltare pentru a construi o interfață de utilizator de raportare – probabil mai complexă decât se presupunea inițial – sau, alternativ, să îndreptați clientul către reținerea dvs. Includeți în cadrul acestuia o sarcină în fiecare lună pentru ca un dezvoltator să ruleze manual o interogare SQL prestabilită pentru a furniza manual aceleași date.

O sarcină banală pentru tine sau echipa ta; multă valoare pentru clientul dvs.

Un exemplu practic

Desigur, veți avea propriul mod de a scrie propuneri, dar iată câteva fragmente dintr-un exemplu de prezentare.

În secțiunea propunerii dvs. în care vă puteți picta viziunea pentru viitor, puteți adăuga ceva despre întreținere. Folosiți asta ca o oportunitate de a planta sămânța despre formarea unei relații pe termen lung.

Căutați să minimizați riscul pe termen lung.

Doriți să vă asigurați că aplicația dvs. funcționează bine, că rămâne sigură și că este ușor de lucrat.

De asemenea, înțelegeți cât de importantă este întreținerea pentru orice activ al afacerii.

Mai târziu, în secțiunea de livrabile, puteți adăuga o parte despre întreținere fie ca opțiune de sine stătătoare, fie inclusă cu un dispozitiv de reținere în curs.

În exemplul următor, îl menținem simplu și îl includem într-o mențiune de dezvoltare preplătită:

Susținem cu tărie ca toți clienții să considere întreținerea ca fiind o taxă generală esențială pentru site-ul lor. Aplicațiile web moderne necesită întreținere și la fel ca casa sau mașina ta; vă păstrați activul menținut pentru a reduce riscul tangibil ca acestea să devină datorii ulterior .

În calitate de client care este dornic să țină la curent cu întreținerea aplicației, precum și să obțină noi funcții adăugate, am sugera N zile pe lună (ca punct de plecare) pentru întreținerea generală și menținerea dezvoltării.

Am împărți lucrurile astfel încât un dezvoltator să lucreze la sistemul dvs. cel puțin [o perioadă pe săptămână/lună], oferindu-vă avantajul distinct de a avea un dezvoltator capabil să treacă la ceva mai important în cazul în care apar probleme în [aceeași perioadă] . În funcție de prioritățile dvs., acest timp ar putea fi cheltuit cu funcții noi sau împărțit cu întreținere, este chemarea dvs. În mod normal, sugerăm o împărțire de 75%/25% între funcțiile noi și întreținerea importantă.

După cum s-a menționat anterior, aceasta este, de asemenea, o oportunitate excelentă de a combina întreținerea cu alte servicii cu valoare adăugată, cum ar fi raportarea performanței, efectuarea de sarcini de menaj, cum ar fi verificarea backup-urilor și poate un apel lunar pentru a discuta progresul și prioritățile.

Ceea ce veți găsi probabil este că, după ce ați aterizat lucrarea, elementul de reținere nu este menționat din nou. Acest lucru este de înțeles, deoarece aveți multe de luat în considerare pentru dvs. și clientul dvs. la începutul unui proiect, dar, pe măsură ce proiectul se încheie, este un moment grozav pentru a-l reintroduce ca parte a procesului de retragere a proiectului.

Fie că este vorba despre faza 2 sau pur și simplu introducerea facturilor finale și predarea, amintiți-le despre întreținere. Amintește-le de formarea continuă, raportarea și disponibilitatea pentru asistență . Faceți impuls pentru un reținut, amintindu-vă să vorbiți în aceiași termeni comerciali: noul lor activ trebuie menținut pentru a rămâne strălucitor .

Întreținerea poate fi enervantă?

O concepție greșită obișnuită este că elementele de menținere pot deveni o povară suplimentară. Îngrijorarea este că clienții vă vor suna în mod constant și vă vor cere mici ajustări ca parte a reținerii dvs. Aceasta este o preocupare specială pentru echipele mai mici sau consultanții individuali.

De obicei nu este cazul, totuși. Poate că la început, clientul va avea o listă de probleme care trebuie rezolvate, dar aceasta este normală pentru curs; dacă ai experiență, atunci te aștepți. Acestea sunt ușor de gestionat prin îmbunătățirea canalelor de comunicare (utilizați un instrument de urmărire a problemelor) și gruparea tuturor solicitărilor împreună, adică, lucrând la ele într-o singură lovitură.

Pe măsură ce aplicația se maturizează, veți trece într-un mod de trecere. Acesta este locul în care reținerea devine deosebit de valoroasă pentru ambele părți. În mod evident, depinde de modul în care ați structurat reținerea, dar din perspectiva dvs., vă străduiți să reamintiți clientului în fiecare lună cât de valoros sunteți. Le puteți trimite raportul dvs. lunar, le puteți spune cum ați remediat o încetinire a acelei rutine și că serverul a fost corectat pentru exploit-ul global al sistemului de operare din această săptămână.

Desigur, erați disponibil și pentru a lucra la o serie de funcții noi solicitate, care erau taxabile suplimentar . Din perspectiva clientului dvs., ei văd că sunteți acolo, văd progrese și reușesc să elimine „îngrijorarea pentru site-ul web” din lista lor. În mod clar, „acești clienți” există, totuși, așa că cel mai important lucru este să vă corectați formularea reținutului și să gestionați așteptările în consecință.

Dacă clientul dvs. așteaptă luna pe stick pentru o taxă lunară mică, respingeți sau renegociați. Să vă plătească pentru a face - să zicem - două ore de întreținere și menaj pe lună, printre furnizarea unui raport lunar și alte sarcini auxiliare este exact asta; nu este un cec în alb pentru a face o mulțime de modificări ad-hoc. Amintește-le ce este inclus și ce nu.

Cum facem întreținerea mai ușoară?

În cele din urmă, pentru a asigura cea mai bună valoare pentru clienții dvs. și pentru a vă ușura viața, utilizați unele dintre aceste tactici atunci când vă construiți aplicațiile.

Asistență pe termen lung (LTS)

  • Utilizați platforme tehnologice cu lansări LTS bine documentate și căi de upgrade.
  • Ar trebui să fie așteptate și luate în considerare actualizările în curs de desfășurare a sistemului de operare, a limbii, a cadrului și a CMS-ului pentru toate proiectele, astfel încât urmărirea unei versiuni LTS este o idee simplă.
  • Totul ar trebui să ruleze pe o versiune acceptată. Clopotele mari de alarmă ar trebui să sune dacă nu este cazul.

Igienă de proiect bună

  • Aveți sarcini de întreținere în mod public în stocul de funcții sau în sistemul de urmărire a problemelor și convineți asupra priorităților cu clientul dvs. Nu ascunde sarcinile de întreținere.
  • Testele la nivel de cod și funcționale vă permit să fiți cu ochii pe codul deosebit de problematic și vă vor ajuta atunci când scoateți module pentru refactorizare.
  • Monitorizați aplicația și înțelegeți unde sunt blocajele și erorile. Orice probleme pot fi adăugate la stocul de dezvoltare și pot fi prioritizate în consecință.
  • Monitorizați cererile de asistență. Vă oferă utilizatorii finali feedback util care ar putea indica cerințele de întreținere?

Aplicația ar trebui să fie portabilă

  • Orice dezvoltator ar trebui să poată pune în funcțiune sistemul cu ușurință la nivel local - nu doar tu! Utilizați servere sau containere virtuale pentru a vă asigura că versiunile de dezvoltare ale aplicațiilor sunt identice cu cele de producție.
  • Aplicația ar trebui să fie bine documentată. Cel puțin, fluxurile de lucru de furnizare și implementare și orice incantații speciale necesare pentru a fi implementate în viață ar trebui să fie notate.

Întreținerea este un adevărat câștig-câștig

Întreținerea este munca pe care trebuie să o facem asupra unei aplicații, astfel încât aceasta să poată sta nemișcată în siguranță. Este un cost standard de afaceri. În medie, 75% din costul total de proprietate pe durata de viață a unei aplicații software.

În calitate de profesioniști, avem datoria de grijă să ne educăm clienții despre întreținere încă de la început. Există o oportunitate uriașă aici pentru venituri suplimentare, oferind în același timp valoare tangibilă clienților dumneavoastră. Vei putea menține o relație comercială continuă și vei fi prima persoană la care se adresează atunci când au noi cerințe.

Continuând să oferiți valoare prin reținerea dvs. va construi încrederea cu clientul. Veți primi o platformă pentru a sugera îmbunătățiri sau funcții noi. Muncă pe care ai șanse mari să o câștigi. Clientul dvs. își reduce costurile pe durata de viață, își reduc riscul și nu își mai face griji pentru performanță sau securitate.

Fă-ți tie, clientului tău și întregii noastre industrie o favoare: ajută la ca întreținerea aplicațiilor web să devină mai mult un lucru.