Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I was asked by a colleague to explain clearly the difference between ordinary development and research and development (R&D) and was unable to do it. After reading Wikipedia, I still don't have the precise answer.

According to Wikipedia (slightly modified):

There are two primary models:

  • In one model, the primary function is to develop new products;

  • in the other model, the primary function is to discover and create new knowledge about scientific and technological topics for the purpose of uncovering and enabling development of valuable new products, processes, and services.

The first model is confusing. Does it mean that development (not R&D) consists exclusively in adding new features to a product, solving bugs and doing maintenance? What if something which was previously developed as a new feature becomes a separate product?

The second model is less confusing, but still, how to qualify whether something is new knowledge or existent knowledge which is just rediscovered?

Later, Wikipedia adds that ordinary development is different from R&D because of its:

nearly immediate profit or immediate improvement.

It's still not clear enough. How to qualify "nearly immediate profit"? What if a task has an immediate profit but requires heavy research? Or if it is basic but has uncertain profit, like the enforcement of a common style over the codebase?

For example, does it belong to development or R&D to:

  • Develop an engine which abstracts the access to the database, simplifying and shortening enormously the code of other applications (existent or ones which will be written in future) which should access to the database?

  • Establish a new service-oriented architecture for the entire organization of company resources, in order to move from a bunch of separate and autonomous applications to a set of well-organized, interconnected web services, like what is used by Amazon?

  • Design a new communication protocol to allow faster replication of data between two data centers of the company?

  • Conceive a new type of software testing while working on a specific product, knowing that this type of testing will improve/simplify the testing process?

  • Prove that Functional programming is more appropriate than OOP for a specific application, based on evidence, logic and previous experience?

  • Enhance the existent application by adding gestures on tactile screens, after doing studies and testing that shows that those gestures improve the productivity of the users by a ratio of at least 1.4 for a precise set of tasks?

  • Find a way to strongly enhance the Power usage effectiveness (PUE) of a data center?

  • Create a Domain-Specific Language (DSL)?

In short, how could I determine whether I'm doing R&D while working on something?

share|improve this question
17  
Erm...R&D includes research? –  Robert Harvey Nov 7 '12 at 6:22
add comment

6 Answers

up vote 29 down vote accepted

Great Question.

It is important to distinguish between 'Development' and 'R&D.'

  • Point 1

R&D = experimenting with ideas/technology that may never actually become a product.

Software Development = working on a product/service desired by a real customer.

  • Point 2

R&D is all about developing new solutions for a specific problem domain. The end result of this endeavor is something that I call "research toys".

To be a software product, the research toy has to be completely re-implemented. Failure to do so will result in a product that appeals to an increasingly elite and erudite user base. The problem here is that this elite and erudite user base typically has no money to spend.

To be a successful, the software product must be a faithful re-implementation of the research toy, accessible and loved by the commodity user. To be truely remarkable, the software product must simultaneously appeal to the elite and erudite user.

  • Point 3

Research implies scholarly or scientific inquiry and tends to be aimed at the greater good of an industry or society at large. Product development has different motivations and outcomes: it is driven by the potential for profit. The state of product development is healthy. The state of lighting research is not.

We need a collective commitment to the greater good to answer such questions. But this is not just philanthropy; the answer would address a practical goal. Light sources that are spectrally tuned to the visual system will be more sustainable. They will use less energy by generating their output in regions of the spectrum where the visual system responds most strongly, resulting in better seeing for building users. This example reinforces the difference between research and product development.

  • Point 4

All development of new products to be R&D. I think some of you are confusing pure, abstract science with R&D. They aren't the same. R&D can be very product oriented. Scientists may be looking for a vaccine to cure AIDs. That is a very specific task to create a product to sell and it is certainly R&D and not just guys sitting around messing about with whatever they feel like.

  • Point 5

R&D in the technical world = finding ways to do something interesting or important, using known techniques and technology as a starting point.

Software development = finding ways to do something interesting or important, using known techniques and technology as a starting point.

  • Point 6

Virtually all software development is the D part of R&D. Some times, there are very little R in Software 'R&D'. Some times, there are pretty large R in Software 'R&D'.

It depends on several measurement. For example,

Managing software development for various sized companies, R&D takes on different meanings depending on the size of the company, customer base, etc.

In a small software company, with only a hand full of employees, the line between R&D software and Production software is usually very small. What one day is a software R&D project, may the next day be shipping as production software to customers.

As software companies grow, and they have one or more production software lines, they tend to create greater separation between R&D software projects and Production software products (for obvious reasons). This R&D gap is typically created to create greater diversification in their software products for tomorrow, while allowing the production software development to continue to produce today.

