Can English Majors Be Good Developers?
bostinno.com
bostinno.com
Derrida and David Foster Wallace were technically more challenging to my intelligence than what I do now. Don't get me wrong, I love my job, and it is not easy! But it is pretty entertaining (bordering on insulting) to see engineers huff and gruff that no one but engineers can be engineers. There's this weird rift in the developer world where only CS degrees are respected or only wunderkinds who dropped out of high school in their freshman year at a prestigious university are real engineers and everyone else is unworthy of the title. I suppose it is partly because it is a threat to the specialization of engineers (how can someone four years behind me be as good: impossible!). In my experience, however, some of the best people I have worked with are doing something other than what their degree is in because they are curious people who are passionate about lots of things and picked one in college because they had to for the sake of a major. Lots of people happen to be good with both sides of their brain.
;)
Agree 100% about "curious people who are passionate". Interviewing people that have engineering degrees, I find a lot of people I could describe as bored or not curious. Sure it's not the case for everyone, but I think an engineer without an engineering degree is naturally going to be more prone to learn outside of their job. A lot of people with CS degrees seem to think the learning part of their job is done.
It cuts both ways too. It's laughable that an English literature degree would somehow make you more empathetic than an electronics student.
I'm willing to buy that, statistically speaking, more people who major in computer science or math will become good developers than people who major in the humanities, but that's fairly obvious: what you major in is a decent indicator of what you're interested in. Sure, not every English major who learns to code will become a rockstar ninja guru, but that's true of STEM students as well. Unless you can prove otherwise, there's no reason to believe that there's something inherent about majoring in English that inhibits the sort of analytic mindset that engineering requires.
There is a selection bias going on though. If you are a mediocre programmer with a CS degree, you can present yourself as a programmer with little delusion. However if you are, say, an English major programmer, chances are you won't advertise yourself as a programmer unless you really are the best sort of natural.
Skilled learned in an English program certainly may help, but all of the English major programmers that I know have always been programmers. They are naturals, have known it since at least early highschool, and picked their major despite that.
I said "au contraire", all the great developers I know are also great writers. In fact, if a person can't write well, I believe they probably can't code well either. I explained to the tour group that programming is just like writing an essay. Organize your thoughts, logical, clarity, etc.
Some of the best developers I've worked with come from outside tech. Ballet dancer, bus driver, EE, historian.
Because I value communication, intuition, and creativity, I get a little worried when a team only has CS nerds and script kiddies.
I've met philosophy majors, english majors, biology majors, comp sci majors, and even people with no university level education - all were good even great coders. I majored in History and yet have done quite well as a software developer.
I took 2 years of Computer science - it was 2 years of wasted drivel that has helped me solve ZERO real world problems. Also, I hate math. Surprise, you don't need math to code. You need to solve problems at an applied level to be a successful coder - ANY intelligent person can do this if they enjoy actually using coding tools.
Anecdotal it may be, but I've never seen any advantage to hiring or working with Comp Sci grads over other disciplines. So yes, English Majors CAN be good developers.
I prefer to hire history majors[1] as developers. They tend to do well at holding complex systems in their heads, understanding them, and explaining them.
1. Ideally history plus some kind of engineering, where engineering is defined as design, building, and use of practical engines, machines, systems, or structures. Biology can fit this definition, but not, say, sports marketing.
Most people won't find sitting in front of a computer day after day interesting. It takes a certain mindset to get comfortable writing and organizing things in your head an on a screen.
There is something to be said about the analogy to writing, however. When I code, I always feel like I'm trying to tell a story, and my goal is to make it easier for the next person who reads my code (likely me) to understand what I was trying to do. If it's too byzantine and "clever", and I have to sit there and think about what I was trying to do, then I'm doing something wrong.
A lot of what fascinated me was the underlying grammar and syntax of language and how, if you knew how to manipulate those symbols ("words") through the use of an appropriate tool (diagrams, but not the ones you remember from when you were a kid learning to write sentences) you could manipulate sentences almost like they were tree-structures - without changing the meaning.
That said, to _succeed_ as a developer, I felt compelled to go out and get a Master's in Information Systems ... but that was about career success (nobody wanted an English Major to be their IT Project Manager, for some reason).
In every interview I had people pointed to the Philosophy part of my degree as a quaint curiousity and asked about it. I told of how I love writing and debate, and I think that effective communication is one of the most important and understated concepts in every scientific profession.
I love Computer Science but I really love writing and ethics[2] and conversation. I love communication and the art (and science) of effectively conveying ideas. I'd probably love advertising, to be honest.
If I had to do college all over again I'd probably try to do English/Philosophy/CS, with perhaps CS as the minor. I have enormous respect for liberal arts majors, but more-so than other majors, and I think this is very important, the value of humanities degrees are very much what you put into them. It didn't seem hard in my school at least to get a Phil/Communications/English degree compared to a STEM degree, but that in itself only meant that what you got out of a humanities degree was entirely based on your input, and there was a lot of input to be had. I definitely found humanities majors vastly more socially capable than the engineer majors, almost to an embarrassing degree.[3]
Anyway I do think that CS and any communication/writing-intensive major compliment each other grandly. It seems only natural, especially with the intersection of logic in Philosophy or clear composition in English. But I also think these majors compliment CS because I think the largest deficiency in every other CS and engineering grad I've met is that they have a hard time communicating their ideas and debating others effectively. English and Philosophy (and any writing in general) help with that. A lot, in my opinion.
I had 12 years of Catholic Schooling and they stressed the hell out of essay writing. Composition composition composition. Looking back, I feel that was a really important thing, and it made all of us better people, in terms of relating and communicating.
In fact, and I think this is the most important takeaway from my silly ramblings here, I think that writing and writing a lot makes you more a more empathetic person. I think that the more you have to put down your ideas to explain or persuade other people in a medium that you can look back on, the more you will have to consider and understand other points of view. Doubly so if you are required to write about topics that you may not be fanatic about. Anyone can write an argument about why, say, PHP sucks (or not) without getting much out of it for themselves, since they are just puking their zeal onto paper (or pixels) and probably don't give all too much thought to really convincing people. But having to consider things that you aren't already a true believer in takes a lot of nuance and brain-turning. I think, anyway.
[1] http://i.imgur.com/6oTix.jpg
[2] in the Aristotelian/Kant/Mill/Humanity's greater good/etc sense of the word, not the vague-ideas-gotten-by-parents-and-peers sense which is usually picked up on (see for instance almost the entire abortion debate)
[3] I'm quite the introvert and it took me a long time to overcome the social interaction thing that seemed to plague so many of my peers in college. I was supremely shy as a kid and tended to hide behind my mom whenever we went somewhere. My 8th grade class was just 21 people (two groups of 10 and 11), and my high school was just 500-600 people. Going in to college I was unused to, well, interaction.
In my freshman year of college it all hit me. My college (RPI) was known for being an introverted place and I met so many great people who almost literally never left their rooms. Great minds and personalities who were self-sequestered from the world.
It felt tragic sometimes. I met and found a lot of people wanted to meet people but had a great fear of simply being in public spaces more and exchanging pleasantries. Others still, and this was not an uncommon opinion, would disparage the idea of small talk as useless. It's funny but, of all places, once I came to college and met enough varied and amazing people I became vastly, vastly less shy. It just wasn't worth it to be shy when there were so many great people to meet.
I do not come from an English background, nor an engineering/CS background...and while I am not a developer (I do code, but not full time), I can lead a team of developers just fine within my area of expertise. I wouldn't hesitate to put an English major with moderate coding skills on a team that was tasked with Natural Language Processing.
>He wrote Perl for all you youngsters out there
I don't know what's young for you, but I'm 24 and was perfectly familiar with Wall's work and background.
With weaving, you have to be attuned as the whole structure of the cloth before you start writing. You need to see the big picture and concentrate on the details.
Yes, there is no equivalent refactoring tool like an IDE for weaving but I belabor my point..
That said, I think maybe you haven't read good enough fiction :)
Last fiction author I read was Alice Munro ("For the love of a good woman")
The first bubble was about 'boots on the ground' and an extremly limited pool of talent. I was getting calls to move to New York, California, Chicago... because I KNEW JAVASCRIPT. There was no stack-exchange, no learning blogs and most information was still gathered through purchasing the O'Reilly on X or submitting a question to X's newsgroup.
So the phrase "how many English majors on your dev team?" really just meant (IMHO) "How many people do you have that really don't know what they are doing"... I don't think reading that phrase in today's bubble scenario makes as much sense as it did twelve years ago.
One of the best developers I know was an English major. He's even more amazing as a leader. He now leads a large team of engineers and I hope to someday get the chance to work with him again.
I would expect cult behavior from certain kinds of developers however.
A lot of programming is trade work, like being a carpenter or a glass blower. Anyone can learn to do it with guidance and practice. You don't need a CS degree to write a good shell script, a CRUD web app, etc. Just the willingness to learn the tools and some fundamentals.
It's not until you get in to deeper stuff like system services development or internet plumbing that the CS degree becomes more necessary.
Looking back, though, that choice of major reflected confusion on my part more than any connection between liberal studies and software development. You would have caught me writing custom model-dialing scripts on OpenBSD back in junior high.
Soo... yes.
My creative writing was hit-or-miss. I once got last place in a poetry slam, but that was a problem with delivery/performance rather than an issue with the writing. I did get good at creative writing, but probably not good enough (at least, not in time for the real world) to do it full-time. Ultimately, I'd say I failed (I was 18-22) because I didn't understand people at that age. Prose was no problem, but I sucked (back then) at actually communicating.
I think that my writing and game design experiences gave me a lot in terms of being a good programmer, however. I've built some good games, and some bad ones (that the world will never see, mercifully). The bad ones were instructive. Watching a design utterly fail because of too much complexity is good preparation for software, because 90% of the pain we experience is dealing with badly designed, over-complex cruft.
We need more competent communicators, by far. No question in my mind about that.
Why? Physics is about relationships. Sure, there's math. But it's about understanding the big picture, and the relationships between the pieces. It's about how to convince the math to solve the physics problem.
I suspect the same thing is true for programming. People who randomly type until it compiles can get programming jobs. They can even do well at large corporations.
People who understand the relationships do less coding. But the coding they do is more likely to be correct.