Ho avuto il lusso di progettare diversi database di media complessità, tutti utilizzati nelle aziende, con vari front-end tra cui web, Access e C #.
Di solito, mi sono seduto e ho elaborato in anticipo lo schema del database. Questo ha sempre avuto più senso per me. Tuttavia, non c'è stato un singolo caso in cui non ho finito per apportare modifiche, aggiungere nuovi tavoli o vivere con aspetti che mi davano fastidio ed erano praticamente troppo tardi per risolvere.
Non credo che la cura sia scrivere prima il codice. E non penso che il problema sia "requisiti aziendali insufficienti" o almeno non uno che avrebbe potuto essere risolto completamente. Gli utenti non sanno di cosa hanno bisogno e non ho il potere di farli pensare in modo più duro o essere più intelligenti o più consapevoli o rispondere meglio alle mie domande. Oppure discutono e mi viene ordinato di fare qualcosa in un certo modo.
I sistemi che costruisco sono di solito in nuove aree in cui nessuno è mai entrato prima. Non ho il buy-in da parte dell'organizzazione, delle risorse o degli strumenti per fare il tipo di lavoro che un team di sviluppo di professionisti del design di alto livello potrebbe ricevere in una squadra dieci volte quello che faccio per costruire le cose due volte.
Sono bravo in quello che faccio. Ma c'è solo uno di me che lo fa in un ambiente che "non fa sviluppo".
Detto questo, sto migliorando nello scoprire le regole aziendali. E vedo una specie di terza opzione:
Prima di progettare il database e prima di scrivere qualsiasi codice, disegnare schermate grezze che mostrano come funzionerà l'applicazione. Devono essere disegnati a mano per impedire a chiunque di commentare font o dimensioni o dimensioni - si desidera solo la funzione.
Con i lucidi e i pezzi di carta è possibile passare da una parte all'altra, fare in modo che una persona sia il computer, due siano utenti non tecnici esperti in materia (due in modo che parlino ad alta voce) e una persona lì come facilitatore che prende appunti e disegna fuori gli utenti sui loro processi di pensiero e confusioni. Gli utenti "fanno clic" e trascinano e scrivono nelle caselle, il "computer" aggiorna lo schermo e tutti possono sperimentare il design. Imparerai cose che altrimenti non avresti potuto imparare fino a lontano nel processo di sviluppo.
Forse mi sto contraddicendo, forse è una scoperta dei requisiti migliori. Ma l'idea è di progettare prima l'applicazione, senza scrivere alcun codice. Ho iniziato a farlo su piccola scala e funziona! Nonostante i problemi nel mio ambiente, mi sta aiutando a progettare meglio il database dall'inizio. Ho appreso che una colonna deve spostarsi in una nuova tabella padre perché ci sono più tipi. Apprendo che la lista di lavoro deve avere ordini permanenti che non provengono dal sistema di ordini integrato. Imparo ogni sorta di cose!
Secondo me, questa è una vittoria enorme.