Friday, April 03, 2009

Some perspective on a destroyed career

Someone over on Hacker news posted a link to a comp.lang.lisp post that I wrote three years ago that's generating a lot of discussion. I found I had more to say about this than would comfortably fit in a comment, so I'm putting it here instead.

The gist of the original piece was that knowing Lisp gave my career an early boost because it was such a productivity multiplier, but later turned into a handicap because it led to frustration with the languages that were becoming the industry norms. The title of the piece was "How knowing Lisp destroyed my programming career" but that's a bit misleading. To understand how it's misleading and why I wrote it that way I have to give you a little bit more background. In particular, you have to understand the context in which that piece was written.

"How knowing Lisp destroyed my programming career" was a followup to an earlier and even more inflammatory piece that called How Common Lisp Sucks. That in turn was a follow up to literally years of off-and-on arguments about whether or not the Common Lisp standard ought to be revised. I thought (and still think) that it should be, but the overwhelming consensus in the Lisp community is that everything is just fine the way it is. (The argument is not unlike the one occasioned by my recent screed on CSS and several followup posts, including this one, which I think sums up both situations quite nicely. (One bit of evidence for this: of all the posts in the series, it is the one that has garnered the fewest comments.)

The important thing to understand about that post is that it was not intended to be therapy or a confession, it was intended to be persuasive. (It failed miserably, but that's neither here nor there.) The idea was to highlight the negative impact that knowing Lisp on the one hand and its failure to penetrate the market more deeply on the other had had on my career, in the hope that that might motivate some people to take market penetration more seriously. (Like I said, it didn't work. There is a hard-core group of Lispers who think Lisp is fine and dandy just the way it is and they honestly don't care whether Lisp is popular or not. These people wield enough influence in the community to effectively halt nearly all progress. But that is not what I want to talk about here.)

Anyway, that was the idea, and that's why I chose the gloom-and-doom title. It's misleading because the fact of the matter is that I never had a career as a programmer. My career up through the year 2000 was as a researcher. My product was academic papers, and if you'll pardon a bit of immodesty, I was pretty darn good at it. In fact, I was so good at it that by the time I was in my mid-thirties I had the equivalent of a tenured faculty position, and I was the most cited computer science researcher in all of NASA. (For all I know I may even still hold that title. I still held it in 2006 despite the fact that I hadn't published anything substantive for over five years.)

I say all this not to toot my horn, but to put my "destroyed career" in perspective. I quit JPL not because I wasn't successful, but because I was bored. I was successful not so much because I was good, but because I had figured out how to game the system. I figured out how to write papers that would get published, and how to write patents that would get accepted. (I successfully prosecuted three patents, including one on an invention that violates the laws of physics.)

Mind you, nothing I did was dishonest. I did not violate any laws or rules. Everything I did was completely aboveboard. What I did was to find the weaknesses in the system and exploit them. And one of the weaknesses that I exploited was an order-of-magnitude productivity increase in writing code. That let me do in a day what would take my colleagues a week, leaving me nine days free to do other things. Like study quantum mechanics.

Whatever problems I may have, an unwillingness to learn new things is not one of them. I love to learn new things. That's one of the reasons I hate Java, because learning Java didn't teach me anything except how truly brain-damaged a language can be. (I've never learned Perl, but I've never learned how to run the deep fryer at a McDonalds either. I like learning new things, but life is short and there are some things I'm content not to know.)

My problem is that I'm lazy. I don't mind working hard, but I mind very much working harder than I have to, especially if I know a better way. This is particularly a problem at an institution like NASA which, despite its reputation for innovation, is actually quite ossified and set in its ways, especially where software is concerned. So I quit and went to work for an obscure little Silicon Valley startup company named Google. And that worked out OK, despite the fact that I felt like I was borderline incompetent. I made some money, but more importantly, I learned more in my one year at Google than in the previous thirty. And when I was done I tried to bring some of those lessons back to where I had come from, back to JPL, and back to the Lisp community. They weren't interested, and while that saddens me, it doesn't paralyze me.

I may not be a particularly good coder (though I think I can hold my own) but I've discovered that I have one very marketable skill, and that is picking winners early. I've had two big wins so far in my life, Lisp and Google. Since Lisp "destroyed" my programming career I've started a new career as an angel investor and entrepreneur. I've been involved in over a dozen startups in the last four years, sometimes as a passive investor, sometimes as a co-founder. And I feel like I'm just getting started. I'm very new at this and I have a lot to learn. But I'm having a blast, so I say bring it on! I used to fret over not being able to program in Lisp; no more. If being in the Silicon Valley taught me anything it is that the world is planted thick with opportunity, and life is too short to worry about the road not taken.

22 comments:

Timo said...

Just curious: as an old Lisper, have you taken a look at Clojure: http://clojure.org ? It seems to tackle some of the problems while still being a Lisp. Excellent post, by the way.

Wolf said...

Perl is the best scripting language for Text processing and handle regex. I have posted few articles related to those at my blog

http://icfun.blogspot.com/search/label/perl

Also Perl's Cpan has lots of support that I don't even need to think extra while developing project. I didn't find such help on other programming language except Java and .NET

Sean said...

This comment is about how learning automatic transmission destroyed my racing career. My problem is that I'm lazy. Then my brain builds paradoxes that shield my ego from that fact. This leads to my ignorance which I like to write about in length on blogger.

I never learned to drive a semi-auto, but I never learned to drive a dump truck either. I'm quite happy knowing how much more efficient my Geo Storm is using an automatic.

Ron said...

> Just curious: as an old Lisper, have you taken a look at Clojure?

Only a cursory one. I don't have time to do much programming nowadays. It seems well designed, but the devil is in the details.

> Excellent post, by the way.

Thanks!

> Perl is the best scripting language for Text processing and handle regex.

No doubt. And a McDonald's deep fryer makes mighty tasty fries.

Bill Robertson said...

If you don't mind saying, what are you doing these days?

Ron said...

> If you don't mind saying, what are you doing these days?

"Since Lisp 'destroyed' my programming career I've started a new career as an angel investor and entrepreneur."

Or is that not what you meant?

trevor said...

I think he wanted specifics. ;)

natch said...

With your repetition of the odd fryer analogy, are you saying you think Perl is not versatile?

Ron said...

> With your repetition of the odd fryer analogy, are you saying you think Perl is not versatile?

No. I'm reiterating that I have no regrets about not learning Perl *even if* it is, as Wolf says, "the best scripting language for Text processing and handle regex." Just as I have no regrets about never learning how to operate the deep fryer at McDonalds. It's not because operating the deep fryer at McDonalds is dishonorable or doesn't result in a useful product, but because it's drudgery. And so is writing Perl.

> I think he wanted specifics

What kind of specifics? I don't mean to be obtuse here, but I really don't understand the question.

Bill Robertson said...

Thanks for the info.

If you're interested in writing more I'd like to read it. If you're not comfortable putting your life out on the internet I understand.

Ron said...

I don't mind sharing (well, up to a point) but I honestly don't understand what it is you want to know.

neuroelectronic said...

As someone who has programmed in FORTRAN, QBasic, VB, Pascal, C++, Java, Perl, and regretfully, PHP, I wonder how you came to the conclusion of all the programming languages out there that you haven't learned to program in, how you came to the conclusion the programming in Perl is drudgery.

If you have ever programmed anything useful and complicated in Lisp, which I doubt you have, you would be saying that about Lisp instead. It is not natural for people to deal with endless levels of nesting. People use all kinds of shortcuts and temporary constructs to convey meaning in natural language. That's what our brains are tuned for by evolution. That's why no artificial "universal" language ever got widely accepted, despite simplicity and ease of learning. In a thousand years when we have a single computer that is smarter then the entire human race, I'm sure that will program in Lisp. Until then, I'll stick to languages built to help humans get things done.

Now please step down off your conspiratorial soapbox, and put the blame of your failed programming career on yourself and your confessed inability to actually work, not on supposed peoples' rejection of you getting things done efficiently.

It's quite obvious that you've been living off the fat of the successes of other people in Silicon Valley. If you ever want to fix your lack of work ethic and actually contribute something to society, I suggest you get a job at a busy McDonnalds for half a year.

Bill Robertson said...

> I've started a new career as an angel investor and entrepreneur.

I think you understood perfectly.

I guess more detail would be things like what sort of companies do you invest in and/or start? This is working under the assumption that when you say entrepreneur you mean you have started a business.

Thanks!

John said...

Is anyone interested in investing in mobile?

Bron said...

That let me do in a day what would take my colleagues a week, leaving me nine days free to do other things.

Wow - you broke quite a few laws of physics while you were there. Well done!

Ron said...

> how you came to the conclusion the programming in Perl is drudgery.

Well, I *tried* learning Perl, but I was just repulsed by its horrifically bad design. Also spent six months supervising a team of Perl programmers, watched them struggle, and listened to them thank me and offer me their firstborn children when I switched the project over to Python.

> I guess more detail would be things like what sort of companies do you invest in and/or start?

I've invested in a wide range of companies, from high tech companies to one that makes sushi and another one that sells used cardboard boxes. Did some real estate too. That didn't work out so good.

On the entrepreneurial side, I co-founded an electronic marketplace for independent films (indiebuyer.com, now defunct) and another one for charter jets (originally Smart Charter, was acquired by Richard Branson and is now Virgin Charter). Last year I did a stint as CTO of one of the companies I invested in. Right now I'm between gigs. I was doing a new startup, but my partner had to bail on me for financial reasons and I decided I couldn't sustain the effort on my own.

jgrant said...

The analogy fits well. Brain-damaged languages and fast food actually do have a lot in common.
Both will lead to a significant drop in personal intelligence and productivity.
Some things really are better not learned or known just as some things are better not swallowed.
But for those that would disagree, please, feel free to do whatever you like ...

http://www.imagine27.com

shevegen said...

Perl is a dead language.

Young people these days can pick between ruby, python and perl (and php, which may be popular but it was designed by sheep so we should not include it. The other languages at least had some people with brains, although the guy who invented perl was nice and totally crazy, and it shows in the language).

And I doubt that perl is more popular for the YOUNG people than ruby or python is. Claiming that perl is the best language for text processing is a huge joke - good code depends on the one who writes it. Or I can go and claim that ruby kicks perl's sorry ass - but that is another stupid claim, just like the guy who made the first comment about perl here in the comment field above......

Brian Barker said...

Hello Ron

You refer to an artificial universal language, by which I hope you do not mean Esperanto which is neither "artificial" nor "universal"

At least not universal yet.

Just wanted to put the record straight! If you have a moment though please check my claim at I live in London and if anyone says to me “everyone speaks English” my answer is “Listen and look around you”. If people in London do not speak English then the whole question of a global language is completely open.

The promulgation of English as the world’s “lingua franca” is impractical and linguistically undemocratic. I say this as a native English speaker!

Impractical because communication should be for all and not only for an educational or political elite. That is how English is used internationally at the moment.

Undemocratic because minority languages are under attack worldwide due to the encroachment of majority ethnic languages. Even Mandarin Chinese is attempting to dominate as well. The long-term solution must be found and a non-national language, which places all ethnic languages on an equal footing is essential.

An interesting video can be seen at http://video.google.com/videoplay?docid=-8837438938991452670

A glimpse of Esperanto can be seen at http://www.lernu.net

Ron said...

> Hello Ron - You refer to an artificial universal language

That wasn't me, that was neuroelectronic.

Wolf said...

Hey Ron,

Add this widget at your blog, so that we readers can share your blog with our other friends.

http://www.ccvid.com/apps/share-this/get-code.php

About Perl:

Hey Guys, still other languages are using Perl compitable REGEX.

1) for example C is using pcre library = Perl compatible regex, POSIX :-)

2) php has preg = Perl compatible regex, POSIX :-)

3) Ruby and Python are using same regex from Perl.

All other languages are sucked that Perl, and now you guys marked Perl as a Dead :-(

Here is my Choice of coding when I work for my buyers.

Perl/PHP/Python/Ruby

Interested to know what about others?

Ron said...

Common Lisp has Perl-compatible regular expressions too.

http://www.weitz.de/cl-ppcre/