Hai pianificato di riscrivere? [chiuso]

0

Ogni volta che lavoro su un pezzo di codice abbastanza significativo, spesso scopro che passo attraverso una fase di progettazione di alto livello (a parte: mi piace usare la matita e la carta per questo), seguita da procedure mentali per evidenziare i difetti e fare raffinamenti.

Vedo la codifica come un altro livello (e la più fine) di walkthrough mentale: devi considerare e coprire ogni eventualità e questo spesso si traduce in un ulteriore perfezionamento del design. Di solito trovo alla fine del processo che è stato appreso abbastanza che se stavo progettando e scrivendo di nuovo il codice ci sono cose che potrei fare meglio. E alcune di queste cose sono forse troppo "covate" nella struttura del codice per giustificare il tempo necessario per apportare le modifiche.

Spesso mi sembra che in un mondo ideale avessi sempre in programma di passare attraverso il processo di cui sopra con l'intenzione di usarlo come un processo di apprendimento e di pianificare di riscrivere. Notando che molti dei dadi e dei bulloni del codice (ad esempio le subroutine di basso livello) saranno riutilizzabili, quindi non è una riscrittura bottom up completa .

    
posta redcalx 24.02.2015 - 18:47
fonte

2 risposte

2

Tutto ciò che dici nella tua domanda è assolutamente vero, anche se ho la sensazione che molte aziende non passino attraverso lo stesso processo di pensiero di te.

Il tuo processo di pensiero è (più o meno, per ogni pezzo di codice significativo) "Ho bisogno di un giorno per scriverlo, un giorno per il debug e un giorno per refactoring". La tua azienda sta dicendo "Hai bisogno di un giorno per scriverlo".

La tua azienda sa che time to market è tutto; un pezzo marginale di software che colpisce l'oro primo spesso conquista quote di mercato rispetto al ritardatario molto lucido. È anche peggio di così; il primo al mercato non è sempre quello che colpisce l'oro; spesso, una società deve passare attraverso molte iterazioni di un prodotto prima che piaccia alla gente e accettarla. King ha scritto quasi un centinaio di giochi prima che uscisse Candy Crush, e Candy Crush rappresenta qualcosa come il 75% delle loro entrate.

Di conseguenza, le aziende spingeranno quasi sempre a far uscire il prodotto a spese della chiarezza e dell'eleganza del codice. Non è la posizione più comoda per essere uno sviluppatore di software, ma è una sfida incontrata da coloro che possono bilanciare la necessità di rispettare le scadenze con la necessità di ridurre il debito tecnico il più possibile.

Inoltre, ricorda che il feedback dei clienti è fondamentale. Il software non rilasciato non riceve feedback dai clienti e non guadagna soldi. Quanto prima viene rilasciato un prodotto (coerente con la stabilità e un set di funzionalità ragionevole), prima puoi scoprire che cosa il cliente vuole davvero. Questa è la ragione principale per cui le metodologie agili che ottengono presto il feedback dei clienti sono ora favorite rispetto a metodologie "big design up front" come waterfall.

    
risposta data 24.02.2015 - 18:57
fonte
0

Stai descrivendo un componente principale di codice pulito .

Indipendentemente dal modo in cui pensi progetti qualcosa in anticipo, lo sviluppo è un processo iterativo che richiede cambiamenti. Si inizia con la panoramica di alto livello di un sistema e si progetta di conseguenza. Forse stai passando attraverso diverse idee prima di sistemarti sull'idea giusta.

Quindi inizi a immergerti leggermente più in dettaglio. Forse vedi che il tuo design originale deve essere cambiato. Forse ha bisogno di essere completamente sostituito. Questa è una conseguenza naturale di un approccio top-down al design che è così comune nel nostro settore.

Se sviluppi usando un approccio iterativo (chi usa più Waterfall?), i dettagli passano necessariamente da grossi (primi sprint) a dettagli (sprint successivi) mentre codifichi sempre più funzionalità. Ciò potrebbe comportare la modifica del codice precedente per funzionare meglio con i requisiti implementati nelle iterazioni successive.

Questo è naturale e buono: accetta la modifica .

    
risposta data 24.02.2015 - 19:07
fonte

Leggi altre domande sui tag