В чем разница между разработкой и разработкой?

39

Коллега попросил меня четко объяснить разницу между обычной разработкой и исследованиями и разработками (R & D), и я не смог этого сделать. После прочтения Википедии у меня все еще нет точного ответа.

Согласно Википедии (слегка изменено):

Есть две основные модели:

  • В одной модели основная функция заключается в разработке новых продуктов ;

  • в другой модели основная функция заключается в обнаружении и создании новых знаний по научным и технологическим темам с целью раскрытия и обеспечения возможности разработки ценных новых продуктов, процессов и услуг.

Первая модель сбивает с толку. Означает ли это, что разработка (а не НИОКР) состоит исключительно в добавлении новых функций в продукт, устранении ошибок и обслуживании? Что если что-то, что ранее было разработано как новая функция, станет отдельным продуктом?

Вторая модель менее запутанная, но все же, как определить, является ли что-то новым знанием или существующим знанием, которое только что открыли заново?

Позже Википедия добавляет, что обычная разработка отличается от НИОКР из-за ее:

почти немедленная прибыль или немедленное улучшение.

Это все еще недостаточно ясно. Как квалифицировать «почти немедленную прибыль»? Что если задача имеет немедленную прибыль, но требует тщательного исследования? Или, если он базовый, но с неопределенной прибылью, как применение общего стиля в кодовой базе?

Например, относится ли это к разработке или НИОКР для:

  • Разработать механизм, который абстрагирует доступ к базе данных, значительно упрощая и сокращая код других приложений (существующих или тех, которые будут написаны в будущем), которые должны иметь доступ к базе данных?

  • Создать новую сервис-ориентированную архитектуру для всей организации ресурсов компании, чтобы перейти от группы отдельных и автономных приложений к набору хорошо организованных, взаимосвязанных веб-сервисов, например, что используется Amazon?

  • Разработать новый протокол связи, чтобы позволить более быструю репликацию данных между двумя дата-центрами компании?

  • Задумываете ли вы новый тип тестирования программного обеспечения при работе с конкретным продуктом, зная, что этот тип тестирования улучшит / упростит процесс тестирования?

  • Докажите, что функциональное программирование более подходит, чем ООП, для конкретного приложения, основываясь на фактах, логике и предыдущем опыте?

  • Усовершенствовать существующее приложение, добавив жесты на тактильные экраны, после проведения исследований и тестирования, которые показывают, что эти жесты повышают производительность пользователей не менее чем в 1,4 раза для точного набора задач?

  • Найдите способ значительно повысить эффективность использования энергии (PUE) центра обработки данных?

  • Создать домен-специфический язык (DSL)?

Короче говоря, как я могу определить, занимаюсь ли я исследованиями и разработками, работая над чем-то?

Арсений Мурзенко
источник
21
Хм ... R & D включает исследования?
Роберт Харви

Ответы:

37

Отличный вопрос

Важно различать «развитие» и «исследования и разработки».

  • Пункт 1

НИОКР = экспериментирование с идеями / технологиями, которые никогда не станут продуктом.

Разработка программного обеспечения = работа над продуктом / услугой, желаемой реальным клиентом.

  • Пункт 2

R & D - это разработка новых решений для конкретной проблемной области. Конечным результатом этой работы является то, что я называю «исследовательскими игрушками».

Чтобы стать программным продуктом, исследовательская игрушка должна быть полностью переосмыслена. Невыполнение этого требования приведет к созданию продукта, который будет привлекать все более элитных и эрудированных пользователей. Проблема здесь в том, что у этой элитной и эрудированной пользовательской базы обычно нет денег, чтобы тратить.

Чтобы быть успешным, программный продукт должен быть верным воплощением исследовательской игрушки, доступной и любимой обычным пользователем. Чтобы быть действительно замечательным, программный продукт должен одновременно привлекать элиту и эрудированного пользователя.

  • Пункт 3

Исследования подразумевают научные или научные исследования и, как правило, направлены на большее благо отрасли или общества в целом. Разработка продукта имеет различные мотивы и результаты: она определяется потенциалом получения прибыли. Состояние разработки продукта является здоровым. Состояние исследований освещения нет.

Нам нужно коллективное стремление к большему благу, чтобы ответить на такие вопросы. Но это не просто благотворительность; ответ будет касаться практической цели. Источники света, спектрально настроенные на визуальную систему, будут более устойчивыми. Они будут использовать меньше энергии, генерируя свою продукцию в областях спектра, где зрительная система реагирует наиболее сильно, что приводит к лучшему видению для пользователей здания. Этот пример подтверждает разницу между исследованиями и разработкой продукта.

  • Пункт 4

