Di tanto in tanto mi sento esausto nei miei sforzi di sviluppo del software perché sono spinto a pensare e sviluppare in modo molto specifico e brevissimo. Un cliente qui e ora richiede una funzione e io dovrei implementarla per lui. Né il cliente, né la gestione della mia azienda sono interessati a investire un po 'di tempo e sforzi nell'indagine su come possiamo rendere questa funzione adattabile e più generale (ad esempio, introdurre la configurazione anziché codificare un ramo della funzionalità) per altri client o per un uso futuro.
Da un lato questa potrebbe essere una decisione commerciale sbagliata. Dall'altro lato è certamente una cattiva decisione delle risorse umane. Gli antichi maestri raggiunsero l'eccellenza proprio perché costruivano o costruivano i loro manufatti per il futuro, per le generazioni a venire, per l'eternità. Forse gli sviluppatori di software possono raggiungere una padronanza ed un'eccellenza simili se sono autorizzati a creare software per l'eternità?
Quindi - ci sono criteri tecnici (best practice, standard di settore, ecc.) per la costruzione di software manutenibile ed evolutivo, criteri che determinano il livello richiesto di generalizzazione e sicurezza per l'implementazione di funzionalità specifiche?
Il mio dominio di applicazione è la contabilità e il software aziendale (backoffice).