Programming and self de-programming

Software programming is a meta-activity. It deals with becoming aware of a process in its details, even though it is limited to the area regarding the information flow.Recursive algorithms are a good metaphor for self-reflection.

Once reached a certain level in programming, it is almost inevitable that our attention cannot just focus on the understanding of the computer working mechanisms, but also to the inside of our own mind, investigating the way of thinking itself which allows us to deduce, discriminate, program, and associate things and events.
[/en][it]

Software programming is a meta-activity. It deals with becoming aware of a process in its details, even though it is limited to the area regarding the information flow. Programming is a bit like observing the processes in slow motion in order to re-create their sequence, like pulverizing a process in its informative details and analyzing them separately. It is basically a reductionist approach, even though in the object oriented programming and event-driven programming, every object is put in relation to other objects and procedures, in a more “connected” vision.

In the attempt of simulating reality in an ever more accurate and realistic way, there is the quest, only from the mind point of view, at going into the essence of reality, in the inaccessible Kant’s thing in itself. It is a never-ending research, similar to the investigation about the ultimate particles in atomic physics.

In computer graphics and in virtual worlds programming, any simulation, for example a human being movement, requires a careful observation ability, a first step towards meditation.

One of the effects of meditation is the slowing down of mental activity in order to be able to observe the spaces in between thoughts; in certain meditation techniques thoughts, emotions and states of awareness are analized and classified. An approach that could seem reductionist and rational. Even in programming, there is a slow motion analysis of procedures which will subsequently be automized, but the difference lays in the fact that in meditation, as opposed to programming, the observer and the object of observation are part of the same awareness and consequently there is a constant feedback between observer and object of observation which feed each other.

On a programming level this continuos cycle of feedback corresponds to recursive algorithms. Recursive algorithms are procedures that work with a feedback criteria, folding back on themselves and generating results through self-interaction. Recursive algorithms are a good metaphor for self-reflection. Programming a recursive algorithm is not the same as meditating but, somehow, the way of thinking involved when we arrange a recursive procedure brings in that slight vertigo sensation and that fascination we feel when we look into our own awareness.

When I read Gödel, Escher, Bach by Douglas Hofstadter I felt a mixture of amazement and unease in perceiving the Infinite in the recursive themes expressed. Even simply looking at a fractal can give a similar sensation. But doing recursion on ourselves is even more disorienting, as awareness itself is transformed by self-observation.

Another difference between programming and meditating is that the act of observing in programming is goal oriented, whilst meditation requires a careful observation without having any objective nor anything to change; this procedure is more difficult for the ego that always wants to change “what is”. The attitude of a programmer is oriented towards having the ability to foresee and control, therefore towards power, whilst in meditative observation there is letting go and accepting.

Some skilful programmers deal with meta-programming, as in they program systems which simplify or support the work of programmers themselves: programming language compilers, programming interfaces, automatic generators of programming codes and so on. It looks like there is a need to build a program that can substitute the programmer’s task, in the search for the “program of all programs” in an endless meta-programming, which at one point could turn to the programmers themselves and their thinking mechanisms.

Once reached a certain level in programming, it is almost inevitable that our attention cannot just focus on the understanding of the computer working mechanisms, but also to the inside of our own mind, investigating the way of thinking itself which allows us to deduce, discriminate, program, and associate things and events. The attention could turn towards exploring our inner motivation, behavioral schemes and psychological needs. Programmers could activate a reverse engineering process on themselves.

The introspective potentials of programming are not normally associated to programmers, mostly considered as technicians who are absorbed in their own world, detached from reality and from their bodies. And this is often true. Programmers are described by Joseph Weizenbaum as “compulsive”.

Wherever computer centers have become established, that is to say, in countless places in the United States, as well as in virtually all other industrial regions of the world, bright young men of disheveled appearance, often with sunken glowing eyes, can be seen sitting at computer consoles, their arms tensed and waiting to fire their fingers, already poised to strike, at the buttons and keys on which their attention seems to be as riveted as a gambler’s on the rolling dice. When not so transfixed, they often sit at tables strewn with computer printouts over which they pore like possessed students of a cabalistic text. They work until they nearly drop, twenty, thirty hours at a time. Their food, if they arrange it, is brought to them: coffee, Cokes, sandwiches. If possible, they sleep on cots near the computer. But only for a few hours – then back to the console or the printouts. Their rumpled clothes, their unwashed and unshaven faces, and their uncombed hair all testify that they are oblivious to their bodies and to the world in which they move. They exist, at least when so engaged, only through and for the computers. These are computer bums, compulsive programmers. They are an international phenomenon. […]

