Software Engineering, for End-User Programmers?

Research discussed at WEUSE V: The 5th Workshop on End-User Software Engineering indicates that, in the US, there are about four times as many people who do programming at work (12 million) as there are professional programmers (3 million). Add in another 55 million of us who use spreadsheets and databases (and thus may also be considered to be doing programming) on the job, and that means there’s probably a lot of undependable, error-riddled software being created. As workshop participants noted: “When the software that end users create is not dependable, the people whose retirement funds, credit histories, e-business revenues, and even health and safety rely on decisions made using that software can face serious consequences.”

The workshop participants discussed end-user programming with a specific focus on the software engineering that is required to make it a more disciplined process, while still hiding the complexities of greater discipline from the end user. Proceedings from the workshop are available in a report at http://www.sei.cmu.edu/library/abstracts/reports/09sr015.cfm.

One approach reported on in the workshop: distributed cognition, advanced by Margaret Burnett et al. From the SEI report: “Thus, instead of trying to build systems that solve this type of problem: ‘What can the system figure out automatically so that users need not think too hard?’, [the] distributed cognition perspective is that the problem statement becomes: ‘How can end-user software engineering tools help end users think?’ “

Advertisements

One response to “Software Engineering, for End-User Programmers?

  1. End-User Programming also has significant impact on software architecture. As we try to give end users more empowerment, we also have to build in architectural constructs that support these end users and make their jobs easier without sacrificing the system’s quality attributes. Systems will have to be much more robust to account for inexperience, variety of end users and multiple platforms.
    For example, architectural constructs that support context awareness — not only execution context, but also user context — can be very helpful to an end user. Architectural layers that expose data for mashup users without exposing too much information about the data sources that could lead to vulnerabilities is another example. In essence, end user empowerment requires much more robust architectures and creates new types of tradeoffs.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s