Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Robert Morris: All About Programming (paulgraham.com)
173 points by avsaro on Jan 17, 2015 | hide | past | favorite | 49 comments


> My father tried to interest me in programming somewhat before high school; it didn't work, and I didn't continue then.

I suspect, that it almost never works that way. Learning programming or hacking as a child is all about figuring it out on your own, doing something, what your parents or your teachers can not understand, defining your own identity.

That is why I doubt that all the programs in the US, which try to teach children programming, will work. They might teach some concepts, but in the end i fear, that they will hinder the children to aspire a career in the field. I see a bad parallel to beauty contests, were parents try to live their dreams through their children.

Of course it is never black and white, but I think you have to be ultra careful with stuff like this. I think naturally interesting, open platforms are a better way to get children to dig deeper. Minecraft is a perfect example.


I share a similar thought. My wife's younger brother watches me write various things on occasion. He asks questions about how things work and I'll answer those. I've thought about buying him introductory books on a language, for example Python and showing him small programs to build. I'm hesitant to do that because I'm afraid it will cause him to lose interest since it will feel too much like mandatory school work and might take the fun and curiosity out of learning to program and tinkering with ideas.

I remember when I was younger, thinking to myself if a certain idea could be done and trying it out. The joy of getting the idea to work was a great feeling.


My mom taught me programming as a 6 year old almost 25 years ago. I went on to study it at college night school from 10 to 14 and held a job before graduating high school programming ASP, JS, and MS SQL.

Sometimes parents can teach their children things and have it stick.


Yeah, not everything involving generations is so myopic. My kids, 7 and 4, are absolutely entranced by computers and love to sit down at our old-school 8-bit battlestation and bash things out. The elder has figured out how to do his maths homework on it, and the younger has become an expert at loading files and running them. None of this would be possible if I hadn't encouraged them to investigate computers by setting up the battlestation in the first place .. I think the key to getting kids interested in programming is to understanding cyclomatic complexity in the first place, and not introducing them to things that will overwhelm their interest. In the case of our 8-bit machines, which are still fully functional programming devices, we seem to have met the sweet spot .. lets see if in a couple of years we upgrade them to a Linux box and compilers and so on. I'm fairly confident this will happen .. at least in the case of the 4 year old, whose affinity for the subject seems to be being amplified by observing daily his elder brothers' competence and confidence as they discover - together - new things.


I will be very interested if one day you write about it. How you "designed" the right battlestation (not too hard, but still challenging enough for their age), and how you get them interested while avoiding not to over push them.

Really cool!


Actually I didn't have to do much beyond setting up the machines (in our case an Oric-1/Atmos) and getting the means together to load the old software archives on it.. once that was ready and booted, the kids just took over. It turns out that 8-bit computing is really accessible to little kids, just like it was for me in the 80's, and while that may have changed with the current generation: the old machines still live!

;)


It seems to me, that you are exactly doing what I suggested: Provide the platform and let them make experiences on their own.


In case it wasn't clear - I was agreeing with you and contributing to furthering your point! :)


I genuinely believe that the best thing anyone ever did for encouraging programming was putting a BASIC interpreter in every home computer.


"Not wanting to look like a loser to the people I most admired, I was pretty late in admitting the obvious about math."

Don't understand this part, what's the obvious thing about math he was late in admitting? Were the Bell labs people right in his opinion or not?


I think he means the Bell Labs people were wrong, i.e Robert Morris did not enjoy math, for him it was about the programming. He later mentions that it was tough keeping in touch with the people at bell labs after ignoring their advice about math.

I THINK. You're right, it's a bit unclear.


This was my interpretation as well.


My reading: Bell Labs folks would have ordered it Programming > Math >> Computer Science. RTM was good at programming, was being taught CS at college, and took too long to learn that neither that nor math were for him and that Bell Labs had it right all along.


If I understand you correctly, I think you have it backwards -- as I read it, Bell Labs saw math as having "lasting value," while computer science was just a practical application. Morris didn't want to look foolish, so he persisted with math long after he realized that he really wanted to be a programmer; unfortunately, after he gave up on mathematics as a vocation, he didn't have the fortitude to keep in touch with those who advised him otherwise.


