C'è un approccio molto semplice e pratico a questo, che funziona per una vasta gamma di progetti di piccole e medie dimensioni. Anche se probabilmente non funzionerà bene per Mars Explorers.
In primo luogo, stabilisci cosa vuoi che faccia il sistema e prendi nota di ognuna delle singole funzioni. Questo può essere sofisticato come un intero storyboard per l'utente o semplice come alcuni punti elenco annotati su un foglio di carta di fronte a voi. Ma è importante che tu sappia che vuoi che faccia.
In base a ciò viene definita la struttura generale del sistema. Ancora una volta, questo è molto spesso solo un rapido disegno delle diverse classi / moduli e di come si relazionano tra loro, ma potrebbe essere complesso come un intero documento. L'importante è che tu abbia una sorta di idea di come stai per implementare il sistema. Ma questo probabilmente si perfezionerà mentre ci lavori, quindi non cercare di andare a dettagli complessi e dettagliati.
Tra tutte queste funzioni, trovi le cose fondamentali che il programma deve fare: le funzionalità principali.
Quindi implementali uno per uno. Ora, la cosa fondamentale qui è che, in realtà, assicurarsi che una volta implementata una funzione sia fatto e pienamente funzionante, idealmente questo è accompagnato da un test unitario che assicura che funzioni sempre. Di solito vado sul presupposto che sarò così impegnato che non avrò mai il tempo di tornare alla funzione e sistemarla.
Una volta implementate le funzionalità principali, in genere cerco di utilizzare il sistema il più vicino possibile all'ambiente di produzione. Questo ti dà a) eventuali bug che potresti aver perso prima e b) hai una buona idea della priorità delle prossime funzionalità.
Quindi puoi continuare a implementare le funzionalità rimanenti secondo necessità.
Qualità del codice e caratteristiche
Tenendo presente quanto sopra, tendo a sacrificare le funzionalità rispetto alla qualità del codice, se devo rispettare una scadenza. Semplicemente perché, almeno nella mia linea di lavoro, quando finisco qualcosa, la mia gestione assume che sia fatta. E che possano darmi il prossimo compito. Non ho molto tempo per rendere il codice più carino dopo il fatto.
Ora, che ne è della gestione delle eccezioni?
Se non vuoi implementarlo, puoi semplicemente elencarlo come un'altra caratteristica della lista. E quando ci arrivi, puoi implementarlo. Ma molto probabilmente nel tuo caso ci sono probabilmente molte altre cose che sono più importanti prima.
Tuttavia, c'è un requisito minimo per le eccezioni: assicurati che l'utente sia informato se qualcosa va storto, non importa quanto brutto possa essere l'output. Non ingoiare le eccezioni da qualche parte.