PANGARO Incorporated

Software Philosophy, Design and Development

"There are no such things as personal computers; only lots of impersonal ones."

(c) Paul Pangaro 1976.


Index to this page:

Personalizing Software
Expressing Purpose in Software
Conceiving Software
Designing Software

Personalizing Software

Our everyday conversation holds pleasure in the fact that when we speak to someone, what we say to them depends on who they are. This includes what they are asking right now, where they are, what we think they know. When we are on the receiving end of such an interchange, we feel recognized and connected. This makes our conversations personal and it also makes them tremendously efficient.

What I mean by the quotation above, which has been an expression of mine for nearly 20 years, is that commercial computer software simply does not support the most basic feature of human conversation: that of speaking to the individual. And it can, as the systems we built throughout the 1980s attests. Of course in the 1990s we will use the World Wide Web to create and disseminate theses systems, and help solve the problem of information organization that plagues the use of hyperlinks, that are both the power and the bane of Web interaction.


Expressing Purpose in Software

We commonly think of language as containing, in the sentences, words and such, what we mean. This is not the case, however. Here is the illustration I always use to explain my point: If I say to you, "May I have a glass of water?", you inevitably will bring me water that I can drink. I didn't say that I was going to drink it; you assume so, and thereby can act on my request. Your ability to interpret what I say depends on your knowledge of my purpose. Knowing my purpose, you can interpret what I say correctly. If I don't state my purpose, you must correctly infer it in order to understand me as I wish to be understood. If you infer the wrong purpose, or misunderstand what I need, you cannot understand what I am saying.

This is as true for interpreting statements as it is for questions; it is as fundamental to understanding each other as anything.

The essence of my point is this: successful conversation includes purpose, whether explicit or not. To incorporate a description of purpose into our software user interfaces is both desirable and possible (the required formalism has already been applied to organizational modelling; I have also made presentations on the idea). To actually do so would be revolutionary.


Conceiving Software

Software philosophy in general refers to the informing principles that guide the conception and execution of software development. Cybernetics can provide a philosophical foundation, that might be crudely expressed in the phrase "coördination software." A more general characterization would be to say that, our software philosophy is to provide a relationship among participants, rather than an interaction between user and machine. Examples of software that has been constructed with these values are: Most research and development, whether commercial or academic, focuses first on the immediate requirements of the user to manipulate the software. This is a focus on conventional interaction. However the interest of the user is never on this user-with-machine interaction for its own sake; rather, it is a means to an end. Such a higher-level purpose is usefully couched in terms of a relationship, whether between (a) the individual and others - in the case of training, groupware and enterprise modelling; or (b) between the individual and his or her self - in the case of design, planning and decision making. Of course there need not be a hard distinction between these two cases, because in practice they are symmetric: both involve multiple perspectives that must be displayed and manipulated individually.

Designing Software

Through a series of projects, directly for clients or for internal software development, PANGARO Incorporated has developed a systematic approach to the software design process which identifies and structures the following components: Note that prototyping and testing is a core component of software design, not just software development.

Of course the design process itself is circular, where the individual components loop back onto each other in an iterative process.

Related Links:

Corporate Consulting
Technology Strategy
Organization Modelling
Software Philosophy, Design and Development (this page)