We need visual programming. No, not like that
Limits of general-purpose visual programming
- Many argue that mapping complex, non-planar program graphs into 2D (or even 3D) spaces leads to “spaghetti” diagrams that don’t scale.
- Text is seen as “1D with names” and symbolic references; diagrams often replace names with wires, creating clutter and overloading visual memory.
- Visual tools frequently obscure control flow and time. Sequential execution, state changes, and concurrency are often clearer in text.
- Several people report professional experience with visual-only systems (e.g., integration platforms, graphical UML tools) that became harder to maintain than text, especially as complexity grew.
Where visual approaches work well
- Strong support for domain-specific, mostly dataflow or signal-flow systems: shaders, audio/SDR graphs, 3D/material nodes, PLC ladder/FBD/SFC, Simulink, Grasshopper, Max/MSP, Unreal Blueprints (to a point).
- Visual state machines, sequence/swimlane diagrams, and timing diagrams are widely valued for understanding protocols, concurrency, and control systems.
- In education, Scratch and similar block languages are seen as successful on-ramps, not long-term replacements.
Visualizations of code vs. visual programming
- Many distinguish “programming via diagrams” (generally disliked) from “diagrams generated from or tightly linked to code” (strongly desired).
- Examples wanted: codebase architecture maps, call graphs, memory layout and cache-fit views, dependency and deployment diagrams, and runtime traces.
- Several emphasize diagrams as executable specifications or as inputs to code generation and formal verification, but with the underlying declarative source as the main truth.
Tooling, collaboration, and version control
- Text wins on search, refactoring, diffs/merges, and integrating with existing tooling; visual systems often lack robust version control and diffing.
- Visual tools that hide parameters in dialogs are criticized as unsearchable and opaque to new maintainers.
- Some note that abstraction and modularity matter more than representation; many bad visual systems encourage dumping logic into one giant graph.
Alternative directions
- Proposals include: richer “2D text” and symbolic notations, stronger type systems and static analysis, moldable development environments, and hybrid visual–text systems.
- AI is expected by some to make “diagram → code” translation easier, possibly outcompeting bespoke visual languages.