Все разработки новых продуктов должны быть НИОКР. Я думаю, что некоторые из вас путают чистую абстрактную науку с НИОКР. Они не одинаковы. Исследования и разработки могут быть очень ориентированы на продукт. Ученые могут искать вакцину для лечения СПИДа. Это очень специфическая задача - создать продукт для продажи, и это, безусловно, НИОКР, а не просто парни, которые бездельничают, разбираясь с тем, что им хочется.

  • Пункт 5

НИОКР в техническом мире = поиск способов сделать что-то интересное или важное, используя известные методы и технологии в качестве отправной точки.

Разработка программного обеспечения = поиск способов сделать что-то интересное или важное, используя известные методы и технологии в качестве отправной точки.

  • Пункт 6

Практически вся разработка программного обеспечения является частью исследований и разработок. Иногда в программном обеспечении R & D очень мало R. Иногда в программном обеспечении 'R & D' есть довольно большой R.

Это зависит от нескольких измерений. Например,

Управляя разработкой программного обеспечения для компаний разных размеров, исследования и разработки приобретают разные значения в зависимости от размера компании, клиентской базы и т. Д.

В небольшой компании, занимающейся разработкой программного обеспечения, в которой работают лишь несколько сотрудников, грань между программным обеспечением для НИОКР и программным обеспечением для производства обычно очень мала. То, что в один прекрасный день является проектом НИОКР в области программного обеспечения, может на следующий день быть поставлено заказчикам в качестве производственного программного обеспечения.

Поскольку компании-разработчики программного обеспечения растут, и у них есть одна или несколько производственных линий программного обеспечения, они, как правило, создают большее разделение между проектами в области НИОКР и программными продуктами для производства (по очевидным причинам). Этот разрыв в исследованиях и разработках, как правило, создается для обеспечения большей диверсификации их программных продуктов на завтра, позволяя при этом продолжать разработку производственного программного обеспечения.

Это не значит, что производственные программные продукты не получат новых инновационных функций. Разработчики производственного программного обеспечения, как правило, такие же «острые», как разработчики НИОКР. Фактически, в одной компании у нас была программа обогащения, которая позволяла разработчикам производственного программного обеспечения участвовать в проектах НИОКР. Это не только добавило свежую интеллектуальную силу командам R & D, но и во многих случаях разработчики производства возвращались с новыми идеями по созданию программного обеспечения более высокого уровня производства.

  • Пункт 7

D = «зная, где вы хотите быть в конце», а R - потому что «в начале проекта вы не знаете, что потребуется для этого»

  • Пункт 8

R & D - это счастливчики, которые делают все, что хотят, без ответственности.

Хорошее исследование / ресурс по этой теме:

Md Mahbubur Rahman
источник
1
Я думаю, что единственное, что вы не указали в явном виде - практически вся разработка программного обеспечения является частью исследований и разработок. В большинстве программных «НИОКР» очень мало R - все примеры в OP - «Разработка».
Mattnz
@mattnz, я согласен с тобой. теперь я включил вашу точку зрения в мой ответ. Спасибо за предложение. :)
Md Mahbubur Rahman
9

Разница в ожиданиях.

  • Когда я работал в отделе исследований и разработок, от меня ожидали в первую очередь результатов исследований .

  • Когда я работал над разработкой, я в первую очередь ожидал предоставить работающее программное обеспечение .

Они не полностью разделены, и между ними могут быть довольно существенные серые области. В процессе разработки иногда случалось, что я должен был провести какое-то исследование . Кроме того, в одном из исследовательских проектов мне было поручено разработать конкретную программу.

комар
источник
8

Как уже говорили другие, исследования и разработки включают исследования. Для меня исследования - это то, что в настоящее время никто не знает, как делать. Если это было сделано, это не исследование, хотя это может потребовать значительных временных затрат на изучение существующих решений и литературы.

О вашем списке:

  • Разработать механизм, который абстрагирует доступ к базе данных, значительно упрощая и сокращая код других приложений (существующих или тех, которые будут написаны в будущем), которые должны иметь доступ к базе данных?

Многие ORM существуют. Если бы вы не сделали что-то действительно другое, я бы не считал это НИОКР.

  • Создать новую сервис-ориентированную архитектуру для всей организации ресурсов компании, чтобы перейти от группы отдельных и автономных приложений к набору хорошо организованных, взаимосвязанных веб-сервисов, например, что используется Amazon?

