You are on page 1of 8

Danial 1

Joey Danial ENGL 106 Ms. Reynolds 10 April 2014 Fractal Subcultures: The Centrifugal Nature of the Discourse Community of Programmers In this day and age, more and more devices are becoming smart, that is, essentially having computer inside of them. Phones, watches, televisions, thermostats, and cars are just a few examples of these smart devices. This proliferation of technology has made computer programming one of the most important and desired skills of the modern era, as all the new smart devices require software developed by programmers. Programming has existed for nearly 50 years, and in that time, its importance has increased drastically. In this relatively short time, it has also formed a community of those who program, and while this community began small, it has now increased in both membership and diversity. However, most literature on programming focuses on purely technical aspects of programming, or at best human-computer interactions, almost never has programming been viewed through the lens of anthropology, specifically, as a discourse community. I argue that programmers, like myself, do in fact qualify as a discourse community, additionally they demonstrate the centrifugal nature of discourse communities, as seen through a variety of sub-communities. The community of programmers is a discourse community, as I show through a selection of the six defining criteria of discourse communities, as proposed by John Swales, in his article The Concept of Discourse Community. The specific criteria I analyze are as follows: Having a specific lexis, a mode of intercommunication between members, and owning genres.

Danial 2

Lexis I will begin the analysis with several examples of the lexis exclusive to programmers. The lexis of the programming community can widely be broken down into two categories. First, programming languages themselves give programmers a lexis, the words or syntax (more on that later) needed to write actual computer programs. Second, there is a lexis that spans multiple programming languages, which allows programmers to talk about their programs in a programming-language independent way, or even just in a way that is clearer for other programmers to understand. Programming languages exist primarily to allow programmers to create specific programs easily. As technology advances, and as more and more people use computers and computer controlled devices, a variety of specific types of programs need to be created. This is what drives the creation of new programming languages. For example, the expansion of the internet created new genres of software and The languages developed in [the] Microsoft platform (C#, Visual Basic, C++) and Sun and IBM (Java) all of them evolved to produce these software genres (Hannan). So, new languages come about as a result of need, all with a specific syntax which allows that language to do a particular task better than another language. It is clear that a large part of the lexis of the programming discourse community comes from programming languages themselves. Such a variety of languages would normally make it near impossible for a programmer of one language to understand a program made in another language. For example, consider the following programs, they all display the phrase Hello World! but are written in different programming languages. Java:

Danial 3
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); } }

C:
#include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; }

And Python:
print "Hello, world!"

They appear quite different, yet all accomplish the same task. To deal with such drastic differences between languages, the programming community created another lexis, one applicable to programming and computer science as a whole. This lexis can be used to talk about specific programs or languages themselves. For example, programmers like myself will often write about the time complexity of a program we have created, or use a certain language because it is Object Oriented. Intercommunication The intercommunication aspect of the programming community grew from the internet, which itself came from the need to share information between computers. One of these methods of intercommunication is internet forums. One widely used example is the site Stack Overflow. Named for a common error in programming, this website allows users to post and answer questions regarding any variety of program, and in any language. These questions usually involve programs not working as expected. Then other, more experienced members of the community will post answers to the question, and the whole community will vote on the best

Danial 4

answer. Through this, the community can give and receive feedback on programs. This gives rise to a certain social contract, This social contract requires one to give something, and enables one to receive something (Rheingold). Another important method of communication is Github, a website that allows for the sharing of code, along with other features. Through Github, programmers can share programs with coworkers, friends or the whole world. Genres There are a large variety of genres within the discourse community of programmers, most of these fall under the category of programs, but not all. As mentioned earlier, there are a huge number of software genres. Currently there are many software genres, as Hannan says, Today we are observing Web-application genres, Intra-net Application genres, database Application, Integration Applications genres and some lower level genres (machine level language) (Hannan). Almost as important as the programs themselves is the next genre, commenting. All good programmers comment their code, that is, write about the program in the code itself. This kind of meta-commentary is directed towards other programmers, so that they can understand why the program was written the way it was and also help give insight to how complex algorithms within a program work. Centrifugal Nature of the Programming Discourse Community In his article The Concept of Discourse Community Swales, in addition to defining a discourse community, also lists some of their properties. One of these is the idea that discourse communities are centrifugal, that is, they separate a large group into smaller ones based on specific interests. The overarching discourse community of programmers does this in many ways. One is by programming language, that is, which language a programmer does most of his

