Saya diminta oleh seorang kolega untuk menjelaskan dengan jelas perbedaan antara pengembangan biasa dan penelitian dan pengembangan (R&D) dan tidak mampu melakukannya. Setelah membaca Wikipedia, saya masih belum memiliki jawaban yang tepat.
Menurut Wikipedia (sedikit dimodifikasi):
Ada dua model utama:
Dalam satu model, fungsi utama adalah mengembangkan produk baru ;
dalam model lain, fungsi utamanya adalah untuk menemukan dan menciptakan pengetahuan baru tentang topik - topik ilmiah dan teknologi untuk tujuan mengungkap dan memungkinkan pengembangan produk, proses, dan layanan baru yang berharga.
Model pertama membingungkan. Apakah itu berarti pengembangan (bukan R&D) terdiri secara eksklusif dalam menambahkan fitur-fitur baru ke suatu produk, menyelesaikan bug dan melakukan pemeliharaan? Bagaimana jika sesuatu yang sebelumnya dikembangkan sebagai fitur baru menjadi produk terpisah?
Model kedua kurang membingungkan, tetapi masih, bagaimana memenuhi syarat apakah sesuatu itu pengetahuan baru atau pengetahuan yang ada yang baru saja ditemukan kembali?
Kemudian, Wikipedia menambahkan bahwa perkembangan biasa berbeda dari R&D karena:
keuntungan hampir instan atau perbaikan segera.
Masih belum cukup jelas. Bagaimana cara memenuhi syarat "laba hampir instan"? Bagaimana jika suatu tugas memiliki keuntungan langsung tetapi membutuhkan penelitian yang berat? Atau jika itu dasar tetapi memiliki laba yang tidak pasti, seperti penegakan gaya umum atas basis kode?
Misalnya, apakah itu milik pengembangan atau R&D untuk:
Mengembangkan mesin yang mengabstraksi akses ke database, menyederhanakan dan memperpendek kode aplikasi lain (ada atau yang akan ditulis di masa depan) yang mana yang harus mengakses ke database?
Membangun arsitektur berorientasi layanan baru untuk seluruh organisasi sumber daya perusahaan, untuk beralih dari sekelompok aplikasi terpisah dan otonom ke satu set layanan web yang terorganisir dengan baik, saling berhubungan, seperti apa yang digunakan oleh Amazon?
Merancang protokol komunikasi baru untuk memungkinkan replikasi data yang lebih cepat antara dua pusat data perusahaan?
Bayangkan jenis pengujian perangkat lunak baru saat mengerjakan produk tertentu, mengetahui bahwa jenis pengujian ini akan meningkatkan / menyederhanakan proses pengujian?
Buktikan bahwa pemrograman fungsional lebih tepat daripada OOP untuk aplikasi tertentu, berdasarkan bukti, logika dan pengalaman sebelumnya?
Tingkatkan aplikasi yang ada dengan menambahkan gerakan pada layar taktil, setelah melakukan penelitian dan pengujian yang menunjukkan bahwa gerakan itu meningkatkan produktivitas pengguna dengan rasio setidaknya 1,4 untuk serangkaian tugas yang tepat?
Temukan cara untuk sangat meningkatkan efektivitas penggunaan daya (PUE) dari pusat data?
Buat Bahasa Domain-Khusus (DSL)?
Singkatnya, bagaimana saya bisa menentukan apakah saya sedang melakukan R&D sambil mengerjakan sesuatu?