Con la tua domanda, credo che tu stia chiedendo in che misura lo sviluppo futuro sarà in grado di minimizzare la quantità di lavoro che uno sviluppatore di software dovrà fare. Anche se hai un'intelligenza artificiale in grado di scrivere tutto il tuo programma, devi ancora dirgli cosa fare, proprio come per un costruttore di macchine automatiche, devi comunque dargli un progetto e quel progetto richiede del lavoro.
E se hai un'intelligenza artificiale, devi ancora insegnarla e dovrà imparare attraverso diversi progetti. Pertanto, non credo che un'intelligenza artificiale sia adatta a questo tipo di lavoro, ma piuttosto un approccio più deterministico, utilizzando i generatori di codice. Questi generatori di codice possono diventare molto complessi, ma non devono necessariamente utilizzare l'apprendimento automatico.
Detto questo, esiste già una ricerca nelle aree denominate Design del software orientato alle funzionalità e Design del software orientato agli aspetti. Questi si occupano di assemblare applicazioni software selezionando alcune funzionalità che dovrebbero avere e quindi il codice viene generato per quello. L'obiettivo è disporre di implementazioni per diverse funzionalità che appaiono ripetutamente in un particolare dominio e assemblarle come blocchi predefiniti, come adatti per la tua particolare applicazione. Ad esempio, per lo sviluppo web, le funzionalità includono transazioni, statistiche, scalabilità, registrazione e qualsiasi altra cosa tu possa pensare come caratteristiche ricorrenti di diverse applicazioni Web.
Le caratteristiche e gli aspetti sono diversi dai componenti, poiché di solito sono preoccupazioni trasversali. Prendi ad esempio la registrazione. Non puoi semplicemente prendere una biblioteca e includerla nella tua applicazione e dire che ora hai la registrazione. Devi diffondere le tue chiamate di registrazione su tutto il tuo codice, ed è qui che i generatori di codice sono a portata di mano. Di recente ho sentito parlare di tutte queste cose da questo in due parti intervista su Radio di ingegneria del software .
Sembra che questo tipo di ricerca sia piuttosto alla moda in Europa, e in particolare in Germania, anche nel settore, come posso dire per esperienza personale. La generazione del codice può essere utile per generare il codice dell'infrastruttura necessario, in modo che lo sviluppatore possa concentrarsi esclusivamente sull'implementazione del comportamento specifico della sua applicazione e non preoccuparsi degli stessi problemi collaterali su ogni progetto diverso.
Resta da vedere quanto quel codice specifico per l'applicazione possa essere ristretto. Certamente non può essere eliminato completamente, ma ridotto a una sorta di progetto, come ho detto all'inizio.