Lindsey Bieda

24

The Importance of a Code Literate Culture

There have been a lot of attempts in order to increase code literacy by fellow programmers. However, I think we need to first step back and examine why code literacy is important prior to attempting to create methods to educate.
All thought is a kind of computation.

- D. Hobbes
At the core learning to program is heavily about solving problems. Problem solving is something that is rather difficult to teach and programming provides a nice outlet for this. The necessary logic understanding for programming provides a way to express problems in an easier more approachable manner. Learning what an algorithm is and even writing an algorithm can demonstrate to a student the creative process for solving problems. Debugging a piece of code teaches the multiple ways in order to examine a problem in order to discover the root cause.

Programming provides an additional creative outlet for many people. Writing code is literally writing. You are creating sentences and the general flow of writing a program should be rather similar to that of writing anything else. From outlining the general flow prior to the writing process to the actual process of sitting down and fleshing out the entire piece where there is a point of entry, the central guts, and the end. Creating a program is simply an art with a different medium.
A programming language is like a natural, human language in that it favors certain metaphors, images, and ways of thinking.

- S. Papert (in "Mindstorms: Children, Computers, and Powerful Ideas", 1980
Learning an understanding of the technology that is ubiquitous in this modern world is increasingly important. Those with the knowledge of technology are better at using the technological tools than those without. An underlying knowledge of how the code is written that drives the world demystifies much of our technologies and makes it clearer what abilities and limitations such technologies have.

As it stands at the moment the code literate of our society are mostly white men, which means the majority of code written today is not representative of our society as a whole. People tend write code to solve problems that are important to themselves. It is essential that the code literate in our society not only grow in size but become more diverse.
Shrutarshi Basu
I was having a wine-fueled conversation last night with fellow CS graduate students about the correlation between programming aptitude and language aptitude -- puns, wordplay, storytelling and the like. They didn't entirely agree with me, but I think that at some level it's all about communication and expression. We have ideas and thoughts and structures in our minds and we want to bring them into the world. We can do that by writing literature and poetry or by painting or making music or making physical objects or by writing code. My personal goal as a graduate student in programming languages is to look at them as a medium for human expression, not just mathematical structures.
Josh Duncan
I completely agree on diversity. People with different backgrounds have different ways of thinking. Different ways of thinking are key to solving difficult problems. And when it comes to program design, having the input of many different types of people will help to create a more usable product.
Josh
Not sure about the value of diversity in programming, at least not the sort of diversity correlated (or inversely correlated) with white men. I treasure diversity in music, literature, and painting because these are mediums for self-expression and reflection on the world around us and our experience with others within it. Certainly programming is self-expression in the same way that any human productions are, but programs live within a tighter set of constraints than do productions in spoken languages and musical/tonal systems. Help me understand-- what sorts of things do people do in programming that come out differently--in an interesting way-- when the programmers have different backgrounds?
Lindsey
Josh: You can end up with a functional end result no matter what, but coming from different backgrounds definitely effects the approach that each person will take. Making an effective team to write code is heavily where diversity comes into play. Each person brings a different perspective to the table and there's really no argument to growing up male is quite different from growing up female.

A team working on some code should be as diverse as its users as they can predict and expect the needs of each individual.

Also, you seem to be forgetting just what people are able to do with code. Not all programming is writing some functional product for an end user or performing some sort of calculation. Some code is written simply for the sake of art and expression. The Demoscene is one really good example of this. Additionally, there are those out there who have and continue to compose music entirely in code.
Josh
Hey Lindsey,

Thanks for your response. I agree that different backgrounds conduce to different approaches, I just haven't seen the correlations that you have between gender, culture, and code styles--which may well be because I haven't seen enough code, especially enough code written by people from diverse backgrounds-- which makes me really curious about the kinds of examples that you and other readers have seen.

Again, hands down no argument against growing up male or female, or from this part of the world or that, or this socioeconomic situation or that, etc., having worlds to do with who we are, experiences we've had, and what we think, I just get stuck on the "how" part-- which to me seems rather constant across people from different places. Don't get me wrong, the "what"s of thinking are incredibly important---so much so that I think they must account for the diversity of approaches, informed by and alongside the differences in spoken languages, values, motivation, and emotions.

It's a good point about programming being put to non-utilitarian uses as well, which you're right to point out-- I hadn't considered that side of things.

I suppose my main point in all this though, apart from sincere curiosity about how different backgrounds conduce to different ways of coding, is that it seems to me the larger motivations for a code literate culture are the utilitarian ones you articulated in your second and fourth paragraphs.

Considered as a utilitarian activity, I'm really not sure that culturally-driven variations produce meaningfully different results. To use an analogy I suspect you'll disagree with (but am not quite sure why), I don't believe the reason there aren't more female chess champions or Nobel prize winners or prolific programmers has anything to do with the way women think. Way more men have been and are involved in these disciplines than women. Reverse that and you'd have a world where women have all the awards, only somehow I don't think that women would try to draw the same conclusion that men have from that fact-- that women are intellectually superior "biologically". No, I think women would think better of that. So perhaps I'm wrong about all of this.

In any case, thanks for the article!
Duncan Bayne
Your statement:

"As it stands at the moment the code literate of our society are mostly white men, which means the majority of code written today is not representative of our society as a whole. "

... is both sexist and racist. You assume that sex and race are closely related to programming style & preferences. My experience, based on ten years of working with male and female developers from New Zealand, Australia, UK, China, Ukraine, Russia, Malysia, Sri Lanka, India and elsewhere, is that they aren't.

I predict that if you gather a group of developers that's large enough you'll get a representative spread of coding styles, regardless of the sex or race of the developers.
Chris
I guess we can expand your last paragraph by saying it's not just all "white" men. We have lots of men of color these days (Indians, Europeans, Americans, Asians), but I'll let your point stand.

We don't know why women (generally) don't end up programming. We just formed a new group of 35-40 (Business Analysts, QA people, and programmers). There are no women in the group. I wish there were more women in our group, but there never is.

I guess I still have a foul taste in my mouth from your last paragraph, even if I agree with your post.
Lindsey
Duncan Bayne: The point of diversity is not the sake of different coding styles it's for the sake of different perspectives. As mentioned in my above comment to Josh this can be highly valuable based on the different experiences of those participating.

Chris: The statement is rather blunt, but it contains a certain amount of reality. It's not only that the programming community suffers from a lack of women, but in the U.S. we notice that there is a serious lack of African American programmers.
Duncan Bayne
Lindsey,

Regardless of whether we're talking coding styles or general perspectives on life, my point stands: you are claiming that one must have representatives of different races and sexes in order to get a good spread.

The only reason this claim could be true is if some perspectives (or coding styles, take your pick) are specific to (or at least strongly correlated with) a given sex or race.

This is why I'm claiming that your opinion is simultaneously sexist and racist. You are starting from the assumption that someone's perspective is dependant upon race or sex.
Lindsey
Duncan Bayne: We do not live in a bubble completely exempt from being treated differently based on how we look or who people perceive us to be. If that was the case there probably wouldn't be an issue of gender or race inequality among programmers. Yet, here we are and there is clearly an imbalance. It's naive to ignore this issue and just assume that the programming world is already as diverse as it needs to be, clearly there is a problem and it is something that needs to be solved.
Wilkie
Fascinating comments. Code literacy is the potential to read and write code, and by extension the potential to use computation to improve society. We live in a segregated world. Computation is not widely available to all cultures and as such this may be exploited by those cultures that do. That is, we risk being forever segregated by technology. This would be extremely dangerous.

I feel that some people are missing the point of the discussion the original author wishes to make, which is the connection between code and the written word. From that point, code literacy is just as important as general literacy.

This has nothing to do with cultural differences with respect to code style, etc. It has to do with the different problems that a culture faces. The diversity of the problems will reflect a diversity in how code is used to solve them. Furthermore, the usage of these solutions (technology overall) will reflect the culture that requires them.

Therefore, we risk the same dangerous segregation as the world had seen with the literacy gap. There were those that could read and write, and those who could not. Imagine a culture that could benefit from computation, but does not have it available. The culture that is cut off from the rest of the world, for instance. Or the nation that is censored or has their view of the world filtered. Or the under-privileged community that does not have computers in their school.

Is it at a disadvantage? Can this be corrected? If these individuals had resources to create new forms of technology, what would change? Those are the questions we should ask.
Wilkie
Duncan Bayne: The "code literate" of our society are white males. This is true. This "means the majority of code written today is not representative of our society as a whole." Very true. Make this just "literate" and replace "code" with "books." If most of the literate were white men and they wrote most of our books, which was true at some time, wouldn't you agree that this would not be representative of society?
max ogden
we need more code art and less startups! (or, more infinite games and less finite ones)
Helen McKay
I really like the color you have chosen to represent the background of your web station. It is a very clever choice.
Tim Daly
Lindsey,

First, I'm amazed that you did not reference Don Knuth about
literate programming.

Second, you might find it worthwhile to look at an example of a
fully literate program in the book "Lisp In Small Pieces". This is
the best example of a fully executable program in literate style.

Third, I believe there is a position on software development teams
for a "software editor" with the task of requiring all software to be
written in a literate style and conforming to normal language rules
for the written documentation. The software editor would come from
a writing background, not a programming background. Ideally this
would be a former book or newspaper editor.

Fourth, I am a little puzzled about how this has any overtones of
"white male"-ness. I worked with well over 100 programmers who
were asian, indian, iranian, mexican, and african. I don't recall any
way I could distinguish their code from any other code. Could you
give an example of "female code"?
Lindsey
Tim Daly: It's not about the end resulting code, it's about the process of getting there. I'm speaking to complete lack of certain types of programmers. The end result may be the same no matter who the person is writing it, but it's about denying computation to certain groups of people. Clearly, this sort of segregation is not something that we should just accept.
john
you're cute
alcuadrado
Nice article. I'm very interested by the initial quote, but I couldn't find its source in google. Do you have it? :)

