I'm one of those English majors who pops up in interesting places (in this case, software engineering).

After more than a decade in the field, I continue feeling that my degree was excellent preparation for writing code. Allow me some bullet points:

* The typical English major is drilled in taking an impenetrable text and constructing an interpretive narrative (an essay). Much of the major involves writing essay after essay and having it critiqued by professors. The progression of the English major is that typically you go from thinking you're a hotshot writer to understanding that you are a bag of presuppositions and ill considered narratives. With that understanding can come depression or the knowledge that there is never a single interpretation, and that you are looking at one facet of an ineffable infinite. If you are not overcome by dread, this skill comes in handy when it comes to interpreting business requirements.

* A well trained English major is the first to point out that their precious interpretation is probably not correct -- that it is but one of several paradigmatic interpretations, and is, furthermore, culturally situated. Once again, this either brings nihilistic paralysis or a 'skillful means'-type approach where you tend to respect and incorporate other peoples' viewpoints. A piece of programming is ultimately the synthesis of many viewpoints, and the skillful developer must understand that they are channeling the viewpoints of all the project stakeholders when they put pen to paper.

* The close reading of poetry, especially poetry across multiple cultures and viewpoints, is excellent preparation for reading and appreciating other peoples' code--the most lacking skill in the industry today. You adopt the same mindset as a reader of poetry--first and foremost, trying to understand the situation of the author. Secondly, examining and critiquing your own visceral response -- are you irritated because the code is stupid, or is it perhaps written in a way that is consistent with an approach you do not yet understand? Thirdly, understanding that you are reading highly structured text -- what is the discipline behind the programming language you're encountering? How do its keywords and cadences lend themselves towards certain modes of expression and functionality?

* In a more theoretically oriented English degree, there is much focus on language as a construct -- as the lens through which you view the world. This is incredibly true in software development, where the narrative of the code can be so oblique to the narrative on the server (for example, the way in which most modern languages behave implicitly through inheritence, and the way in which structural code can only begin to point at the interaction between threads, processes, and servers).

* As an English major, I understand that I am coming from my own experiences, and I believe that the understandings I mentioned above can be gotten in any field of study. I do feel that my English major was valuable in particular because of the emphasis on the critique of the student's writing. Over the course of several years, my fundamental assumptions about anything and everything were repeatedly and effectively critiqued by my professors.