Knowledge Comes First

Software development processes went themself though development. From the machine perspective towards the user perspective. While software development processes were originally orientent to the needs of managing files (computer punch cards!) they are today oriented on business process models.

The drawback of this evolutionary development: many practices are still based on the assumption, that the source code behaves like a stack of punch cards: once created it should better not be touched and changed again. Only with business process oriented software development processes, code generation became popular, but still the systems are organized around the files holding the source code. Still, all software development processes are about identifying a structure of the user's knowledge, create the software accordingly to this structure, and so fix this structure for all users of the software.

With Holistic Programming, the perspective on software development finally reached the users point of view. The first question for in Holistic Programming are: How is the user doing it? What can we learn from the users experience? How can we make it in a way the user likes it most? And this we do before we even think about analysing the knowledge of the user!

Software developers are trained in structured thinking. They are good in analysing. The typical user does not have this way of seeing things, but intuitively applies some structure to his thoughts and changes the structure if it's necessary to understand (or express) the knowledge better. The goal of Holistic Programming is to establish an development process that allows to support the user in his or her way of doing things without forcing him or her into a structure once identified by software developers, but let the user apply or change the structure while using the software.

Holistic Programming is a process for software development that puts the knowledge of the user first. The knowledge of the user is right. The knowledge of the user is worthful. The knowledge of the user is what the software needs to adjust to, not vice versa!

While human beings are very well capable to handle knowledge without applying the "perfect" structure, computers are not. We always need to identify some structure to store data and to apply logic to this data. This structure can come from the user - in a process where the user is motivated to use given structure if it is useful, and is free to create new structures if it's easier to do so.

A Holistic Programming system offers the user to enter knowledge, apply some structure, change structure - even apply different structures to the same data (as users can have different perspectives on the same things). The base of Holistic Programming is an software system that offers this capability. The tasks of software developers in Holistic Programming is then to add the software needed by the users to perform certain activities with the structured data.

See an example (please click the link).