Kolega poprosił mnie o jasne wyjaśnienie różnicy między zwykłym rozwojem a badaniami i rozwojem (R&D) i nie byłem w stanie tego zrobić. Po przeczytaniu Wikipedii wciąż nie mam dokładnej odpowiedzi.
Według Wikipedii (nieznacznie zmodyfikowana):
Istnieją dwa podstawowe modele:
W jednym modelu podstawową funkcją jest opracowywanie nowych produktów ;
w drugim modelu podstawową funkcją jest odkrywanie i tworzenie nowej wiedzy na tematy naukowe i technologiczne w celu odkrycia i umożliwienia rozwoju cennych nowych produktów, procesów i usług.
Pierwszy model jest mylący. Czy to oznacza, że rozwój (nie badania i rozwój) polega wyłącznie na dodawaniu nowych funkcji do produktu, rozwiązywaniu błędów i przeprowadzaniu konserwacji? Co jeśli coś, co zostało wcześniej opracowane jako nowa funkcja, stanie się oddzielnym produktem?
Drugi model jest mniej mylący, ale w jaki sposób można określić, czy coś jest nową wiedzą, czy wiedzą istniejącą, która została dopiero odkryta?
Później Wikipedia dodaje, że zwykły rozwój różni się od badań i rozwoju ze względu na:
prawie natychmiastowy zysk lub natychmiastowa poprawa.
To wciąż nie jest wystarczająco jasne. Jak zakwalifikować „prawie natychmiastowy zysk”? Co jeśli zadanie ma natychmiastowy zysk, ale wymaga intensywnych badań? A jeśli jest to podstawowy, ale ma niepewny zysk, na przykład egzekwowanie wspólnego stylu nad bazą kodów?
Na przykład, czy należy do działu rozwoju lub badań i rozwoju w celu:
Opracować silnik, który wyodrębnia dostęp do bazy danych, znacznie upraszczając i znacznie skracając kod innych aplikacji (istniejących lub takich, które zostaną napisane w przyszłości), które powinny mieć dostęp do bazy danych?
Ustanowić nową architekturę zorientowaną na usługi dla całej organizacji zasobów firmy, aby przejść z szeregu osobnych i autonomicznych aplikacji do zestawu dobrze zorganizowanych, połączonych ze sobą usług internetowych, takich jak to, z czego korzysta Amazon?
Czy zaprojektować nowy protokół komunikacyjny, aby umożliwić szybszą replikację danych między dwoma centrami danych firmy?
Pomyśl o nowym typie testowania oprogramowania podczas pracy nad konkretnym produktem, wiedząc, że ten rodzaj testowania usprawni / uprości proces testowania?
Udowodnić, że programowanie funkcjonalne jest bardziej odpowiednie niż OOP dla konkretnej aplikacji, na podstawie dowodów, logiki i wcześniejszych doświadczeń?
Udoskonalić istniejącą aplikację, dodając gesty na ekranach dotykowych, po przeprowadzeniu badań i testów, które pokazują, że gesty te poprawiają wydajność użytkowników o współczynnik co najmniej 1,4 dla precyzyjnego zestawu zadań?
Znaleźć sposób na znaczne zwiększenie efektywności zużycia energii (PUE) w centrum danych?
Utworzyć język specyficzny dla domeny (DSL)?
Krótko mówiąc, jak mogę ustalić, czy pracuję nad badaniami i rozwojem, pracując nad czymś?
źródło
Odpowiedzi:
Świetne pytanie.
Ważne jest, aby odróżnić „rozwój” od „badań i rozwoju”.
Dobre badania / zasoby na ten temat:
źródło
Różnica polega na oczekiwaniach.
Kiedy pracowałem w dziale badań i rozwoju, przede wszystkim oczekiwano ode mnie wyników badań .
Kiedy pracowałem nad programowaniem, przede wszystkim oczekiwano ode mnie działającego oprogramowania .
Nie są one całkowicie oddzielone, a pomiędzy nimi mogą znajdować się dość znaczne szare obszary. W fazie rozwoju czasami zdarzało się, że miałem przeprowadzić badania . Podobnie w jednym z projektów badawczych przydzielono mi opracowanie określonego programu.
źródło
Jak powiedzieli inni, badania i rozwój obejmują badania. Dla mnie badania pracują nad czymś, czego nikt obecnie nie wie, jak to zrobić. Jeśli zostało to zrobione, nie są to badania, chociaż może to wymagać znacznych nakładów czasu na zbadanie istniejących rozwiązań i literatury.
O twojej liście:
Istnieje wiele ORM. Jeśli twój nie zrobi czegoś naprawdę innego, nie liczyłbym tego jako R & D.
Nie.
Jeśli poprawi się to w stosunku do znanych protokołów, rozważę te R & D.
Pomyśl o nowym typie testowania oprogramowania podczas pracy nad konkretnym produktem, wiedząc, że ten rodzaj testowania usprawni / uprości proces testowania?
Udowodnić, że programowanie funkcjonalne jest bardziej odpowiednie niż OOP dla konkretnej aplikacji, na podstawie dowodów, logiki i wcześniejszych doświadczeń?
Udoskonalić istniejącą aplikację, dodając gesty na ekranach dotykowych, po przeprowadzeniu badań i testów, które pokazują, że gesty te poprawiają wydajność użytkowników o współczynnik co najmniej 1,4 dla precyzyjnego zestawu zadań?
Znaleźć sposób na znaczne zwiększenie efektywności zużycia energii (PUE) w centrum danych?
Utworzyć język specyficzny dla domeny (DSL)?
Żadna z tych rzeczy nie wydaje się obejmować badań. Aby podać inne przykłady rzeczy, które uważałbym za badania i rozwój:
Popraw wnioskowanie o typach w Scali, umożliwiając lepszą unifikację
Wymyśl nowy rodzaj optymalizacji kompilatora
Utwórz nową bazę danych, która różni się znacznie od istniejących - powiedzmy, że CouchDB była w momencie jej powstania
Opracuj działającą, użyteczną bibliotekę dla funkcjonalnego programowania reaktywnego
Znajdź nowy exploit w istniejącym oprogramowaniu lub protokołach
Wymyśl nowy algorytm kompresji
źródło
Nieformalnie sposób, w jaki to zdefiniowałbym (i jak ogólnie widziałem, że jest stosowany w praktyce), przypomina:
Sformułowanie R&D jest używane do oznaczenia, że nie masz pewności co do dokładnego podejścia do osiągnięcia czegoś i / lub czy można to w ogóle zrobić i jak dobrze to zadziała.
(EDYCJA: nieco zmieniona)
Zasadniczo jest to szybki, powszechny sposób stwierdzenia, że przed nami znacząca niewiadoma. Próba odpowiedzi na twoje rzeczywiste pytanie zależy od tego, kto dokonuje klasyfikacji; wydaje się, że wiele z tych przedmiotów zawiera znaczący element badawczy, ale sądzę, że są osoby, które byłyby w stanie osiągnąć wiele z nich bez żadnych badań. To zależy zarówno od zadania, jak i od osoby.
Patrząc na rzeczywistą listę, osobiście klasyfikowałbym te na podstawie tego, czy zrobiłem coś podobnego w przeszłości i dlatego byłbym bardzo pewny tego, co zamierzam zrobić (a przynajmniej byłbym w stanie dać dobry ballpark szacunki).
źródło
40 000 $ rocznie podwyżki wynagrodzenia?
W badaniach i rozwoju R czasami wykorzystuje badania do opisania rzeczy, która jest również opisywana jako rozwój technologii, w której odkrywamy, jak zrobić coś, czego nie umiemy. Być może dobrze opisane jako badania stosowane, możemy zaprojektować coś do specyfikacji, a następnie zazwyczaj próbujemy opatentować go lub w inny sposób zabezpieczyć lub wykorzystać do uzyskania przewagi konkurencyjnej.
R może również odnosić się do ryzyka, ponieważ projekty badawczo-rozwojowe często próbują połączyć zarówno odkrycie i wykorzystanie nowej technologii, jak i wykorzystanie znanych technologii. Do innych zagrożeń związanych z tym podejściem należy dzielenie uwagi, budowanie prototypów, które NIE są przeznaczone do wyrzucenia, oraz prawdopodobieństwo, że marketing zaangażuje się i potraktuje dane szacunkowe jako umowy.
R&D to termin, który może przebrać dział zajmujący się głównie rozwojem. Większość projektów technologicznych powinna łączyć badania z jakimś prototypem, ale zrobienie jednego lub kilkunastu czegoś nie wydaje mi się rozwojem, chyba że można je przekazać do produkcji.
Badania zwykle obejmują pojęcie rygorystyczne, takie jak badanie literatury lub patentów w poszukiwaniu stanu techniki, potwierdzanie twierdzeń o nowych innowacjach i wykazanie w jakiś sposób ich wartości i wyjątkowości. Badania akademickie czasami syntetyzują pomysły z literatury akademickiej, modelują niektóre zjawiska matematycznie lub opisują studium przypadku z analizą, wnioskami i propozycją do przyszłych badań.
Być może badania i rozwój są zainteresowane rzeczami, które nie zostały wcześniej zrobione, ale w krótkim okresie zostaną udostępnione jako produkt.
źródło
R&D eksperymentuje z pomysłami, które mogą nigdy nie stać się produktem. W przypadku, gdy Software Development pracuje nad produktem / usługą, która ma zostać produktem.
źródło