Danial 5

programming in. A second way the community is divided is by how it uses programming, whether for school, work, or as a hobby. Programming language acts as a major division among us programmers. While certain programming languages are better to do certain tasks than others, programmer, including myself, generally have one language that we prefer using. This may or may not be the first language we learn, but is almost always the one we know the best. For example, I identify as a C++ programmer, despite C being the first language I learned. The differences in language do effect programmers, and allow us to do certain tasks more easily. One study showed that there are probably language-specific features that affect the ease of certain kinds of inferences (Pennington). Such divisions in ways of thought make it easy to see how programmers who use the same language form a separate community, distinct from those of another language. Not only do us programmers of different languages think differently, we also value aspects of programming differently. For example, C programmers value efficiency above almost anything, as a result, their code is often difficult to understand, but is incredibly efficient, using minimal time and memory. For programmers of python, on the other hand, the important thing is being able to make programs quickly, and as such do not worry about the efficiency of their code. These differences in thought and values create sub-communities for each language, and while they may share certain aspects with each other, are distinct. The next major division among us programmers it our use of programming, which often also is a division by experience level. Three examples of this type of division are students of programming, professional programmers and hobbyist programmers. For students, including myself, our discourse community will form around the class or course, as everyone must solve the same problems. Another aspect of the programming student community that separates it is

Danial 6

that it has an additional mode of intercommunication. Peers will often communicate via text about the assignments and projects, a form of communication not often seen in other programming communities. As most programming classes teach a specific language, these communities are subsets themselves of the community of the whole language. The difference between professional programmers and hobbyists is more subtle than the difference between students and either professionals and amateurs, both may be good at programming, both are writing programs that have never been made before, but there is a key difference. As Weinberg states in his book on the psychology of programming, Almost invariably, the sole intended user of an amateurs program is the amateur himself, whereas the professional is writing programs which other people will use" (Weinberg 122). So, it is the audience, essentially of the program that separates professionals from hobbyists and amateurs. This division also effects the genre of programs created. A program made for ones self will most likely be one that automates a repetitive task, whereas a professional will create anything from an operating system to a web server. Professionals, especially those the Free and Open Source Software (FOSS) area, are a particularly good example of the most common form of intercommunication, websites and forums. For instance, requirements in FOSS projects often take the form of threaded messages or discussions on Web sites that are available for open review, elaboration, refutation, or refinement (Scacchi). While this particular communication method is not unique, it is used to a much greater affect, defining a project, not simply asking for help. Once again, these communities are subsets of the larger community of the language which they use. These divisions demonstrate the way in which the programming discourse community separates its members based on specific interest.

Danial 7

In conclusion, the community of programmers is a discourse community, as seen through its lexis, means of intercommunication, and genres. Additionally the community of all programmers is subdivided by programming language and purpose of programming, showing how the community is centrifugal.

Danial 8

Works Cited Hannan, Mohammad. "Analysis on the evolution of the discourse on computer software and programming languages in the light of literary genres and POWERKNOWLEDGE." Computers in Human Behavior 26.3 (2010): 464-473. Print. Pennington, N. "Stimulus structures and mental representations in expert comprehension of computer programs*1." Cognitive Psychology 19 (1987): 295-341. Print. Rheingold, Howard. "Virtual communities - exchanging ideas through computer bulletin boards." Virtual Worlds Research1.1 (2008): 2-5. Web. 27 Mar. 2014. Scacchi, Walt. "Free and Open Source Development Practices in the Game Community." IEEE Software 21.1 (2004): 59-66. Print. Weinberg, G. M. (1971). The psychology of computer programming. New York: Van Nostrand Reinhold.

You might also like