Un collega mi ha chiesto di spiegare chiaramente la differenza tra sviluppo ordinario e ricerca e sviluppo (R&S) e non sono stato in grado di farlo. Dopo aver letto Wikipedia, non ho ancora la risposta precisa.
Secondo Wikipedia (leggermente modificato):
Esistono due modelli principali:
In un modello, la funzione principale è quella di sviluppare nuovi prodotti ;
nell'altro modello, la funzione principale è quella di scoprire e creare nuove conoscenze su argomenti scientifici e tecnologici allo scopo di scoprire e consentire lo sviluppo di nuovi prodotti, processi e servizi di valore.
Il primo modello è confuso. Significa che lo sviluppo (non la ricerca e sviluppo) consiste esclusivamente nell'aggiunta di nuove funzionalità a un prodotto, nella risoluzione di bug e nella manutenzione? Cosa succede se qualcosa che era stato precedentemente sviluppato come una nuova funzionalità diventa un prodotto separato?
Il secondo modello è meno confuso, ma comunque, come qualificare se qualcosa è nuova conoscenza o conoscenza esistente che è appena riscoperta?
Successivamente, Wikipedia aggiunge che lo sviluppo ordinario è diverso dalla ricerca e sviluppo a causa della sua:
profitto quasi immediato o miglioramento immediato.
Non è ancora abbastanza chiaro. Come qualificare "profitto quasi immediato"? Cosa succede se un'attività ha un profitto immediato ma richiede una ricerca approfondita? O se è di base ma ha profitti incerti, come l'applicazione di uno stile comune sulla base di codice?
Ad esempio, appartiene allo sviluppo o alla ricerca e sviluppo di:
Sviluppare un motore che impedisce l'accesso al database, semplificando e abbreviando enormemente il codice di altre applicazioni (esistenti o che verranno scritte in futuro) che dovrebbero accedere al database?
Stabilire una nuova architettura orientata ai servizi per l'intera organizzazione delle risorse aziendali, al fine di passare da un gruppo di applicazioni separate e autonome a una serie di servizi Web ben organizzati e interconnessi, come quello che viene utilizzato da Amazon?
Progettare un nuovo protocollo di comunicazione per consentire una replica più rapida dei dati tra due data center dell'azienda?
Concepire un nuovo tipo di test del software mentre si lavora su un prodotto specifico, sapendo che questo tipo di test migliorerà / semplificherà il processo di test?
Dimostrare che la programmazione funzionale è più appropriata di OOP per un'applicazione specifica, basata su prove, logica ed esperienza precedente?
Migliorare l'applicazione esistente aggiungendo gesti su schermi tattili, dopo aver fatto studi e test che dimostrano che quei gesti migliorano la produttività degli utenti di un rapporto di almeno 1,4 per una serie precisa di attività?
Trova un modo per migliorare fortemente l'efficacia di utilizzo dell'energia (PUE) di un data center?
Creare una lingua specifica del dominio (DSL)?
In breve, come posso determinare se sto facendo ricerca e sviluppo mentre lavoro su qualcosa?