Basic End User
The basic end user of an application takes on the least amount of responsibility possible. Their main responsibility is deciding which data to input and then to input it. In a web app, the input that they give is in the form of clicking, scrolling and typing. As such their responsibility is to be familiar with common user interface elements. E.g., they are expected to know that three vertically aligned dots is a signal for more options, or that underlined/coloured text indicates a hyperlink.
They do not configure the application - they do not tell it how to behave.
The power user is someone who takes on the responsibility of configuring an application. They have more power than basic users because they have given the application more data than it needs to merely function, and the application in turn offers broader and deeper functionality. They may make a decision about how an application behaves, but may not change what the application itself is capable of. They are just a user who spends time in settings pages.
In programming terms, the power user is given control over some part of the application\'s state, but does not have the ability to write instructions for how the state will be processed.
Scripters (such as data scientists who script in Python) are often not engineers, but are instead just power users. A script may not necessarily contain any input points and in that case is not an application to be used arbitrarily by others.
Inventors write software for programmer engineers to make applications from. The people who created the web browser in the example above may be considered engineers. They provide state for programmer engineers to change, and they provide a means by which programmer engineers\' instructions may be executed. By providing these things, they create behaviours for programmer engineers to manipulate. Programmatically, the inventor is totally unconstrained; their only contraints are the hardware resources allotted to them.
|Basic end user
|Provide input data
|Use of the application
|Programming of application
|Provide configuration data
|Specify some application behaviour
|Options provided by application
|Specify all application behaviour
|Set of behaviours in software stack being programmed
|Provide state and a way to execute instructions