To write better code, read Virginia Woolf
nytimes.com
nytimes.com
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?
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.
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.
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.
>>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.
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.
If they are that great yes, they can. Great thinkers should put into words stuff that it's believed to be general truths, no matter how you phrase them. You don't need a Harvard education to "get" Rousseau nor Hobbes.
And on top that we have guys like Epicurus, who ~2,300 years ago was saying that his education had been bollocks and that he hadn't learned anything from his professors, but who nevertheless managed to have quite an influence on Western philosophy and thought.
On the other hand, I also think there are simply things that aren't well conveyed without relying on advanced techniques, whether the field in question is food, sport, art, etc. There is some value to esoteric works. Naturally, not as many people will appreciate them. This is potentially reflected in the original article: sure, such non-obvious skill-sets can be applied to great effect by certain individuals, but what causes that "creative" application? It's certainly not answered in the original piece, among other dangling questions not really addressed at all.
Even if the conversations WERE of good educational quality, are they truly worth the extra time to graduation that they entail? Remember, the $100K pricetag on four years at a state flagship is borne mostly by middle-class kids trying to improve their chances at good careers. Bureaucrats forcing them to take unnecessary liberal arts classes are important players in today's storied student loan crisis.
I have read Homer's works along with some other Greek classics.
Coding is different. The only way to learn how to program is to program. Yeah mentors help a ton and speed things up but I think it's a lot more solitary of a journey.
It actually makes sense when you think of who the first college students were: its only very recently that we've embraced the idea of college education for everyone.
You are not going to get good architects, designers, story-tellers, graphic artists, lawyers, and even politicians, if no one is willing to obtain the appropriate education. And this is only for the "practical" careers; society also needs its academics and historians.
And yet the core idea is valid.
This is not true for Python.
This is also not true for C if you forward declare the functions!
This can be worked around by stuffing everything into a main method and putting if __name__ == '__main__': main() at the bottom of the file (which I usually do anyway). But the mere requirement that you must remember to do so, just as you must remember to forward-declare functions in C, is still an incentive to work from the bottom of the file upwards.
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.
No matter how dumbed-down the tone, for me behind it always lies a figured out person doing smt that is definitely cool from the start.
More than just selling to the lazy ones, it protects itself from being criticised by the competent ones. (You end your concern w an agreeing sentence: the point is valid). (It can do this because it's written by a cool guy sharing cool stuff).
What i take from a story like this is that it's not abt CS, not abt woolf. It's basically: "how to become a perfect painter? Become a perfect person, then paint naturally"
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.
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.
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.
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.
- 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
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.
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.
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.
>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.
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".
Ha ha. Love the analogy :). Totally agree. There aspects of creativity and conciseness required for good developers. Its also true that it takes a while for those aspects to sink into a new developers. Its absolutely true that most people outside of the software community don't recognize this, stereotyping software developers as automaton or genius 'hacker types'. For all these reasons I appreciate the article in the nytimes highlighting the creative aspect of software development. But lets not stretch it to Virginia Woolf, and pointers by philosophers. Come on! For some reason that starts reminding me of the rather faux romanticized and pretentious 'Mozart in the Jungle' depiction of musicians stopping in the street to 'hear the music of the city'. Conversely too, I think writers would take serious affront if we asked them to take programming courses in school to prep for a career in, say, journalism or creative writing.
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.
“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.
Jesus Christ. As if we weren't already heading for a glut of underemployed developers in 20 years.
Ultimately, the winners will be big companies, grads with connections, and some grads belonging to biological demographics large companies are actively seeking.
God, will this hero worship ever end?
> 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.
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.
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.
If 1000 LOC was considered hairy back then, what to say about the modern systems.
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.