The compulsive programmer is driven; there is little spontaneity in how be behaves; and he finds no pleasure in the fulfillment of his nominal wishes. He seeks reassurance from the computer, not pleasure. The closest parallel we can find to this sort of psychopathology is in the relentless, pleasureless drive for reassurance that characterizes the life of the compulsive gambler. […] Psychoanalysts, beginning with Freud, saw megalomania and fantasies of onnipotence as principal ingredients in the psychic life of the compulsive gambler. […] The compulsive programmer is convinced that life is nothing but a program running on an enormous computer, and that therefore every aspect of life can ultimately be explained in programming terms. […]

Science can proceed only by simplifying reality. The first step in its process of simplification is abstraction. And abstraction means leaving out of account all those empirical data which do not fit the particular conceptual framework within which science at the moment happens to be working, which, in other words, are not illuminated by the light of the particular lamp under which science happens to be looking for keys. […] The extreme phenomenon of the compulsive programmer teaches us that computers have the power to sustain megalomaniac fantasies. But that power of the computer is merely an extreme version of a power that is inherent in all self-validating systems of thought. Joseph Weizenbaum. Computer power and human reason. W. H. Freeman and Company, 1976.

Weizenbaum’s description reveals without a doubt some typical characteristics of programmers and warns us against the risk of considering reality as a logic sequence of events connected by a cause-effect mechanism and by binary/informative logics, trying to make the world fit into programming procedures. But, whoever has had the chance to deal with programmers knows that most of them are also fond of matters concerning states of conscience and inner search.

The abilities that come into play when programming, have something to do with the ability to be able to detach oneself from an aspect of reality in order to see it in objective terms and observe it in its essence. This detachment is a double-edged weapon. It can lead us to a schizoid detachment from reality and particularly from the self and at the same time, if the same observation skills were turned inwards, we would witness a de-programming of our own mental patterns.

Programmers often consider themes related to inner search on an intellectual knowledge level, or in terms of reaching certain states of mind as if it were a technical or biochemical procedure. However they also have the chance to observe the limits of computational thinking. The approach to different states of conscience and psychedelic experiences have often led to that visionary attitude that has ultimately stimulated the creation of new technologies. Both Steve Jobs and Bill Gates have admitted during interviews to have taken LSD or some sort of mind altering substances.

Substances can expand states of mind that, once the effect is finished, cannot be maintained. Too, using substances carries psychological and physical risks. Nonetheless, they can give a momentary glimpse of wider states of conscience, beyond the mind. Afterwards though the mind wants to incorporate the discoveries made in the field it can control. It invents technologies and models in order to recreate them, as it is not completely aware that it can only simulate a pale reflection of them. However, even a limited reflection of the real creates an inner echo that, as the sound of a distant drum, fascinates us and hypnotizes us.

Thank you for this interesting article. As a professional software programmer and long-time meditator, I recognise a lot of the things you say. In a nutshell, my main motives in software development are ‘abstraction’ and ‘quality’:

Abstraction:
It gives me a real sense of pleasure and beauty to extract abstract classes from concrete real-world classes in object-oriented environments. Boundaries between objects, fabricated by the mind, fall away and the non-duality of these objects arises in the place.

Quality:
Even if software behaves correctly on the outside, according to specifications, this is not good enough. The internal structure should be sound, logical and beautiful. This can only be accomplished if you almost integrate yourself into the source code. You become part of it and your software becomes your ‘friend’.

Furthermore I like the idea that software is on the one side so essential to its users and other side so volatile. What is software without its carrier (CD, memory or disk). It is a pattern needing a carrier to survive, jumping and replicating to other carriers, without loss of quality and not touched by time at all.

Hello. I found your website via a comment you made on DoshDosh. Your essays are very insightful, and I had to comment on this one.

I just finished taking a programming course and I also drew parallels between the detachment that exists in programming and meditation (which I’ve practiced for years).

But I really related to your point about how many programmers experiment with mind-altering substances to reach another level of consciousness. In fact, I’ve had many lively discussions with programmer friends about meditation vs. drugs — which is a “truer” path to deeper consciousness? It can be a fun debate.

Thanks Robert and J. I’ll keep update on your blogs as well. When I was a book publisher in Italy I published books about programming alongside books by Terence McKenna, Timothy Leary and Albert Hofmann on psychedelics and books about meditation. As an ex-programmer myself (sounds like being an ex-junkie in this context 🙂 I saw how programming, meditation and mind expanding substances (from coffee to psychedelics) are connected in a number of programmers. But most of the time I noticed that the quest was about expanding the mind capatibilites in a consumer way, as would be the thrill of a new software release. Where meditation is about silencing the mind, programming and drugs are mostly about being entertained by the mind, even though there are cultures where drugs are used in a spiritual and sacred way. I think though that the mind qualities of subtle discrimination and the observation, needed in software programming, can be useful as well in meditation and in self-observation. If a 180 degree turn is done.