
To write better code, read Virginia Woolf - my_first_acct
http://www.nytimes.com/2016/05/22/opinion/sunday/to-write-software-read-novels.html
======
aub3bhat
I guess what NYTimes articles praising liberal arts education miss out on is
following:

No one is denying importance of learning history, literature, etc. What people
have begun doubting is if its really worth to spend 200k$ & four years
majoring in liberal arts alone, vs. Majoring in Computer Science while taking
courses in / reading literature.

This article is equivalent to telling a competitive swimmer, to study calculus
since Navier-Stokes equations governing fluid dynamics (and thus water)
require understanding of calculus to be solved.

The question worth answering is why quality liberal arts education still has
such a high price tag? Especially when the monetary returns are so poor?

~~~
x5n1
branding. you can get a liberal arts education for a fraction of the cost by
traveling the world for the same amount of time. but that's unfortunately not
apparently worth much to anyone. but the liberal arts education brand and
rhetoric are as strong as ever.

my take, most people are machines in terms of work. their employers could care
less who they are as people as long as they do the work, take orders, and
don't create unnecessary shit. maybe just maybe you might be able to wiggle
your way into management if you have a liberal arts education, but then you
need to spend just as much time getting good at writing code, and doing it
constantly 9-5.

better a computer science degree and an mba if that's what your goal is... and
spend two years before that backpacking to round yourself out.

~~~
ktRolster
_you can get a liberal arts education for a fraction of the cost by traveling
the world for the same amount of time._

A lousy liberal arts education, maybe. By traveling, you see a lot of
different viewpoints of average people around the world. But by reading, you
get to see into the minds of the greatest people who ever lived.

Both of those things are good, but there is a difference.

~~~
tmptmp
>>By traveling, you see a lot of different viewpoints of average people around
the world. But by reading, you get to see into the minds of the greatest
people who ever lived.

Agreed and today we can read the great works almost freely thanks to projects
like Gutenberg [1] and Internet Archive [2]. So, essentially you don't need to
spend $200k for this type of knowledge. I have educated myself thanks to the
books on these sites. Of course, I didn't get access to the network of people
that a Harvard graduate might seem to have. So, you have to figure out if it
is worth to spend $200k or whatever to have access to that network.

