Penso che la tua domanda crei qualcosa di una falsa dicotomia. In realtà, la decisione non è binaria ("faccio codice lentamente e con attenzione, o in modo rapido e spericolato?"), Ma è piuttosto su uno spettro. Le due opzioni che hai presentato sono all'estremo.
Esattamente dove lo spettro che si desidera dipende molto dal particolare prodotto su cui si sta lavorando e da ciò che i clienti si aspettano da voi. È necessario esaminare i vincoli con i quali si sta lavorando e quindi prendere una decisione intelligente sul tipo di processo che si desidera utilizzare.
Ad esempio, se sei in una posizione in cui è molto costoso correggere gli errori o dove i guasti sono potenzialmente catastrofici, vuoi essere più vicino all'opzione # 2. Software incorporato, guida missilistica codice e strumenti medici sono buoni esempi. Quando correggere un bug significherebbe richiamare milioni di dollari di hardware, o quando il tuo errore potrebbe causare la morte di persone, devi assicurarti di averlo fatto bene la prima volta.
L'altra estremità dello spettro è quando l'ambiente aziendale richiede modifiche rapide del codice, ma è facile correggere gli errori e le sanzioni per il fallimento sono basse. Le applicazioni Web spesso si adattano a questa descrizione. I tuoi utenti chiedono a gran voce nuove funzionalità e modifiche alla logica di business e le vogliono implementate ieri. Se viene commesso un piccolo errore nel codice, occorrono 15 minuti per modificare lo script incriminato, ottenere il codice di modifica rivisto e correggerlo. In questo caso, finché gestisci correttamente le aspettative degli utenti, impareranno a ignorare il bug occasionale a patto che tu risponda alle loro esigenze e mantenga un tempo di risposta rapido. Ovviamente, anche adottando questo approccio, dovresti comunque disporre di protezioni per prevenire i guasti catastrofici: mantieni i backup, esegui revisioni del codice e assicurati di avere un buon hotfix / processo di ripristino.
Penso che la realtà dello sviluppo del software sia che la maggior parte dei progetti giacciono da qualche parte tra questi due estremi. Di solito vuoi essere diligente nel prevenire i bug, ma potresti non volere un ciclo di rilascio di un anno a causa di un pesante processo di controllo della qualità.
A parte i fattori ambientali che ho citato prima, penso che il modo migliore per capire esattamente dove dovresti essere è valutare il feedback degli utenti. Se sono frustrati dai lunghi tempi di attesa per le nuove funzionalità, potresti voler ridurre leggermente il processo di controllo qualità per essere più reattivo. Assicurati di essere extra veloce per correggere eventuali bug che potresti introdurre. D'altro canto, se richiedono un'assoluta affidabilità, assicurati di disporre di sufficienti tutele per soddisfare al meglio quella richiesta.