I'm fairly certain it's this, given the history of CS and programming. It started as a branch of mathematics. As an academic field, even in the 1980s/1990s and in some places today, it was/is taught as a branch of math. And comparatively, programming/operating computers was not high prestige and was seen more as grunt work.

Interestingly, in some ways the people in Bell Labs were right: the mathematics is what objectively /lasts/. Consider: how much mathematics from the 1950s is still in use and relevant, versus how much written code is still in use and relevant? Mathematics (and algorithms, etc.) have a permanency to them that simply written programs don't.


> Consider: how much mathematics from the 1950s is still in use and relevant, versus how much written code is still in use and relevant?

This is the wrong question. CS isn't hardly about code. Most of our CS today is from before the 1950s.


You're correct that CS isn't about code. Programming is, and that's what I was drawing the comparison with.

Most of the CS we have from pre-1950 is fundamentally mathematics: algorithms, theory of computation, etc.


I don't understand that and the last paragraph.


Took me a couple of minutes to figure who Robert Morris was so to save others the effort:

http://en.wikipedia.org/wiki/Robert_Tappan_Morris


I just finished reading The Cuckoo's Egg by Cliff Stoll this morning (And I highly recommend it!). In the Epilogue, Stoll writes about the Morris worm and briefly mentions:

(Harvard student Paul Graham sent him mail asking for "Any news on the brilliant project")

When I read that, I wondered if that was THE Paul Graham.


Seconding this recommendation. I found a copy, used, at random for 50c. FIFTY CENTS. Easily the greatest enjoyment/price ratio of anything I own.

Have you read his later book, /Silicon Snake Oil/? It's interesting how wrong he ended up being about a lot of things.


Dead wrong about e-commerce and eBooks and good number of other things to boot.

On the other hand: "The truth is no online database will replace your daily newspaper, no CD-ROM can take the place of a competent teacher and no computer network will change the way government works.""

He's partially wrong -- we have online newspapers, online education resources that are better than nothing, and some political action via web-shared activity.

But in spirit, anybody who's been paying attention to journalism is worried about whether we even care to subsidize a healthy fifth estate anymore (or just want more listicles and cable news), even Khan Academy isn't a substitute for a competent teacher, and politics is still driven by the overriding incentives and foibles of human nature.

Some of our new tools/resources are making a bigger difference than others; some are just cosmetic changes.


Stoll has written a lovely 2010 mea culpa:

http://boingboing.net/2010/02/26/curmudgeony-essay-on.html#c...

Quoting:

"Of my many mistakes, flubs, and howlers, few have been as public as my 1995 howler.

Wrong? Yep.

At the time, I was trying to speak against the tide of futuristic commentary on how The Internet Will Solve Our Problems.

Gives me pause. Most of my screwups have had limited publicity: Forgetting my lines in my 4th grade play. Misidentifying a Gilbert and Sullivan song while suddenly drafted to fill in as announcer on a classical radio station. Wasting a week hunting for planets interior to Mercury’s orbit using an infrared system with a noise level so high that it couldn’t possibly detect ‘em. Heck – trying to dry my sneakers in a microwave oven (a quarter century later, there’s still a smudge on the kitchen ceiling)

And, as I’ve laughed at others’ foibles, I think back to some of my own cringeworthy contributions.

Now, whenever I think I know what’s happening, I temper my thoughts: Might be wrong, Cliff…

Warm cheers to all,

-Cliff Stoll on a rainy Friday afternoon in Oakland"


I also second this recommendation. I read this book 5 or 6 years ago and it has not left from my recommendation list [1] since then!

[1] http://pablo.rauzy.name/miscellaneous.html#books


Can someone translate?

Might be some good wisdom in there but that is the most convoluted, badly written several paragraphs I've seen in a while. Maybe they're taken out of context or something or assume some knowledge that is missing?


In sum, he never saw programming as work. Graham wrote that if you feel that what you do is not "work", then it indicates that what you do is a good career choice. But Morris says that even if someone explained it to him, he wouldn't have been able to grasp it back then. It took him a long time to realize that programming was more important to him than math, because of social pressure.


I stayed away from pursuing programming as a vocation for almost 15 years.

I intuitively knew as a child that there were parts of programming and using computers which "weren't work" for me, but also very much ones that were, and I foresaw the probability that I might cease to enjoy the "not work" parts after being ground down by too much work.