This is not to say that the production software products won't get innovative new features. The production software developers are typically just as "sharp" as the R&D developers. In fact, at one company, we had an enrichment program that allowed production software developers to rotate in and out of R&D projects. This not only added fresh brain power to the R&D teams, but in many cases, the production developers came back with new ideas on producing better production level software.

  • Point 7

D = "knowing where you want to be at the end", and R is because "at the beginning of the project, you don't know what will be required to get there"

  • Point 8

R&D are the lucky folks who get to do anything they want without accountability.

Good research/resource on this topic :

share|improve this answer
1  
I think that only thing you have not spelled out explicitly - Virtually all software development is the D part of R&D. There is very little R in most Software 'R&D' - All of the examples in the OP are Development. –  mattnz Nov 7 '12 at 8:01
    
@mattnz, I agree with you. now i have included your point at my answer. Thanks for suggestion. :) –  Md. Mahbubur R. Aaman Nov 7 '12 at 8:55
add comment

The difference is in the expectations.

  • When I've been working in R&D, I was primarily expected to provide research results.

  • When I've been working in development, I was primarily expected to provide working software.

These are not totally separated, and there can be quite substantial gray areas in between. In development, it sometimes happened that I was expected to perform some research. Likewise, in one of research projects, I was assigned to develop particular program.

share|improve this answer
add comment

As others have said, R & D involves research. For me, research is working on something that no people know how to do at the present time. If it has been done, it is not research, although it may require significant time investments to study the existing solutions and the literature.

About your list:

  • Develop an engine which abstracts the access to the database, simplifying and shortening enormously the code of other applications (existent or ones which will be written in future) which should access to the database?

Many ORM exist. Unless yours does something truly different, I would not count it as R & D.

  • Establish a new service-oriented architecture for the entire organization of company resources, in order to move from a bunch of separate and autonomous applications to a set of well-organized, interconnected web services, like what is used by Amazon?

Nope.

  • Design a new communication protocol to allow faster replication of data between two data centers of the company?

If this improves on known protocols, then I would consider this R & D.

  • Conceive a new type of software testing while working on a specific product, knowing that this type of testing will improve/simplify the testing process?

  • Prove that Functional programming is more appropriate than OOP for a specific application, based on evidence, logic and previous experience?

  • Enhance the existent application by adding gestures on tactile screens, after doing studies and testing that shows that those gestures improve the productivity of the users by a ratio of at least 1.4 for a precise set of tasks?

  • Find a way to strongly enhance the Power usage effectiveness (PUE) of a data center?

  • Create a Domain-Specific Language (DSL)?

None of these things seems to include research. To give other examples of things that I would consider R & D:

  • Improve the type inference in Scala, allowing better unification

  • Invent a new kind of compiler optimization

  • Create a new database that has significant differences from the existing ones - say like CouchDB was when it was conceived

  • Develop a working, usable library for functional reactive programming

  • Find a new exploit in existing software or protocols

  • Invent a new compression algorithm

share|improve this answer
add comment

Informally, the way I would define it (and how I've generally seen it used in practice) is something like:

The phrase R&D is used to signify that you are unsure about the exact approach to achieve something, and / or if it can even be done, and how well it will work.

(EDIT: rephrased slightly)

Basically, it's a quick, common way of saying that there's a significant unknown ahead. Attempting to answer your actual question then, it really depends on who is doing the classification; many of those items seem like they include a significant research component, but I guess there are some individuals who would be able to achieve many of them without any research whatsoever. It depends on both the task, and the individual.

Looking at the actual list, I personally would classify those based on whether I've done something similar enough in the past, and would therefore be highly confident in what I'm about to do (or at least, be able to give good ballpark estimates).

share|improve this answer
add comment

$40,000 per year bump in salary?

In R&D, the R sometimes uses research to describe a thing that is also described as technology development where we discover how to do something we didn't know how to do. Perhaps well described as applied research, we might design something to spec, then usually try to patent it or otherwise protect or exploit it to competitive advantage.

The R could also refer to risk, because research and development projects often try to combine both the discovery and exploitation of new technology and exploitation of known technologies together. Among other risks to this approach are splitting your focus, building prototype that are NOT intended to be thrown away, and the likelihood that marketing is involved and will treat estimates as contracts.

R&D is a term that can dress up a department that is mostly involved in development. Most technology projects should combine research with some kind of prototype, but making one or a dozen of something doesn't seem like development to me unless it can be handed off to manufacturing.

Research usually includes a notion of rigor like examining the literature or patents looking for prior art, asserting claims of new innovation and demonstrating their value and uniqueness in some way. Academic research sometimes synthesizes ideas from academic literature, models some phenomenon mathematically, or reports a case study with analysis, conclusions, and a proposal for future study.

Perhaps R&D is interested in things that are have not been done before but in the short term will be made available as a product.

share|improve this answer
add comment

R&D is experimenting with ideas that may never become a product. Where, Software Development is working on a product/service desired to become a product.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.