End-user development is when the end-user of a software program is responsible for developing new applications or assets within that program. This is the opposite of more basic software development, where the company responsible for creating a program is also the one developing all applications and assets for it. Major advantages of such development include the fact that it can make development time faster and that users can end up feeling more engaged with the software. End-user development has been utilized in a number of different programs, including computer games, illustration programs, and scientific modeling software.
The major difference between end-user development and regular software development is the way a user engages the software. Standard development usually involves only the software designers and developers creating new applications and uses of the software, which are then provided to users. Through end-user development, however, a program can continue to grow after it is released, as users create new applications within the software or utilize the program to create new assets. This allows a software developer to release a program that is complete, but that is not intended to satisfy the needs of every possible user, as the users themselves are given the ability to make the software meet their needs.
By utilizing end-user development, a software company can also allow users to feel more personally involved in the creation of new content. This is not always true of all users, since some individuals are likely to use the software and content developed by others, but not engage in development themselves. Such a program is likely to be more customizable and may generate a larger user base, however, as people often become loyal to software they are able to manipulate.
End-user development has been implemented into a number of software programs for various uses and reasons. Computer games, for example, often include toolsets or development kits that provide players with many of the same tools used by the developers, allowing players to create new levels, environments, creatures, and experiences to be enjoyed by other players. Art programs can also include similar features, giving users the ability to create new tools for use in the program itself. Scientific modeling software can utilize development by end-users to give them the ability to create various scenarios and script different behaviors, allowing users to test various possible situations and create realistic virtual models of physical events.