End-user development (EUD)
End-user development (EUD), also called end-user programming (EUP), is any set of methods, techniques, and tools that let people who are not professional software developers create, modify, or extend a software artifact for their own personal use.
The classic example is office suite macros and scripting extensions let users automate repetitive tasks within an application they already know. The functionality of spreadsheet software are commonly extended this way.
Beyond spreadsheets, EUD spans several recognizable approaches. Programming by example lets a user demonstrate a desired output and has the system infer the underlying logic. Visual programming tools such as Scratch and LabVIEW let users compose programs from graphical elements rather than text. Trigger-action programming – "when this happens, do that" rules, as popularized by home-automation and Internet of Things platforms – has become a common pattern for end users who want conditional behavior without writing conditionals. Configuration files, email filters, wikis, and web mashups are further instances of the same underlying activity.
EUD is also the intellectual ancestor of today’s low-code and no-code programming platforms, which allow end users to assemble working software from higher-level building blocks into commercial products. This paradigm is more focused on building complete applications, rather than customizing the capabilities of existing ones.
Vibe coding, which is an informal method of developing software using AI code generation tools, provides even greater flexibility in the scale and complexity of software that can be developed directly by end users. Unlike no-code/low-code programming tools, vibe coding does not depend on any prefabricated building blocks.
End-user development, no-code/low-code programming tools, and vibe coding methods allow domain experts to directly prototype and develop the software capabilities they need, while requiring minimal support from professional software developers.
Such methods tools carry risks and challenges, notably security, scalability, and maintainability.
Mutual development is a middle path in which professional software developers deliberately under-design a system, leaving parts of it open for end users to complete or customize. A domain-specific language is one common mechanism to enable this. Professionals design the language to match the vocabulary and constraints of the domain, and end users write custom capabilities within the constraints of that language.
See also
References
- Lieberman, Paternò, Klann, and Wulf (2006). End User Development: An Emerging Paradigm. Springer.
- End-user development. Wikipedia.