Коллега попросил меня четко объяснить разницу между обычной разработкой и исследованиями и разработками (R & D), и я не смог этого сделать. После прочтения Википедии у меня все еще нет точного ответа.
Согласно Википедии (слегка изменено):
Есть две основные модели:
В одной модели основная функция заключается в разработке новых продуктов ;
в другой модели основная функция заключается в обнаружении и создании новых знаний по научным и технологическим темам с целью раскрытия и обеспечения возможности разработки ценных новых продуктов, процессов и услуг.
Первая модель сбивает с толку. Означает ли это, что разработка (а не НИОКР) состоит исключительно в добавлении новых функций в продукт, устранении ошибок и обслуживании? Что если что-то, что ранее было разработано как новая функция, станет отдельным продуктом?
Вторая модель менее запутанная, но все же, как определить, является ли что-то новым знанием или существующим знанием, которое только что открыли заново?
Позже Википедия добавляет, что обычная разработка отличается от НИОКР из-за ее:
почти немедленная прибыль или немедленное улучшение.
Это все еще недостаточно ясно. Как квалифицировать «почти немедленную прибыль»? Что если задача имеет немедленную прибыль, но требует тщательного исследования? Или, если он базовый, но с неопределенной прибылью, как применение общего стиля в кодовой базе?
Например, относится ли это к разработке или НИОКР для:
Разработать механизм, который абстрагирует доступ к базе данных, значительно упрощая и сокращая код других приложений (существующих или тех, которые будут написаны в будущем), которые должны иметь доступ к базе данных?
Создать новую сервис-ориентированную архитектуру для всей организации ресурсов компании, чтобы перейти от группы отдельных и автономных приложений к набору хорошо организованных, взаимосвязанных веб-сервисов, например, что используется Amazon?
Разработать новый протокол связи, чтобы позволить более быструю репликацию данных между двумя дата-центрами компании?
Задумываете ли вы новый тип тестирования программного обеспечения при работе с конкретным продуктом, зная, что этот тип тестирования улучшит / упростит процесс тестирования?
Докажите, что функциональное программирование более подходит, чем ООП, для конкретного приложения, основываясь на фактах, логике и предыдущем опыте?
Усовершенствовать существующее приложение, добавив жесты на тактильные экраны, после проведения исследований и тестирования, которые показывают, что эти жесты повышают производительность пользователей не менее чем в 1,4 раза для точного набора задач?
Найдите способ значительно повысить эффективность использования энергии (PUE) центра обработки данных?
Создать домен-специфический язык (DSL)?
Короче говоря, как я могу определить, занимаюсь ли я исследованиями и разработками, работая над чем-то?