Lo sviluppatore ha smesso di rispondere. Forse è andato altrove, forse il rapporto è finito male, forse semplicemente ha smesso di farsi sentire. Il software continua a funzionare, ed è questa la parte che fa aspettare le persone più di quanto dovrebbero - funziona, quindi non è ancora un'emergenza.
È un'emergenza. Ogni settimana che aspetti scade qualcosa che non sapevi fosse intestato a qualcun altro.
Controlla queste cinque cose oggi
Non la settimana prossima. Ognuna di queste si può recuperare finché l'account è ancora attivo e diventa un costoso problema legale una volta scaduto.
- Il registrar del dominio. Cerca il tuo dominio su un servizio WHOIS. Se l'intestatario non sei tu o la tua azienda, non controlli il tuo stesso indirizzo. È questa la cosa che fa chiudere le aziende.
- Il DNS. Spesso è presso un fornitore diverso dal registrar. Chi controlla il DNS controlla dove va a finire la tua posta.
- Il server o l'account di hosting. Su quale carta viene addebitato? Una carta scaduta sull'account di qualcun altro cancella il tuo sito con un'email automatica che nessuno legge.
- Il repository del codice. GitHub, GitLab, Bitbucket. Se non l'hai mai visto, dai per scontato di non averlo.
- Gli account di terze parti. Il servizio di pagamento, quello di fatturazione, il gateway SMS, l'analytics. Ognuno è un accesso separato e ognuno può essere disdetto senza di te.
Scrivi quello che trovi. Quella lista è lo stato reale della tua proprietà, ed è di solito peggiore di quanto suggerisca il contratto.
"Il codice è nostro" non è la stessa cosa che possedere il sistema
Quasi tutti i contratti cedono il diritto d'autore sul codice sorgente, e quasi tutti i clienti lo leggono come proprietà. È una cosa più piccola di quanto sembri.
Possedere il codice significa che puoi usarlo e modificarlo legalmente. Non significa che ne hai una copia, che qualcuno sia in grado di farlo funzionare, che gli account con cui parla siano tuoi, o che la persona che sa perché è stato costruito così sia obbligata a spiegartelo. Ho ereditato sistemi in cui il cliente aveva un diritto d'autore perfettamente valido su un software di cui non riusciva a fare il deploy, su un server a cui non riusciva ad accedere, con chiavi API registrate a un indirizzo email personale presso un'azienda che non esisteva più.
La proprietà è una lista di controllo, non una clausola.
Che cosa di solito si salva
Più di quanto la gente tema. Che il codice sia sconosciuto non è la stessa cosa che sia scritto male, e il software ereditato ha una reputazione che non sempre merita - un sistema scritto da qualcun altro sembrerà sempre peggiore di uno scritto da te, perché non puoi vedere il ragionamento che c'è dietro.
Quello che decide davvero è più ristretto della qualità del codice:
- I dati sono integri ed esportabili? È l'unica parte insostituibile. Il codice si può riscrivere in qualche settimana; cinque anni di anagrafiche clienti non si possono ricostruire affatto.
- Si riesce ancora a fare il deploy? Un sistema che nessuno sa ricostruire dal sorgente è un sistema che gira su una macchina che non devi mai riavviare.
- Le dipendenze sono ancora supportate? Un framework indietro di tre versioni principali è una spesa, non un blocco.
- Le credenziali si possono recuperare? Le chiavi si possono riemettere. Il problema sono gli account che le contengono.
Nota che nessuna di queste è "il codice è elegante". Ho stabilizzato in una settimana sistemi davvero brutti perché i dati erano puliti e il deploy funzionava, e ho consigliato di sostituire sistemi ordinati dove non era vera né l'una né l'altra cosa.
La risposta onesta è spesso "meno di quanto pensi"
Le persone arrivano aspettandosi di sentirsi dire che va rifatto tutto, in parte perché è quello che ha detto loro l'ultimo che ha fatto un preventivo. A volte è vero. Più spesso il sistema è solido e a rompersi è stato tutto quello che gli sta intorno: nessuno riusciva a fare il deploy, i backup non sono mai stati testati e una sola persona teneva tutti gli account.
Questa è una settimana di lavoro e un passaggio di consegne, non una riscrittura. Preferisco dirti questo e prendermi una settimana di lavoro piuttosto che venderti sei mesi di cui non avevi bisogno - in parte perché è la verità, e in parte perché il cliente a cui è stata detta la verità è quello che torna.
Come non ritrovarti di nuovo qui
Chiunque ingaggerai la prossima volta, pretendi questo prima che venga scritta la prima riga, non alla fine: ogni account viene creato a tuo nome, da te, e lo sviluppatore viene aggiunto. Non trasferito alla consegna. Creato tuo fin dall'inizio.
Non costa niente, richiede un pomeriggio, ed è tutta la differenza tra un cambio di fornitore e una crisi. Se uno sviluppatore fa resistenza, hai imparato presto qualcosa di prezioso, quando impararlo costa ancora poco.
Il resto dello standard di consegna - documentazione, test, un deploy che il tuo team sappia eseguire da solo - è sulla mia pagina dei servizi, e il motivo per cui ci tengo così tanto è in questa nota su chi usa davvero il tuo software.