Walking Through the Code
September 22, 2012 § 2 Comments
I used to be a programmer, once upon a time. I was wildly enthusiastic, if barely competent, at the job, banging out Visual Basic and Oracle code for a business application; but while I had been trained to code by my employer, I didn’t have an academic foundation in programming to begin with, and wasn’t given one by them (“Because We Say So And We Pay You A Salary”). I am the kind of annoying person who likes to have a theoretical framework around what he does. This search for deeper meaning or philosophy behind my work, the why behind the what, could have led me to pursue further studies in the philosophy of programming, were such a course to exist; instead, it led me to business school, and the rest, if not exactly history, is at least fact.
I have often reflected wistfully on the road not taken. I had enjoyed the purely intellectual aspect of programming, both for its own sake and for what it accomplished. My current job, while fascinating in its own way, is exclusive in its focus on business consequences; intellectual aesthetics are rarely exhibited and seldom appreciated. So when I spied a bright red cover with the words. ‘The Philosophical Programmer: Reflections on the Moth in the Machine’ nestling on a Strand bookshelf a couple of years ago, I bestilled my suddenly fluttering heart and lunged for the book from across the aisle; long story short, that’s how I ended up reading it last week.
Unfortunately, the title promises more than the book delivers, like the over-hyped beta release of a long-awaited much-advertised software upgrade. Kohanski casts a wide net, readership-wise, and self-confessedly attempts to make sense to ‘English majors as well as to professional programmers’. In order to accommodate such a wide spectrum of familiarity with his subject, he has to cater to the lowest common denominator, and introduce the monitor, the CPU and the keyboard of the computer, explain binary algebra, and define rather basic terms like ‘compiling’, ‘de-bugging’ and ‘algorithms’. It is a slim volume, and by the time he gets to reflecting on programming itself in a non-trivial way, it is nearly the end of the book. Most of the book reads like a primer on programming, for terrified computer innocents who insist on approaching the subject gingerly, and who are apt to get startled by sudden movements.
This is a pity. A discipline that makes liberal use of words like ‘language’ and ‘logic’ can never be far from the philosophy of science; number theory, so closely associated with computer science, has a rich tradition of philosophy. But more importantly, some of the biggest moral questions of our generation involve the use of computers (fellow blogger Rick Searle has posted about one just today), and a book on programming philosophy can afford to gloss over them no more than an essay about a chemical plant can neglect to cover the environmental impact of its effluents.
After all, pervasive computerization is the ultimate product of a century long process of industrialization that has made the division of labour and progressive specialization the highest virtues of business administration. This process began with a factory assembly line that exchanged the broad knowledge and skills of an artisan for the cold, hard economics of efficient production; the average industrial worker is no longer a skilled technician but a replaceable cog in the wheel who works as mechanically as the machines he operates. Of course this had many benefits for customers –goods come out faster, cheaper and better – but the de-skilling of the workforce cannot be denied.
But we didn’t stop with blue collar work. Armed now with powerful computers, we have continued this process of dehumanization to strip white-collar jobs of thought and judgment as well. One might argue that people are now freed up to exercise judgment of a higher level these days, by allowing more mundane decisions to be automated; but programmers continue to chip away at those higher decisions; every year, more and more of the intelligence in the business moves away from intelligent businessmen and women, and into business intelligence software. Human judgment will then flee to even higher levels, but fewer people, at more exalted levels, will be called upon to exercise their minds at their job. I am certain that many people, at junior and mid-level corporate positions – accountants, librarians, cashiers, admin assistants, salesmen, even traders on the stock market – are using less original thought today than they would have used in an identical job 20 years ago. This has had – and continues to have –implications for the future of the workplace, and how we perceive the time we spend at work, but the phenomenon goes deeper. The inextricably interwoven nature of computer programs and our daily lives has led to a fundamental change in the way we perceive and interact with the world around us. As Kohanski says:
The reduction of phenomena to numbers that fit into the orderly structures of mathematics also seduces us into believing we can avoid the unruly and chaotic real world. But the raw material of thought is information, and to the extent that we accept computer-digested data instead of seeking it on our own, our ideas about the world are based on incomplete approximations filtered through some programmer’s judgment calls and the limitations of the machine
Millions of people confuse virtual (and therefore incomplete, and inexact) representations of information for reality itself; we confuse a Wikipedia article with unimpeachable truth, a malicious YouTube video with the arrogance of an entire nation, a quant algorithm suggesting the immediate purchase of a penny stock with a sound investment, and a Facebook friend with a real one. From some of these delusions, we are soon rudely awakened, if we are lucky; we may remain oblivious to the rest our entire lives.
There is a positive side to this debate, of course – I am no Luddite, and do not think it either practical or beneficial to go back to pre-computing days. But it is important to recognize that the positive side of computing accrues to programmers, or to those who have a deeper understanding of computer systems. Kohanski says, and I concur:
None of our previous tools ever demanded that we examine and analyze the way we think to such a high degree, and for us this is a new and not very comfortable experience. Before the Computer Age, it was easier to overlook inconsistencies in our ideas and to compartmentalize our thoughts so as to ignore the contradictions among them, by and large
This enforced and heightened consciousness of the act of thinking, both integral to the discipline and unique to it, is what provides programming with the aesthetic philosophy that I have been trying to get to the bottom of, all these years. Kohanski struggles to explain what an ‘elegant program’ is. To me, it is one that makes its reader most conscious of the clarity of his own thoughts.
It is disturbing to contemplate the rapidly solidifying digital divide, on the one side of which live the well-paid few, secure in their jobs and actualizing their selves by working on intellectually stimulating challenges, while on the other languish the many who joylessly use the tools built for them in narrowly prescribed ways and derive no meaning or satisfaction from their working lives. Kohanski’s book, though adequate as a beginners’ guide to programming, cannot possibly justify its name in the absence of a deeper discussion of this, and other similar, narratives.