Recently on
Slashdot there have been many
discussions on the death of programming. The main focus of these discussions seem to be improved graphical tools for programming and how they will render programmers obsolete. I agree that improved graphical tools allow end users tosolve some problems themselves. However this argument completely ignores, as many who do programming will notice, that programming often involves abstract concepts that are not easily expressed in a graphical form.
I have seen many gui-based"object design" tools throughout the years, and many of them are indeed useful, but none of them are close to replacing programmers yet. I have my doubts about whether there will ever be good graphical ways found to express many important programming concepts. Many excellent examples illustrating poorly conceived graphical renderings of abstract concepts can be found in everyday tools like office suites.
Another major point I see raised in these discussions is that as more software is created, there will be fewer tools that still need written as these older tools will do what is needed without building new tools. This is correct to a point, however as new technologies and new data models surface and need manipulated, the emergence of which do not appear to be slowing down anytime soon, new programs will need to be created to fill those needs.
There has also recently been an article on
Croquet, a new 3d collaboration system. It looks like a rather nice 3d conferencing application; they call it an "operatingsystem," but I do not think that is either accurate or desirable. Indeed, they do not appear to be focusing on interacting with the hardware,
the definition of an operating system. What they actually mean is " interface, " and I think their time is best used doing exactly what they are now, building an interface to run on top of other operating systems, avoiding re-implementing existing systems. The revolutionary parts of Croquet revolve around building new interfaces in 3d space for computer interaction. I agree that there are many good possibilities here, and I will be watching this application closely. Care must be taken not to repeat mistakes of the past; trying to build real world objects in computer space that don't make sense or are not as efficient as a more computer-centric interface. Does anyone else remember how attempts to translate real-world objects like
phones into computer interfaces have turned out?
Another major point of the system is shared workspaces. A good system to implement these would indeed be useful, but having such an interface is likely to involvethe introduction of new problems as well. Imagine, for example, that you areworking with some documents on your desktop, you go into an application to edit a document, then you return to the desktop to open another document, only to find it has been moved somewhere else. Or you are editing your document, and other sections of the document are changing which you are referencing with your text. Such systems will be useful in close collaboration projects, but as with modern systems a personal workspace is still going to be necessary, and clearly defined rules established in the shared areas, to keep complete chaos from taking over.
Things get even more interesting when you realize these two concepts are interwoven. Undoubtedly, Croquet-like systems will allow more concepts to be expressed in a graphical way than today's 2d systems can. The limits on graphical representationof abstract ideas still holds, indeed there seem to be more problems representing 3d objects with 3d design tools than 2d objects with 2d tools. Now you need to do things like allow motion in three dimensions using even more complicated ideas. It seems to me that if systems like Croquet become more popular, we are going to need more programmers, not less, to feed the endless thirst people will havefor new 3d areas and 3d data representation.