As I come back to it now, I still think that. Increasingly I think it really, genuinely, depends on the style and language of programming you take up, and what you do with it. When I code in something like Lisp or Haskell, it doesn't feel like "work," it feels like problem solving. I tend to focus on CS topics as well; I built a VM, and a couple of programming languages, because they too were fun to think about, not work.

For me, I have progressively gravitated to more and more expressive languages, while moving away from more imperative ones which descend into repetitive "design patterns". I burned out quickly on the world of web programming, which inherently seems to require a whole lot of tedious yak shaving if you're flying solo.

Of course, the flipside which anyone bothering to read this may already be hastening to chastise me with is that none of this is likely to necessarily lead to actual employment.

Someone has to do the "work." And the amount of "work" to be done is a lot greater than there are people who don't find it work, which is why there will always be a lot more demand for that. In part I suspect this is because some kinds of "work" are self-replicating (Java programming begets the need for more Java programmers ...), but I nonetheless find myself fearing that my chosen "not work" is merely a fool's fantasy; and I occasionally have guilt complexes about "why am I not just learning JavaScript so I can at least get a gruntwork job at Rovio or somewhere" ...


I took a major pay cut so I wouldn't have to work with certain popular commercial languages ever again, and now enjoy working in a small studio where we create DSLs in Scheme. Every week I discover something new about Lisp and then use it on independent hobby projects, whereas before I didn't even want to look at a computer after work.


If you don't mind offering up the information, where do you work? Or at the very least, what field do you work in? That sounds extremely fun.


Small stealth mode startup in Vancouver, Canada that does custom DSLs for the oil & gas industry. I found the job on my local CL, they were advertising looking for anybody who had read SICP, or had experience doing functional programming. It doesn't pay a lot but enough to live comfortably while single plus I get to hack around in Scheme all day, though now they want me to learn Haskell too.

I work 6hrs a day usually and spend the rest of time experimenting with my own DSLs for future side projects or enjoying life whereas before I'd go to work before the sun came up, work in a windowless office under constant unachievable deadlines then leave at night. I had money but no life.


A job for the oil & gas industry which requires SICP level coders which doesn't pay well? I'm not sure what to think - that that industry really doesn't pay well, or that you need to read patio11's guide to salary negotiations.


Or that the employer correctly realized a six-hour working day is a valuable enough perk that they could exchange it for a substantial salary cut.


He explains that he's happy and says he lives comfortably. Why is that not enough?


Because if he's making a below-market salary as it sounds like, he could be doing better. With a higher salary, he could have more savings, more security, more easily afford a family or the things he wants, donate more to charity, spend more on personal hobbies, etc. Money has many uses.

And I could ask you the same question: the startup founders and oil industry would live comfortably enough if they made a little less and paid him better; why is that not enough? Why should they be making more?


Do you get equity, as partial compensation for the lowish pay?


I'm pretty sure one of the reasons Paul Graham and Robert Morris started their own company was because they didn't want to take a job writing software for Windows.

I also believe the guys who started ITA software wanted a problem domain where they could justify using Lisp.

So there are a few precedents for finding an excuse to use more expressive languages to solve challenging problems, in a way that makes money.


Something I've come to understand as an expat is why so many expats and immigrants wind up starting their own businesses rather than seeking local employment; it's not necessarily fun to work through bureaucracy with a language barrier involved, but at least your day to day job is in the language you know and you can get on with it.

Perhaps there's something to that in programming languages as well; I sometimes wonder if the reason for the explosion in startups and web applications is that for as much as I hate fighting with CSS and HTML templates, at least it's better than trying to make sense of the Windows API. And if you've grown up, as many young startup coders do, with the world of JavaScript and the web, it's what you know as much as Lisp was what guys like Paul Graham knew.


> The idea that one should ask questions about one's own life (e.g. your "What seems like work...?") and act on the answers was completely alien to me in those days, and I doubt I could have absorbed any wisdom in this department.

That resonates deeply with me. Until my early 20s, I was terrible at absorbing any form of wisdom from anyone. I just went ahead forward into whatever interested me, with no regard for what anyone would have to say about it. I was fortunate enough to be born with a brain that worked fairly well and allowed me to get away with this behavior for the longest time.

