An excellent presentation was given not long ago by Dr. Frank Langbein, about why we should all become programmers. Although I rarely bother with sociology or philosophy, it’s an interesting angle on the free software concept which I’ve tried to elaborate here a little bit further.
In the Beginning…
To a large extent programmers, through creating the software we rely on, have a lot of control over how the information we communicate is represented, rather than diect control of the content. To fully explain why this is so important, we need to look at the development of society over the last 6,000 years.
Initially, just a handful of people were able to read and write, and a small elite determined the production, distribution and interpretation of literature, and so a class system was created, with literacy setting apart priests, royals, doctors and scribes from the masses who couldn’t read or write. During the early centuries of the Church in Britain, only clerics were able to read the Bible, which was further obscured by the use of Church Latin, so the masses weren’t in a position to dispute their interpretations.
We still notice the existence of this distinction in today’s society, as doctors and priests are considered ‘above’ the rest of us.
Eventually, over the last 150 years, most people in western society became literate through public education. Although it was still just an elite that could publish and disseminate information on a meaningful scale, it took effort to control what people read, and deciding which interpretations were valid or not. Sure, there was some censorship, but for the most part the masses were able to decide for themselves what they read. And so public opinion had to be influenced instead by mass media and the press.
Then gradually, since the 1980s, the Internet gave increasing numbers of people access to a means of communicating globally through BBS, Usenet and email discussions. For the first time in history, nobody had much control over the flow of information, at least not until the introduction of the World Wide Web.
It could be argued that HTML and web browsers turned the Internet into another kind of read-only medium that only allowed for the navigation through static HTML pages. An important point to remember is that, contrary to what the mass media used to tell us, static web pages are not interactive, since we don’t interact with anyone in the same way we did through earlier messaging systems. So, for a while the age of the global community became the information age, a transition that very few people noticed.
Very recently, Web 2.0 has turned the Internet into a true global communications medium once again, which is wonderful in my opinion, but it may have created yet another elite – programmers and those with the money to employ them. Instead of censoring communications, they can control the context within which information is shared in very subtle ways, as long as we’re dependent on graphical user interfaces to represent the information for us. Creating context can be just as useful as censoring information.
For example, if we wanted to discourage people from posting long sections of political text on a social network, we can simply remove formatting options, which would then make the text too cumbersome for others to read. While we wouldn’t block too many sites with objectionable viewpoints, search results are manipulated in some cases to ensure they’re never found on mainstream search engines. All kinds of social engineering and perception management is possible through the medium of software, just like the press can engineer public opinion.
Playing by the Rules
When we use software created by somebody else, we point and click at an interface with options already defined for us, and usually oblivious to what’s going on beneath the surface. Most of the time, interfaces are created to narrow down all the possible options to just a handful of relevant ones, and to dumb things down to point-and-click, but there are occasions where interfaces are cleverly designed to manipulate what information is shared. Social networks are classic examples of this, being primarily marketing and data gathering platforms.
FaceBook users were able to prevent others tagging them in photos, until the developers intentionally removed that option some months ago. I wonder how many users noticed that and considered the possible reasons for that? The ‘Like’ button is a covert way of getting people to add their names to brands, which is probably why we’ll never see a ‘Dislike’ button. Langbein gave a discourse on how the ‘Like’ button actually compromises the connections between people.
So we see that a menu is just a list of narrowed down options someone else has made available to us. And our choices are always made within the constraints of such menus, unless the system is hacked and other possibilities become available.
One thing that’s bothered me for a long time is that practically all ICT courses outside university do little more than train people to use the latest version of Microsoft Office. Being able to do this is mistaken as ‘computer literacy’, and this has been the case for at least 10 years now. Very few people are being taught how to create, redesign or work without the interface.
Graphical user interfaces are attractive, they are easy to use, but by their very nature they massively reduce functionality to the options they provide. Most interfaces are also standardised to some degree, being created according to certain guidelines. So, we can see that the ability to program gives people control.
Langbein used the analogy of a game – whoever creates the rules controls the game. When we start to understand the program, we can try alternatives and perhaps cheat. From testing alternatives we can move on to modifying the rules. From that we can move on to creating a new game. This is the essence of hacking. Incidentally, Langbein’s analogy was actually more literal than he probably intended, since cheat codes for games are often the actual memory addresses for the program.
Learning to program isn’t that hard. My own suggestion, which is only one of many possible solutions, is to start off by downloading Visual Studio, getting a copy of Visual Basic Reloaded, and experimenting. This teaches us a little about what goes on behind the interface, and then we can begin to make educated guesses about how web applications work, and how, why and where data is stored.
Remember this is only a starting point, but after learning VB, the syntax of other programming languages becomes easier to learn.