Мене колега попросив чітко пояснити різницю між звичайною розробкою та дослідженнями та розробками (НДДКР) і не зміг цього зробити. Прочитавши Вікіпедію, у мене ще немає точної відповіді.
Згідно з Вікіпедією (трохи змінена):
Є дві основні моделі:
В одній моделі основна функція - розробка нових продуктів ;
в іншій моделі основна функція полягає у відкритті та створенні нових знань про науково-технічні теми з метою розкриття та забезпечення можливості розвитку цінних нових продуктів, процесів та послуг.
Перша модель незрозуміла. Чи означає це, що розробка (а не R&D) полягає виключно в додаванні нових функцій до продукту, вирішенню помилок та технічному обслуговуванню? Що робити, якщо щось, що раніше розроблялося як нова функція, стає окремим продуктом?
Друга модель є менш заплутаною, але все-таки, як визначити, чи є щось нове знання чи існуюче знання, яке лише переросло?
Пізніше Вікіпедія додає, що звичайна розробка відрізняється від НДДКР завдяки:
майже негайний прибуток або негайне поліпшення.
Це все ще недостатньо зрозуміло. Як кваліфікувати "майже негайний прибуток"? Що робити, якщо завдання має негайний прибуток, але вимагає важких досліджень? Або якщо він є базовим, але має невизначений прибуток, як, наприклад, впровадження загального стилю над базою кодів?
Наприклад, чи належить він до розробки чи НДДКР:
Розробити механізм, який абстрагує доступ до бази даних, спрощуючи та значно скорочуючи код інших програм (існуючих або тих, які будуть написані в майбутньому), які повинні мати доступ до бази даних?
Створіть нову сервісно-орієнтовану архітектуру для всієї організації ресурсів компанії, щоб перейти від купу окремих і автономних додатків до набору добре організованих взаємопов’язаних веб-сервісів, як те, що використовується Amazon?
Розробити новий протокол зв’язку, щоб дозволити швидше реплікацію даних між двома центрами обробки даних компанії?
Задумайте новий тип тестування програмного забезпечення під час роботи над конкретним продуктом, знаючи, що цей тип тестування поліпшить / спростить процес тестування?
Доведіть, що функціональне програмування є більш доцільним, ніж OOP для конкретного додатку, на основі доказів, логіки та попереднього досвіду?
Покращуйте існуючий додаток, додаючи жести на тактильні екрани, виконуючи дослідження та тестування, які показують, що ці жести покращують продуктивність користувачів на співвідношення щонайменше 1,4 для точного набору завдань?
Знайти спосіб сильно підвищити ефективність використання енергії (PUE) центру обробки даних?
Створити мову, орієнтовану на домен (DSL)?
Коротше кажучи, як я міг визначити, чи займаюся я НДДКР, працюючи над чимось?