Vi è mai capitato di iniziare un a progettare software e poi durante l’implementazione ci si ritrova a ridiscutere o modificare grosse parti dello stesso? A me capita e spesso mi rendo conto che:
- La soluzione iniziale era troppo complicata o prevedeva cose insensate;
- Sto reinventando la ruota, forse c’è qualcosa che posso scaricare/riutilizzare.
Nella quotidianità c’è un feedback molto stretto tra l’implementazione e la progettazione. Per la mia esperienza di solito vanno pari passo e molta progettazione viene fatta durante l’implementazione.
La conclusione a cui sto arrivando è che forse cominciare a scrivere codice dopo aver pianificato troppo ha la stessa utilità che scrivere codice senza pianificazione alcuna.
È probabile inoltre che nel mondo software non sia possibile fare una progettazione completa (esempio con UML), consegnarla a sulla scrivania a un programmatore e avere l’aspettativa che il lavoro si completerà con successo. È improbabile riuscire a progettare un’applicazione per il mondo reale interamente su fogli di carta e poi cominciare a farla. Fare dei prototipi via via che il progetto prosegue è utile per raccogliere informazioni sulla fattibilità, le performance e problemi a cui non si era pensato.
Se vogliamo essere bravi sviluppatori dovremmo sempre prendere decisioni basate sui fatti e sull’esperienza. Una stretta relazione tra implementazione e progettazione permette tutto ciò. Se vogliamo essere bravi sviluppatori, che ci piaccia o meno, dobbiamo darci una mossa e battere tasti per scrivere quel dannato codice.