The bar for technical literacy has been raised as the world and its people are beginning to understand just how deep technology has been interwoven into everyday life. As Annie mentioned in her post, the ability to program, or write software, is a skill that can have enormous implications on your future career. Because of this, “coding bootcamps” are cropping up nationwide, web applications have been built to teach you how to write software (for free), and Computer Science enrollment has been increasing nationwide (with our department experiencing unprecedented growth). With this new wave of software learning and education, the level of understanding can vary significantly from person to person. Similar to Lev Manovich’s explanation of how the “complexity and distributed architecture of contemporary large-scale software poses a serious challenge to the idea of ‘reading the code’…in a way that can be discussed in articles, conferences and public debates by nonprogrammers,” a lack of understanding regarding software technology can lead to serious communication issues in the IT work space for newcomers.
Once upon a time, the only way to program was by writing machine code or assembly code, which had a one to one correspondence specific to the machine or processor the software the being written for. An example of this type of software is:
To write this type of software, the developer must have understood how the underlying hardware functions at a very deep level. Today this is not the case. Nowadays, programmers have been blessed with a variety of different “high-level” programming languages that are much more reader-friendly to the untrained eye and do not require the same amount of knowledge regarding the hardware inside the machine. Both of the following pieces of software, written in different languages, illustrate how to print the characters “Hello World!” to the display screen:
Yes, much has changed in the world of software development that has enabled those with even amateurish levels of experience to create increasingly sophisticated, and sometimes even highly useful, computer applications. But the issue of being able to communicate about the underlying processes of these pieces of software, at different levels of granularity, is a difficult thing for programmers (both new and old) today to grasp and yet, it is a soft skill that employers put at the top of their list when recruiting new employees. With it taking significant amounts of experience to be able to speak simply and accurately regarding software, will software ever prove to be an accessible discussion in the public forum as Manovich would like? Understanding this new world will take dedication to clear up the fogginess behind all of the bytes and bits around us, but can prove highly rewarding to those who persevere. Especially to those who can bring public awareness to software and its implications.