We move between the imaginary and the actual all the time in acting and in knowing, insofar as any knowing is already an acting. We do this in two main ways: 1. Taking the actual into the imagination as knowledge of it. Aristotle called...
moreWe move between the imaginary and the actual all the time in acting and in knowing, insofar as any knowing is already an acting. We do this in two main ways: 1. Taking the actual into the imagination as knowledge of it. Aristotle called this form of knowing episteme, and it is for most people what " knowing " primarily indicates. Insofar as the actual is determined in its having-been episteme is in an essential way oriented to the past-perfect, not the past as it was, which can only be virtual, but the past as it has been retained and therefore in a certain sense still is. 2. Realizing the imaginary and actualizing the imaginary real. Aristotle called this form of knowing techne. Most people consider the forms of techne as different types of doing, but just as knowing is already an acting, properly fulfilled doing is also a mode of knowing. In software development, we deal with the line that separates the imaginary and the actual more closely than in most forms of techne, precisely because it is closer to the essence of techne as such than other forms of doing. To see how consider the following idealized model of the development of new software: 1. We begin with the pure imaginary, usually as a set of requirements. These may come from someone else or in the case of personal software development from ourselves, but the pure imaginary must be understood as the initial bounds (telos) of the imaginary real. 2. We may begin by creating an imaginary that realizes some of these bounds, i.e. a prototype, or we may begin by jumping straight in to the full imaginary real. 3. Either way, at some point the pure imaginary has to be sufficiently realized that it will work, at the moment it does work, i.e. the software is running, we have the actualized virtual, the software not as it is in code or diagrams but as it actually runs, which cannot be fully imagined nor viewed in the case of anything beyond truly simplistic software. What has happened here? The line itself has become visible in a dual way, as the realized imaginary and the actualized virtual, yet these are in some sense the same. In a rough way, we can conceive them as the same in the sense that mind and brain are the same – they cannot encounter each other nor be separated, yet they are different – this difference is due to what we know as emergence. This double face is what every software developer must simultaneously see while fixing problems – debugging – the actualized virtual of the imaginary real.