Нет.

  • Разработать новый протокол связи, чтобы позволить более быструю репликацию данных между двумя дата-центрами компании?

Если это улучшится на известных протоколах, то я бы рассмотрел этот R & D.

  • Задумываете ли вы новый тип тестирования программного обеспечения при работе с конкретным продуктом, зная, что этот тип тестирования улучшит / упростит процесс тестирования?

  • Докажите, что функциональное программирование более подходит, чем ООП, для конкретного приложения, основываясь на фактах, логике и предыдущем опыте?

  • Усовершенствовать существующее приложение, добавив жесты на тактильные экраны, после проведения исследований и тестирования, которые показывают, что эти жесты повышают производительность пользователей не менее чем в 1,4 раза для точного набора задач?

  • Найдите способ значительно повысить эффективность использования энергии (PUE) центра обработки данных?

  • Создать домен-специфический язык (DSL)?

Ни одна из этих вещей, кажется, не включает исследования. Чтобы привести другие примеры вещей, которые я бы рассмотрел R & D:

  • Улучшение вывода типов в Scala, что позволяет улучшить унификацию

  • Придумайте новый вид оптимизации компилятора

  • Создайте новую базу данных, которая имеет существенные отличия от существующих - скажем, как CouchDB, когда она была задумана

  • Разработка работающей, полезной библиотеки для функционально-реактивного программирования

  • Найти новый эксплойт в существующем программном обеспечении или протоколах

  • Изобретите новый алгоритм сжатия

Andrea
источник
3

Неформально, то, как я бы это определил (и как я обычно это видел на практике), выглядит примерно так:

Фраза «НИОКР» используется для обозначения того, что вы не уверены в точном подходе к достижению чего-либо и / или даже в том случае, если это возможно, и в том, насколько хорошо это будет работать.

(РЕДАКТИРОВАТЬ: перефразировано немного)

По сути, это быстрый, общий способ сказать, что впереди значительное неизвестное. Попытка ответить на ваш фактический вопрос тогда действительно зависит от того, кто выполняет классификацию; кажется, что многие из этих предметов включают в себя значительный исследовательский компонент, но я думаю, что есть люди, которые смогут достичь многих из них без каких-либо исследований. Это зависит как от задачи, так и от личности.

Глядя на фактический список, я лично классифицировал бы те, которые основывались на том, делал ли я что-то достаточно похожее в прошлом, и поэтому был бы очень уверен в том, что я собираюсь сделать (или, по крайней мере, смогу дать хороший пример По оценкам).

Даниэль Б
источник
0

40 000 долларов в год на зарплату?

В исследованиях и разработках исследователь иногда использует исследования, чтобы описать то, что также называют технологическим развитием, когда мы обнаруживаем, как делать то, что мы не знали, как делать. Возможно, хорошо описанный как прикладное исследование, мы могли бы спроектировать что-то для спецификации, затем обычно пытаться запатентовать это или иным образом защитить или использовать это для конкурентного преимущества.

R также может относиться к риску, потому что проекты исследований и разработок часто пытаются совместить как открытие, так и использование новых технологий и использование известных технологий вместе. Среди других рисков для этого подхода - разделение вашего фокуса, создание прототипа, который НЕ предназначен для отбрасывания, и вероятность того, что маркетинг будет вовлечен и будет рассматривать оценки как контракты.

R & D - это термин, который может наряжать отдел, который в основном занимается разработкой. Большинство технологических проектов должны сочетать исследования с каким-то прототипом, но создание одного или дюжины чего-либо не кажется мне разработкой, если оно не может быть передано в производство.

Исследования обычно включают в себя такое понятие, как изучение литературы или патентов в поисках известного уровня техники, утверждение заявлений о новых инновациях и демонстрация их ценности и уникальности в некотором роде. Академические исследования иногда синтезируют идеи из академической литературы, математически моделируют какое-то явление или сообщают о тематическом исследовании с анализом, выводами и предложениями для дальнейшего изучения.

Возможно, НИОКР заинтересован в том, что еще не было сделано ранее, но в краткосрочной перспективе будет доступно как продукт.

DeveloperDon
источник
-4

R & D экспериментирует с идеями, которые никогда не станут продуктом. Где Software Development работает над продуктом / услугой, желаемой стать продуктом.

CoolProgrammer
источник