Se întâmplă mai des decât ar trebui: freelancerul nu mai răspunde la telefon, firma care a făcut aplicația s-a închis sau angajatul care știa totul a plecat. Site-ul sau aplicația funcționează, deocamdată. Dar nimeni nu mai știe cum e construită, unde rulează sau ce se întâmplă dacă o atingi.
Vestea bună: aproape orice proiect abandonat poate fi preluat. Important e să faci pașii în ordinea corectă, iar primul nu are legătură cu codul.
Primul pas: recuperează accesul
Înainte de orice modificare, află ce ai și cine controlează fiecare piesă. De multe ori, conturile sunt pe numele dezvoltatorului, iar asta devine problema principală.
| Ce | Ce verifici | De ce contează |
|---|---|---|
| Domeniul | la ce registrar e, pe numele cui, când expiră | dacă expiră, site-ul și emailul dispar |
| Găzduirea, serverul | cine are acces, cine plătește | fără acces, nu poți face nimic |
| Codul sursă | unde e (un depozit Git, o arhivă, doar pe server) | fără cod, orice modificare devine o reconstrucție |
| Baza de date | unde e, dacă există copii de siguranță | datele sunt adesea cel mai valoros lucru |
| Conturile de administrare | cine le are, dacă poți reseta parolele | ca să poți lucra, nu doar privi |
| Serviciile externe | plăți, email, hărți, SMS, facturare: conturi și chei de acces | o cheie expirată poate opri plățile sau emailurile |
| DNS și certificatul SSL | cine le administrează, când se reînnoiesc | un certificat expirat sperie clienții |
| Conturile din magazinele de aplicații | pe numele cui sunt aplicațiile din App Store și Google Play | fără ele, nu mai poți publica actualizări |
Nu lăsa domeniul să expire
Dintre toate, domeniul e cel mai urgent. Dacă expiră și nu e reînnoit, cineva îl poate înregistra în locul tău. Află cât mai repede pe numele cui e și când expiră.
Cum evaluăm codul
După ce avem acces, facem o evaluare tehnică. Nu ca să criticăm munca altcuiva, ci ca să știm pe ce călcăm.
- Facem o copie completă. Codul, baza de date, fișierele încărcate, configurările. Nimic nu se modifică înainte să existe o copie din care putem reveni.
- Pornim proiectul pe un mediu separat. Dacă îl putem rula și pe alt server decât cel de producție, înțelegem ce îi trebuie ca să funcționeze și putem testa fără riscuri.
- Verificăm versiunile. Multe proiecte abandonate rulează pe versiuni care nu mai primesc actualizări de securitate. La PHP, de exemplu, versiunea minimă pe care o considerăm sigură azi este 8.3; un proiect pe o versiune mai veche trebuie actualizat1.
- Verificăm dependențele. Bibliotecile, modulele și temele folosite, cu vulnerabilitățile lor cunoscute.
- Citim codul și arhitectura. Cât de clar e organizat, cât e scris de mână și cât vine dintr-o platformă, unde sunt părțile fragile, dacă există teste și documentație.
- Scriem un raport. Ce am găsit, ce riscuri sunt, ce e urgent, ce poate aștepta și cât costă fiecare variantă.
Repari, refactorizezi sau rescrii?
Prima tentație, după ce vezi un cod dezordonat, e să-l arunci și să o iei de la capăt. Adesea e o greșeală. Joel Spolsky a numit rescrierea de la zero „cea mai proastă greșeală strategică” pe care o poate face o firmă de software, cu exemplul Netscape, care a pierdut ani întregi rescriindu-și browserul2. Codul vechi, oricât de urât, conține ani de corecturi și de cazuri speciale pe care nimeni nu le mai ține minte.
Pe de altă parte, uneori fundația chiar nu mai poate fi salvată: tehnologie abandonată, securitate imposibil de reparat sau o arhitectură care nu poate susține ce îți trebuie. Am scris despre asta și în articolul despre aplicațiile făcute prin vibe coding.
| Situația | Ce recomandăm de obicei |
|---|---|
| Codul e rezonabil, doar neîntreținut | reparăm: actualizări, securitate, copii de siguranță, documentație |
| Codul merge, dar e greu de modificat | refactorizăm: îl reorganizăm pe bucăți, fără să schimbăm ce face |
| Tehnologia e depășită sau fundația e greșită | înlocuim treptat: părțile noi se construiesc alături, iar cele vechi se scot pe rând |
| Proiectul e mic sau aproape nefuncțional | rescriem: mai ieftin decât să reparăm |
Varianta din penultimul rând are și un nume: Martin Fowler o numește „strangler fig”, după smochinul care crește în jurul unui copac și îl înlocuiește treptat3. Aplicația continuă să funcționeze tot timpul, iar riscul e împărțit în pași mici.
Ce urmează după preluare
- Stabilizăm. Copii de siguranță automate, actualizări de securitate, monitorizare. Proiectul nu mai e în pericol.
- Documentăm. Cum se instalează, cum se publică o versiune nouă, unde sunt conturile și cheile. Ca să nu mai depinzi de memoria unui singur om.
- Dezvoltăm mai departe. Abia acum adăugăm funcții noi, pe o bază pe care o înțelegem.
Cum te protejezi data viitoare
- domeniul, găzduirea și conturile serviciilor externe pe numele firmei tale;
- acces la depozitul de cod, nu doar la server;
- documentație tehnică predată odată cu proiectul;
- un contract care spune clar ale cui sunt codul și datele.
Ai un proiect rămas fără dezvoltator? Facem întâi evaluarea, ca să știi exact ce ai, ce riscuri sunt și ce variante există, înainte să decizi ceva.
PHP, Supported Versions. ↩
Joel Spolsky, Things You Should Never Do, Part I, 2000. ↩
Martin Fowler, Strangler Fig Application. ↩
Imaginea de copertă: I Am Svoboda, Wikimedia Commons (CC0)
