Ho ereditato un progetto che è accumulato, strato su strato, come una perla negli ultimi sei anni. È iniziato come una pagina Web per consentire al cliente di verificare lo stato del proprio lavoro in produzione, ed è diventato un vero e proprio sistema di carrello degli acquisti con una varietà di funzionalità specifiche del dominio, che implicano la visualizzazione di grafica personalizzata. Niente di estremamente impegnativo, anche se con molti elementi piuttosto particolari per questo client.
Il problema è che il codice è super crufty, il che non è sorprendente considerando il suo patrimonio: è come una gigantesca palla di nastro adesivo a questo punto, incluso lo schema del database; ed è davvero difficile avvolgere la testa per questo motivo, e anche perché gli sviluppatori che ne erano stati incaricati negli ultimi sei anni non erano sviluppatori web e in qualche modo hanno inventato tutto mentre andavano.
Comunque, il sistema ha successo e è utile, e al cliente piace, al punto che regolarmente vogliono aggiungere nuove cose ad esso. Ma è davvero difficile aggiungere nuove cose perché è fragile, e sono sempre più incline a eliminare tutti i nuovi sviluppi sulla vecchia base di codice e riscrivere la cosa in Rails (è tutto PHP personalizzato al momento). La domanda è, dovrebbe I?
Ragioni contrarie:
- È sempre più lavoro ridisegnare un'applicazione di quanto pensi possa essere
- Soprattutto quando lo stai rifacendo in una lingua diversa e in un framework diverso
- Il mantenimento di due basi di codice (per un po ') sarà un lavoro extra
- Potrebbe essere meglio riscrivere in modo incrementale, tenerlo in PHP e riprogettarlo mentre andiamo
Motivi per:
-
A questo punto l'aggiunta di nuove funzionalità richiede di dividere la cosa e cercare di capire cosa ho rotto. Una riprogettazione si ripagherebbe in breve tempo, quando questo processo divenne più regolare e meno caotico
-
Le esigenze del cliente sono cambiate sostanzialmente negli ultimi sei anni, e sarebbe bello vederle riflesse dall'inizio nell'architettura
-
Entrare in un framework popolare e ampiamente supportato e ben compreso ci darà il lusso di non reinventare la ruota per ogni parte del sistema e consentirci di utilizzare componenti di alta qualità che altre persone hanno fatto
Ad ogni modo, ottieni il punto. Mi alternano tra ciò che penso sia la cosa giusta da fare. Ho sviluppato un buon rapporto con il cliente e hanno fiducia in me, quindi probabilmente faranno ciò che raccomando. Qualcuno che è stato qui prima ha qualche consiglio?