To quote Wikipedia:

Node-RED is a visual tool for wiring together hardware devices, APIs and online services for wiring the Internet of Things.

Node-RED provides a browser-based flow editor that makes it easy to wire together flows using the wide range nodes in the palette. Flows can be then deployed to the runtime in a single-click. JavaScript functions can be created within the editor using the a rich text editor. A built-in library allows you to save useful functions, templates or flows for re-use.

The light-weight runtime is built on Node.js, taking full advantage of its event-driven, non-blocking model. This makes it ideal to run at the edge of the network on low-cost hardware such as the Raspberry Pi as well as in the cloud.

With over 120,000 modules in Node's package repository, it is easy to extend the range of palette nodes to add new capabilities.

The flows created in Node-RED are stored using JSON which can be easily imported and exported for sharing with others.

An online flow library allows you to share your best flows with the world.

Node-RED can be run on just about any platform and is available as a cloud service.  There are many specialized IoT nodes (program pieces) available when running on the Raspberry Pi that allow for quick prototyping with minimal programming. 

Getting started - see Node-RED Documentation

Leaning to use - see Node-RED Tutorial