It is for this reason that I consider my time in grad school as mostly a failure - I joined at 19 as a PhD student and left 2 years later with a Master's degree, leaving the PhD for startups, and in those 2 years I didn't achieve anything that I'd consider interesting work (completely by my own fault). Even worse, my immaturity resulted in me making very little of the absolutely brilliant advisor I had (the perfect combo: a researcher whose early work pioneered a new field and gave him enormous peer recognition, but who was still early enough in his career that he had plenty of time to devote to his students), who had high hopes for me that ended up completely unfulfilled.

It was only after a few years of working in the real world with some very smart (and some very dumb) people, getting yelled at, seeing friends get fired (I never got fired myself although I came close a few times), and a few other similar experiences that I realized that indeed my life would be much improved if I stopped and recognized that some people do have words of wisdom that hold value for me. Psychedelics and traveling the world+meeting people who had it way worse than me yet achieved way more with what they had also contributed significantly to my maturing - the rewards of it being that I now am starting to enjoy an amount of success, clarity, and reward in my work that would have been unconceivable 6 years ago (although it still feels like most of the road is ahead, as it should).

For those reasons, it feels like advice such as the one given by PG is lost: the people who need it most won't really get the importance of what he means, and the people who will get it can do so because they've already internalized it.

All that being said, I look forward to 5 years from now, when I will say things about my mid-20s similar to what I just said about my early 20s :)


I agree that most of the time, advice is lost. But I don't think it's because people don't get the importance of the advice, but rather because they don't recognize when the advice could have applied in the heat of the moment (even for advice that's not about split-second decision, during the time frame when it could have applied, we just don't realized it).

I remember knowing about "don't let your emotion control your action, especially when you're angry". I don't think anyone would disagree or disregard the advice, the problem is that when we're feeling angry, we don't necessary think we're angry, we just feel being right. Since I've realized that, I've to stop myself whenever I'm feeling strongly right about something, not when I'm feeling angry (though they are really the same emotion most of the time).

In a sense, it's actually not that surprising, since advice is given from a perspective of an third person outsider: I'm seeing you doing Y given the circumstances X, so I'm giving you the advice of not doing Y when X happens. But from my someone who X happens to, it's really Z to them from their perspectives, and so they don't recognize it as X. That applies even if you're looking back at your action in the past too.

Introspection is really hard.


I advice you to stay away from the psychedelics. Trust me, this is an advice you can't afford not to believe until it is too late.


You've clearly been burned. That's fine, but tell us your story rather than giving some vague advice devoid of context.


My friend's mental health was seriously and irreversibly damaged by a one time adventure with psychedelics... Apparenty, non-negligible (over 1%?) portion of the population reacts this way.


I know a kid whose throat swelled up, couldn't breathe for several minutes, and suffered brain damage after a one time incident of eating peanuts... Apparently, non-negligible (over 1% [1]) portion of the population reacts this way.

Lesson for everybody: Don't eat nuts!

[1] http://www.mountsinai.org/about-us/newsroom/press-releases/r...

Your argument against psychedelics is not persuasive in the manner presented.


It depends on how much risk averse you are - I know that, for me, trying out psychedelics is not worth the 1% risk of going into psychotic breakdown, being admitted to psychiatric ward or even messing myself up permanently. For others it might be worth it.


Not everyone freaks out


> For those reasons, it feels like advice such as the one given by PG is lost: the people who need it most won't really get the importance of what he means, and the people who will get it can do so because they've already internalized it.

Indeed. If life came with a manual, then people would still say: who needs manuals? :)


This is one of those places where I've been really conflicted for as long as I've been back with programming.

Right now, I'm going with the path that not only makes more money(and thusly induces less stress), but also has a higher probability of making people's lives better, through the kinds of things I want to put my time and effort into being focused around enabling people to create their own jobs.

Yet I know extremely well what I want to do, what makes me happy. It will make some others happy, but a significantly smaller number. It certainly won't change lives for the better. But doing it would make it so the things I think about in the margins of my mind, all day and night, for as long as I can remember, are what I spend my life working on.

In essence: I can't tell if it's a better idea to do what makes me happy, or what makes others' lives better.


Given that money has a time value, it makes sense to do the latter in your early years and gradually tilt the balance towards the former.


typo: absorbtion should be absorption




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: