Take the 2-minute tour ×
User Experience Stack Exchange is a question and answer site for user experience researchers and experts. It's 100% free, no registration required.

I am currently designing a solution about IVR's (Interactive Voice Solution) system that should enable user design their own flows according to their needs. In this solution, user should need to arrange questions, answers, messages and their relationship with keypad or with voice commands according to their business flow.

After taking some time about researching about options, we conclude that visual programming interfaces can be a good option. According to my research, I found some libraries related to show flows:

NoFlo- http://noflojs.org/

Meemoo- http://meemoo.org/

jsPlumb- http://jsplumbtoolkit.com/home/jquery.html

ThreeNodes-http://idflood.github.io/ThreeNodes.js/

Dynamo-http://autodeskvasari.com/dynamo

mxGraph- http://www.jgraph.com/mxgraph.html

Node-RED- http://nodered.org/

GoJS- http://gojs.net/latest/index.html (paid)

My own experience with MAX MSP,Grasshoper (generative modelling plug-in works for Rhino), Visual programming interfaces can be really complicated while building complex structures. On the other hand, it is easier since it creates a better feedback loop compared to text based programming.

There are also some visual programming tools like, a popular example at these days, Scratch, http://scratch.mit.edu/ developed for learning how to code.

A favourite subject for Ph.D. dissertations in software engineering is graphical, or visual programming. […] Nothing even convincing, much less exciting, has yet emerged from such efforts. I am persuaded that nothing will. (Frederick Brooks The Mythical Man Mont)

There are games that are also using visual programming elements like (Drag-drop, rubber connections, clustering several elements into one, input and output parts - ex: jigsaw)

After collecting these all information, instead of being more clear about the way, I feel that I am lost in many different views and could not find solid information about whether they are working good for non-tech users. Can you please your knowledge or experience if you already worked on such a project?

Thank you,

share|improve this question

This question has an open bounty worth +50 reputation from Abektes ending in 3 days.

Looking for an answer drawing from credible and/or official sources.

Are Visual Programming Interfaces effective for non-tech users? Reference or study based answers are very welcome.

    
The Domoticz open source project has an integrated visual Lua script editor which works well for simple scripts. Not sure what libraries it's using. –  Andy Boura Aug 30 at 8:43

4 Answers 4

I've worked on visual programming systems/languages and I agree with Frederick Brooks. Graphical or diagrammatic or any kind of non-text based languages do not make good general purpose programming languages. Text is very efficient at describing complex things, especially behaviors and actions, usually much better than non-text. A picture is worth 1000 words only in special cases.

But special purpose graphical languages can be good applied to limited, domain specific problems. For instance LabVIEW has been successfully applied to many problems within it's target niche.

These domain specific graphical languages sometimes are quite usable by non-technical people, but they're no silver bullet. They (usually) still require a significant investment in learning the language and system, and even then the problem must be clearly understood to attempt to express it within the graphical language/system.

share|improve this answer
    
Interested in how you formed your opinion and what visual programming systems/languages you worked on as I am running around with an idea for a visual interface for a couple of programming related tasks. W/Could you share links to some systems (instead of libraries) for me to analyse? –  Marjan Venema Jan 5 at 11:36
    
I agree based on my experience with visual languages in a few domains. They work OK but there are other representations of process logic that work equally well. @Abektes, one point of confusion in a visual/diagrammatic language is the meaning of nodes and connections between nodes. You need to decide (1) whether nodes are objects, processes, or the result of a process (a system state) and (2) what the connection between two nodes means. Not surprisingly, people interpret diagrams differently and the meaning of nodes and connections is, often, at the root of the differences. –  user1757436 Jan 6 at 19:26
    
@MarjanVenema - I haven't worked on this stuff in years (but I do keep an eye on it out of interest). In 90s I helped make something called PARTS Workbench. The main problem was as complexity increased you get a mass of wiring which is harder to understand than comparable code. As long as the problem is fairly simple I think visual programming is feasible. –  obelia Jan 6 at 19:35
    
Thanks obelia. Googling for that brought up some interesting links. –  Marjan Venema Jan 7 at 7:37
    
Hey @user1757436 thanks for giving some insights.Sorry for late reply, i was mobilized. I was thinking using connection for showing the flow. We are trying to create dialog concept for IVR's.I ll keep all u guys updated if i find something valuable... Thanks again –  Abektes Jan 10 at 8:50

I found the more successfull project in the field is a plugin for unity 3D : playmaker. Playmaker is a visual states machine that emphasize on helping games devellopper on main tasks and allow to iterate quickly with visual feedbak in real time.

In fact maybe nodes are not the best visual system to help non programming people to understand code logic. Each field should invent system that are more relate to the experience the user intent to create.

A good example is mozilla appamaker. The visual canvas is a smartphone. the prefabs are screenparts. they also work on making listener visual with good feedback and feedforward. I think the visual system they created is easier to understand.

generic design lead to failure.

share|improve this answer
1  
This answer would be a whole lot better if you provided links to the mentioned projects. –  msparer Aug 12 at 15:00

im still fascinated about the software http://en.wikipedia.org/wiki/MeVisLab . It helps to see the flow of the app in kinda tree hierachy, but enables also developing extreme complex modules, that then a non-tech user can use for its own ideas.

share|improve this answer

I have worked for a long time writing software for the financial industry, and I have to say that Excel is by far the most successful visual programming interface for non-technical users.

  • Novice users start off working with simple rows and columns.
  • They start "programming" with simple drag to select and sum a column (or some other simple operation), and gradually move onto more complex tasks (e.g. more complex formulas, referencing values in other sheets, creating pivot tables).
  • Expert users can add various controls (e.g. buttons, listboxes), write their own macros, and add other data sources (RTD Servers etc.)

I am constantly amazed at the stuff people are doing with it*.

I'm not claiming Excel is the best design ever. I'm not saying that everyone should use it, or claiming that non-technical people are coming up with elegant software designs using it...

...but Excel must be doing something right to be so ubiquitous and loved**.

I suspect that having a big grid of numbers is the key. Most programming is about manipulating data, yet most graphical programming languages seem to be about manipulating workflows / stringing components together.


*i.e. Sometimes we get a "house of cards" set of workbooks to make into an application

**however hated it is among real developers.

share|improve this answer
1  
A key reason that Excel is so approachable and successful is that it is a declarative (or imperative) system rather than procedural language. User declares outcome needed e.g. state thisCell = 34 / thisCell = formula(other_cells) / thisCell = result_of_function() and the Excel works out the requisite order. This reduces learning curve as well as decreasing the complexity of interactions. I've built a domain specific declarative language and it was vastly simpler than procedural code which preceded it. Also the new language was editable by domain experts without programmer assistance. –  Jayfang yesterday

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.