thanks
Adam
"...but it's about denying computation to certain groups of people. Clearly, this sort of segregation is not something that we should just accept."

I agree that this is something that we should not accept -- if in fact it did not exist. Perhaps it's the demographic of the institution at which I earned my Computer Science degrees which has a strong "Women in Computer Science" initiative and actively tries to maintain a roughly 50/50 split between the sexes in department members, but I have never seen any kind of "segregation" or "exclusion" of women from any activity involving programming. In fact I'd say the opposite is true: many go out of their way to try and involve women whenever possible.

As for multiple perspectives on the development process: absolutely true. Having said that, multiple perspectives does not imply having equal representation of genders or race. It means having people with varied backgrounds. Now sure, women and men tend to have different backgrounds, however that's not necessarily true. I know many women in tech who have extremely similar backgrounds to my own, which is (arguably) why they sought out the same field as myself. Perhaps instead of colouring a lack of diversity in tech as a issue of gender or race, perhaps it should be colored as a desire to see varied backgrounds and experiences irregardless of how the gender and/or race cards play out.
Adam
"I agree that this is something that we should not accept -- if in fact it did not exist."

Sorry, that was a typo: I agree that this is something that we should not accept -- if in fact it **did** exist.
Lindsey
Adam: I think it's time I come at you with some solid data. While you may not observe an imbalance in programmers it does indeed exist:

