Attualmente sto lavorando in un'azienda con altri 2 sviluppatori PHP oltre a me e uno sviluppatore junior.
Lo sviluppatore senior che ha originariamente costruito il sistema su cui stiamo lavorando ha rassegnato le dimissioni e sarà qui solo per alcune settimane. L'altro sviluppatore, che è l'unico altro ragazzo che sa qualcosa del sistema, è infelice qui e sta cercando un nuovo lavoro. Sono molto reale il pericolo di essere lasciato indietro come l'unico sviluppatore esperto su questo codebase.
Da quando mi sono unito a questa azienda ho cercato di spingere per migliori standard di codifica, documentazione di progetto, ecc. Penso di aver fatto qualche progresso, ma la stragrande maggioranza del codice è semplicemente intrattabile e non commentata. Molto di questo ha a che fare con la necessità di fare le cose velocemente nei punti del progetto prima di aderire, ma ora il debito tecnico è enorme, anche con i due sviluppatori che capiscono il sistema a bordo. Senza di loro, sarà semplicemente impossibile fare qualcosa con esso. Lo sviluppatore senior sta lavorando per provare almeno a commentare tutto il suo codice prima che se ne vada, ma penso che il codebase sia semplicemente troppo vasto per documentare correttamente nel tempo rimanente. Inoltre, quando commenta, non rende le cose più chiare che potrebbe.
Se il sistema era meglio organizzato e documentato, potrei probabilmente iniziare a refactarlo in modo incrementale, ma il tutto è così strettamente accoppiato che è molto difficile apportare modifiche in un modulo senza avere effetti involontari a catena in altri moduli. Naturalmente, non ci sono nemmeno test unitari, e onestamente non penso che questo codice base possa eventualmente essere testato unitamente in ogni caso dato il modo in cui è implementato.
Inoltre, sembra che non ci sia mai abbastanza tempo per fare le cose anche con 3 sviluppatori e 1 sviluppatore junior. Con uno sviluppatore e uno junior, nessuno dei quali ha avuto un input significativo nella progettazione iniziale del sistema, non vedo come si possa ottenere qualcosa con il mantenimento del sistema attuale, implementando nuove funzionalità come necessario e sviluppando un sostituto per l'attuale base di codice che è meglio organizzata.
C'è un approccio che posso adottare per far fronte a questa situazione, o dovrei ricevere il mio CV in ordine a questo punto? Se solo io e il progettista junior restassimo, opterei per quest'ultima opzione quasi senza fare domande. Tuttavia, c'è anche un team di sviluppatori front-end e gestori di contenuti, e sono preoccupato che ne sarebbe di loro se me ne andassi e li mettessi in una posizione in cui non ci sarebbero affatto sviluppatori. Il dipartimento potrebbe essere chiuso completamente in tali circostanze, e quindi avrei anche la loro disoccupazione sulla mia coscienza!