[1] [http://www.gutenberg.org/](http://www.gutenberg.org/) [2]
[https://archive.org/](https://archive.org/)

~~~
ahussain
It's not just reading though. Most of the value in a good liberal arts
education comes from discussion with peers, and professors guiding the reading
in a way that helps to avoid confusion and misunderstanding. Many 'great
thinkers' cannot just be picked up off the shelf.

~~~
tmptmp
Yes the discussions and debates do help. But this can also be had today with
high quality forums (e.g. HN forum, google groups etc).

>>Many 'great thinkers' cannot just be picked up off the shelf.

That's where a little bit of internet literacy (mainly the google-fu skills)
helps a lot. It's not that difficult to acquire it either. If you acquire
these skills (e.g. in your high school) then finding great thinkers is not so
much of a problem. In fact, I did it exactly in such a manner: I am from a
third world Asian country, where such great professors are mostly non-existent
or if they do exist they are almost always inaccessible to poor people like
me. So, what did I do? I struggled with Google for some time, and with the
help of some sites I acquired the immensely important google-fu skills. Then I
landed on the Wikipedia knowledge-galaxy. From there the access to 'great
thinkers' was just a click away. As far as discussions and debates are
concerned, then I read books presenting opposing views on important issues
like religion, economics and politics. e.g. In case of religion the theists'
point of views, Bible, Quran etc on one hand and Plato's dialogues, Darwin's
theory, Voltaire, Khalil Jibran, Richard Dawkins, Sam Harris on the other
hand; Marx's Das Capital and communist manifesto on one hand and criticism of
Marx and Atlas Shrugged on the other.

I engage in online debates on forums like this.

Thanks to today's internet and the sites like the ones I mentioned in the
earlier comment on this thread, a person who has far less money than $200K
(hardly $2500 per year) can actually acquire so much knowledge. __

 __It 's not bragging though, as the same knowledge has made me more humbled
too.

~~~
internaut
That's a good insight. I endorse your reading strategy, if only more people
used it!

I think our society is still struggling to deal with the fact that the
information distribution just suddenly stopped being a concern.

You just spent 150 grand on an education you could have gotten for $1.50 in
late fees at the public library. \- Will, Good Will Hunting

It is much easier to grasp the network of knowledge that exists when you have
Wikipedia and forums like HN. Having context is important because it helps
direct you. Being part of the tribe is immensely important if you're to be
motivated over decades.

The main problems now are motivation and focus. I am confident these are
solvable problems but there's a lot of people out there who haven't even heard
of Wikipedia. They're not ready for it yet.

I am much less worried about the Net than what the Television did to us. The
Net is intrinsically deeper than the Television.

There is a sports commentator called Joe Rogan who expresses this well. He
often exclaims how much of a knucklehead (his own words) he was before the
Internet. It opened up a new vista to him. Not everybody will be as
immediately perceptive as Rogan but I see even people who limited technology
skills gradually enhancing their comprehension on a range of issues. It won't
lead to utopia but it will definitely make the future more interesting, and
ultimately that's all I ask of any technology.

------
quxbar
As a liberal arts major who is now a developer, this article makes me cringe
incredibly hard. It's gut wrenching to see such vapid simplifications of both
art and science. The author seems to have never really pierced the vale of WHY
any particular coding approach was better, it's all 'so these were like
musical notes and this person was a pianist so BINGO problem solved'.

And yet the core idea is valid.

~~~
sthielen
I agree. I studied literature in college (coincidentally, my thesis was on
Woolf), and am currently working in a technical role at a startup.

I've found incredible value from studying the humanities, especially
literature. Some of the courses I took in college completely changed the way I
view and understand the world. Literature has been a constant source of
inspiration for me, and without doubt has made me a more whole, critical, and
creative person--something that has had a marked effect on my career in
startups (Caveat: It helps having grown up coding alongside this, I suppose).

With that said, I found the author's examples to be terribly reductive.
Studying liberal arts is not going to make you better at finding memory leaks
or optimizing algorithms. Exposure to the humanities will, however, make you a
more well-rounded human being and help you to contextualize and understand
big-picture problems (vision, positioning, identity...the WHY behind the
product) from a different (and, of course, not always better!) perspective
than might typically be found at a company filled exclusively with STEM
graduates. I agree with the headline and the spirit of the article, but it's
too bad the author's defense of it doesn't stack up.

~~~
foxhedgehog
As another literature major who now works in a technical role, I can't help
but notice that this comment and the one above it are among the best-written
in this thread, nor can I forget all of the general panic that went into my
nomination anytime that college programming groups had to produce something
written along with our code. I smirk somewhat at the idea that Virginia Woolf
has much to teach you about clean code. I do, however, think that writing is a
very general-purpose cognitive skill, and that exposure to books like Mrs.
Dalloway (and their mechanics) are generally good for your brain.

------
bko
> Our pointer wizard was a philosophy major who had no trouble at all with the
> idea of a named “thing” being a transient stand-in for some other unseen
> Thing. For a Plato man, this was mother’s milk.

I don't really see the connection. Pointers are not conceptually difficult,
it's an address to a point in memory, but they are none-the-less confusing and
notoriously difficult to work with for some.

I'm skeptical of the effectiveness of cross-training, the idea that seemingly
unrelated studies can help you directly in a given field. I believe the only
way to become proficient in task X is by practicing task X. Even the simplest
seemingly transferrable skills have been shown to be independent. I think I
remember reading about a study that showed that very strong ping-pong players
have no quicker reflexes than non-players in traditional tests (can't find the
link). Personal antidotal evidence I found also supports that intelligence or
skill in one field rarely transfers over to other fields. I would never take
financial advice from a brilliant chess player.

The one thing I will grant the author is that a novice, often unencumbered by
traditional methods may come up with novel solutions to tasks.

~~~
ex3xu
It seems to me like a pretty big inductive leap to generalize that no skills
whatsoever are transferrable across disciplines from anecdotal evidence and
one study indicating the inability of ping pong players to improve their
physical reflexes, which likely has a limit based purely on human neural and
optimal hardware. At the very least, what about soft skills? Discipline?
Attitude? Why else would Google be able to correlate success and college
athletics when they released that blog post about revamping their interview
process? (Notably, GPA and standardized test scores did not have any similar
positive correlation...)

I recently read Fermat's Enigma about Andrew Wiles's successful quest to solve
the centuries' old problem of proving Fermat's last theorem. His big
breakthrough came from the application of insights from one mathematical
field, modular forms, to his own field of elliptic curves. Randy Pausch also
talks about "head fakes" in his Last Lecture, which similarly praises the
ability to learn skills and lessons that are applicable in a wide variety of
contexts, often without realizing that's what's happening.

Of course a certain level of fluency in a subject is required before any
cross-disciplinary insights would have any additional return beyond pure study
of that subject, so becoming a grandmaster at chess indicates little about you
than the fact that you are good at chess. And even after obtaining fluency it
may in fact be the case that the ability to apply insights from other
disciplines may itself be a trainable skill, not an automatic benefit. There
is probably an element of choice in the broadening of the subconscious scan
that we undertake while solving problems, as well as the ability to generalize
lessons learned into applicable insights and patterns. My own personal theory
is that we create and myelinate neural models for patterns that we encounter
frequently while solving problems, from which point it may then be possible to
recognize some of those problems in other contexts, repurposing some of those
neural models that we can access with deep fluency to offload some processing
power required in solving problems, in addition to the new neural constructs
we must create for each specific type of problem.

You are of course free to believe what you want to believe, but I think this
particular instance of skepticism has the potential to hold you back from a
wealth of insights. Keep in mind that this New York Times article is clearly
written for a general audience rather than a technical audience, so it is
understandable that many here would be put off by certain stylistic choices
and oversimplifications. But I do think the core premise is a sound one,
although I still wouldn't recommend getting a liberal arts education. If you
are looking for a more convincing argument, try Todd Henry's book from the
Accidental Creative, Bob Rice's book on chess and business or a few episodes
of Barbara Oakley's Coursera course.

~~~
quietplatypus
Yep. And, philosophy's pretty much the playground for having cross-
disciplinary insights. It's sad to see that the conventional wisdom is to
deemphasize these fields, as if humans ran on nothing but purely rational
logic lol.

------
pierrec
I once attempted to let the influence of Virginia Woolf guide the way I
programmed. After reading _The Waves_ , I therefore decided to create a low-
level dialect of Brainfuck with an emphasis on concurrency, a creation which I
would use to manage my company's clients.

Eventually I came to the realization that you should make a considerate mental
separation between the _Waves_ and the way you program. Literature is full of
anti-patterns.

~~~
rottytooth
Speaking of which, the image for this article has code in a variation of
brainfuck

------
erez
I hate these kind of headlines. There's nothing inherently special in Virginia
Woolf when it comes to programming, and her name isn't mentioned anywhere in
the article but the headline, so why use her name? And when I start reading
the article, realising this is "to be a better programmer, read novels etc."
article, I have no desire to go on reading.

As such, I've been a proponent of reading code like text, instead of the usual
maintenance method of locating the line with the bug, making the most minimal
change and leaving everything else as-is. I believe the more I read the actual
program, the better I can understand why was there a bug, get some insight
into the original programmer's thinking, and maybe get some more idea on how
to better fix the problem.

~~~
formula1
To be honest, I have no idea what you mean by "read it like text". Your
debugging method of

\- locate the issue

\- understand the entirety of the segment to avoid other pitfalls and
understand the issues intended purpose

\- minimize changes to avoid creating bigger problems. Rewrite entire segment
if necessary (which is why encapsulation is so important)

I dont see how this is reading it like text or what that means to be honest.
When I read poetry I read every single line. When I read a novel, I rarely I
will glance over dialogue or entire segments because I understand the inteded
gist. When I read the news I look for where the fluff ends and read the
paragraph to understand what the hell is going on.

If anything I believe we should read more news to be better debuggers. Locate
the problem quickly and understand in its entirety. A personal opinion of
course

~~~
erez
First, broaden the concept of "entirety of the segment". For most it's the
immediate scope, or maybe the next level. I'm referring to understanding every
element in there, where it comes from, and what it affects, even if you need
to look in several other modules for that.

But, the idea is to try and understand why was the code written like that,
what is the model the original programmer had in mind, and whether there could
be more of the same errors in other places. It's the way you can see a db
table and immediately know where will there be issues in the db design.

~~~
formula1
Yeah, understanding how each peice works is generally a good idea since
software tends to be very delicate. I certainly hope a programmer is willing
to go deeper and deeper into 3rd party modules until they discover the root of
the problem.

When you say it, it sounds complicated, nuanced and elegant. But, from
personal experience, it simply relates to mental rules like "make sure your
fix doesnt screw up more things" and "if you think a programmer is doing
something weird, its probably weird" and "if everything looks fine here, look
upstream"

For something like database design, usually there is a restriction of the orm
that causes fluff or the programmer is trying to minimize memory usage by
reusing variables or something else that can cause utter chaos. Im all for
"thinking like the writer", but I feel like that doesnt present actionable
steps only to approach it with sympathy. Id argue, get a mental model of
minimal necessary steps and see how the other program fits into it or expands
upon it.

------
zbobet2012
Everyone is trashing on this; and for the the most part I agree. However,
there is a very large value in an English education for programmers.

Learning to write well is learning to communicate effectively. And
communication is a core goal of programming. The audience for our code is not
the machine, but another developer, or maybe ourselves.

Consider this passage:

Vigorous writing is concise. A sentence should contain no unnecessary words, a
paragraph no unnecessary sentences, for the same reason that a drawing should
have no unnecessary lines and a machine no unnecessary parts. This requires
not that the writer make all his sentences short, or that he avoid all detail
and treat his subjects only in outline, but that he make every word tell.

I open code every day that code benefit from it massively. I suspect you do
too.

~~~
hugh4
>Everyone is trashing on this; and for the the most part I agree. However,
there is a very large value in an English education for programmers.

>Learning to write well is learning to communicate effectively. And
communication is a core goal of programming. The audience for our code is not
the machine, but another developer, or maybe ourselves.

Indeed, and clear writing and communication is something that should be taught
in K-12 school. You shouldn't have to go to university just to learn to write
clearly.

To the extent that you do want to be learning that kind of skill in
university, I'm not convinced that universities are very good at teaching it.
I'm certainly not convinced that sitting around reading a whole lot of
Virginia Woolf is a very good way of getting better at writing clearly, except
in the same rather roundabout sense that waxing a car makes you better at
karate.

I'm not sure what a program of study _actually_ aimed towards clarity of
writing would look like, but I imagine it would avoid the existing academic
fetishisation of fiction over non-fiction. Few of us will ever write much
fiction, most of us will have to write a lot of non-fiction, and yet our
English classes are focused almost entirely on reading and analysing fiction,
like a glorified version of tvtropes.

~~~
sotojuan
In my experience classes that read literature like that are not to teach you
to write better (at least not the direct goal), but maybe to explore the genre
or author and write or analyze her.

In my university the writing classes were your usual "this is the
theme/subject for the whole semester, I'll give you prompts for you to
research and write about".

------
nitwit005
> The technologist’s argument begins with a suspicion that the liberal arts
> are of dubious academic rigor, suited mostly to dreamers. From there it
> proceeds to a reminder: Software powers the world, ergo, the only rational
> education is one built on STEM. Finally, lest he be accused of making a pyre
> of the canon, the technologist grants that yes, after students have finished
> their engineering degrees and found jobs, they should pick up a book —
> history, poetry, whatever.

It seems like he's inventing a straw-man to tear apart. The states pushing
this basically want higher salary graduates. That happens to be STEM majors,
for the most part, at the moment.

~~~
mcguire
Is that not a fair description of, say, some of the comments here?

------
zappo2938
Why not read Rainer Maria Rilke or Charles Bukowski?

“In the deepest hour of the night, confess to yourself that you would die if
you were forbidden to write [code]. And look deep into your heart where it
spreads its roots, the answer, and ask yourself, must I write [code]?” --
Rilke, Letters to a Young Poet

Rilke apprenticed with the sculptor Rodin in Paris not learning sculpting as
Rilke was a writer and poet, rather he learned how to see the world as an
artist.

------
PhasmaFelis
> _At least, so goes the argument in a rising number of states, which have
> embraced a funding model for higher education that uses tuition “bonuses” to
> favor hard-skilled degrees like computer science over the humanities._

Jesus Christ. As if we weren't already heading for a glut of underemployed
developers in 20 years.

~~~
said
It'll barely affect those of us already in the industry, because we can easily
differentiate ourselves from the herd based on our experience. But it'll
really put the squeeze on the glut of grads who are competing with each other.

Ultimately, the winners will be big companies, grads with connections, and
some grads belonging to biological demographics large companies are actively
seeking.

------
Yuioup
_His name? Steve Jobs._

God, will this hero worship ever end?

~~~
Joeri
And God responded "Shush, I'm speaking with Steve Jobs and have no time for
mortal affairs."

------
seabass
This whole article was poorly reasoned about, but this line in particular
makes me cringe:

> To say that more good developers will be produced by swapping the arts for
> engineering is like saying that to produce great writers, we should double
> down on sentence diagraming.

In my computer science classes, sure we did algorithmic and mathematical work,
but beyond that we had a huge number of creative projects. Many of our
assignments were the cs equivalent of what people would find in a creative
writing class. The fact that our work is expressed in code does not make it
any less creative than writing poetry or drawing.

The more I think about this, the more I realize that even the data structures
& algorithms classes are not at all like sentence diagramming. I doubt any
writer would say that they became a better or more creative writer as a result
of sentence diagramming. Most programmers, on the other hand, I presume would
say the opposite about data structures & algorithms.

~~~
douche
Diagramming sentences would be most akin to studying basic language syntax.
Algorithms and data structures are orders of magnitude more complex. The best
comp there might be studying themes, tropes and plot devices in literature -
which would be something that makes you a better writer.

------
todd8
My opinion on this opinion piece is that it is complete nonsense. I think that
we can all agree that any demanding field of study (including even the fine
arts like music, dance, and studio art) provides some benefit. Getting up,
going to class, meeting assignment deadlines, working with others, dealing
with rejection or failure, all are important life lessons conferred by almost
any degree perused seriously. But to somehow equate the value of studying
literature with studying the large, challenging, deep and abstract field of
study that comprises Computer Science as preparation for software development
is simply nonsense.

I know kids in their early teens that write programs, so yes, of course there
are some folks that study English Lit and end up with programming jobs.
English Lit, however, isn't likely to be the best use of one's time in
preparation for a good paying software development job.

------
pseudosavant
I feel compelled to link to If Hemingway Wrote JavaScript
[https://www.nostarch.com/hemingwayjs](https://www.nostarch.com/hemingwayjs).
It actually imagines what kind of code Virginia Woolf would actually write.
It's a fun and interesting read.

------
nottednelson
Of course Knuth wrote rather more deeply on relevant cognitive overlaps than
this NYT author (Hipps):
[http://www.literateprogramming.com/knuthweb.pdf](http://www.literateprogramming.com/knuthweb.pdf)

------
superobserver
No. You'd be better served by learning a language you do not know. The
exposure to different syntactical schemes is what would be most useful in
programming.

------
heisenbit
As software WRITERS we not only string words use sentences - often spoken
before in similar ways - but in a way that it becomes our novel.

As software ARCHITECTS we determine the gestalt by selecting foundations,
demanding empty spaces and rules which in self similar form are impressed on
all aspects of the work.

As software MANAGERS we command am army, we inspire, we maintain discipline
and at times we may wage war.

------
bitwize
Understanding Japanese helped me learn Forth, and vice versa.

~~~
mikekchar
This made me lol :-) As an old Forth programmer and a speaker of Japanese, I
have often wondered at the hoops we go through to make our computer languages
infix, when it's actually a lot simpler to make them postfix. Having done so,
it makes considerable sense to abandon English as the model of computer
languages and adopt Japanese. I've often been tempted to do this. Of course it
would never be popular, I think ;-)

------
perfunctory
"I was assigned to a team charged with one of the hairier programs in the
system... This program, thousands of lines of code long and growing by the
hour".

If 1000 LOC was considered hairy back then, what to say about the modern
systems.

------
cartographer
See also [http://www.amazon.com/Hemingway-Wrote-JavaScript-Angus-
Croll...](http://www.amazon.com/Hemingway-Wrote-JavaScript-Angus-
Croll/dp/1593275854)

------
dap
It's pretty ironic that Khosla would find Macbeth less than useful.

~~~
foxhedgehog
Also, far be it from me to quarrel with the quality of his rigorous
understanding of how Macbeth works.

------
douche
Or, you could read something that's actually good? FFS, I had to force myself
through Orlando for a lit class, and I burned it afterwards.

If you're going to ram liberal education down people's throats in order to
credential them so they are employable, at least stick to the parts of it that
are marginally useful, like philosophy, history, and classics, rather than
faffing around with shitty modern literature.