http://www.math.buffalo.edu/mad/computer-science/cs-peeps.html - 0.25% of computer scientists are black

http://www.cra.org/resources/taulbee/ - "The fraction of women among bachelor's graduates increased this year in all three areas (CS, CE and I), though only 13.8 percent of bachelor's graduates in CS, 10.4 percent in CE, and 14.5 percent in I, were women. "

http://grokcode.com/wordpress/wp-content/uploads/2008/10/programmer-graph3-new3.png - and of course we have the graph of famous computer scientists which shows cisgender women at 2.93%
Adam
No, I am aware of those numbers, what I'm saying is that while the numbers aren't equal, that does not imply that there is segregation or exclusion occurring.
Lindsey
Adam: The exclusion I am talking about is that certain groups of people aren't involved because they aren't there to be involved.
Zack
Wilkie: "Computation is not widely available to all cultures and [...] we risk being forever segregated by technology. This would be extremely dangerous."

I wholly agree. I am a first-generation college student and also in the first-generation computer-literate in my family. Growing up, I had friends whose parents adopted whatever technology they could; they understood that it was the future, not just a path to the future. So I am eternally grateful that my parents could provide me with a tool to learn the future, that they funded my education to embrace the future.

I am now a well-employed software engineer working at a well-respected development company. I bring my own perspective to problems and place unique and personal importance on certain aspects above others. It is my proficiency to provide this objectivity into the solution that makes me valuable, not the characters in the source code at the end of the day. My literacy lets me adjust the solution recipe as I see fit, not exclusively as others may wish.

Now that I am educated, and more importantly earnest, about solving problems with computation, I think about countries that solve Internet connectivity with chicken wire fence and car batteries, and hope that this new technology assists in solving the other problems important to them. It's all about learning and doing; but you must have to learn in the first place. And, as Wilkie stated before, the threats to this literacy of the future are many and significant; we future-literate cannot ignore this widening gap for fear of losing the solutions -- and approaches to solutions -- the "rest" of the world has to offer.