Beating the Averages

I’ve been reading a lot of older blog posts lately. Some age well – others not so much. My inner archeologist led me to the “Beating the Averages,” a fascinating and deeply frustrating post from Paul Graham.

“A startup should give its competitors as little information as possible.” – Paul Graham

Provided it is, as it was in his example case, a competitive advantage. Trying to keep everything secret all the time has substantial cost in efficiency. In this case, it was an internal implementation detail, so frankly their customers wouldn’t care anyway. I do wonder if this is still true today? Is there a 10x way to increase game development or web page scripting that’s not yet discovered?

I seriously doubt it.

Except I do have one idea that I’m executing on which meets a niche need in a really interesting way.

So that previous assertion wasn’t true… /evilgrin.

Paul also points to Eric S Raymond’s “How to Become a Hacker” post on the specific toping of programming languages and further buttresses and extends the argument. Joel tagged up on this in “The Perils of Javaschools.” I keep running across recommendations to learn Lisp. They all have as a basic argument that Lisp will expose you to an fundamentally different way to compel computers to do things and, in so doing, change how you think about them.

OK. OK. I’ll learn Lisp or maybe Scheme.

I’m interested in AI & Finite State Machines anyway. I just haven’t come up with a problem to work against, yet.

“I’ll begin with a shockingly controversial statement: programming languages vary in power.” – Paul Graham

I don’t find this shocking in the least. The question is, does the delta between programming languages which are relatively similar exceed the difference between good and average programmers? I just can’t imagine that there’s a 10x delta. No way. Not a chance.

“A big chunk of our code was doing things that are very hard to do in other languages.” – Paul Graham

This is no longer operational truth. At the time it was written, it was, but since then huge swaths of most programs are NOT written by the application developer. What percentage of a given game is “engine” or “framework”? A typical Ruby on Rails web app? an IOS app? Well over 50% in many cases. So much of the hard stuff is coming out of the box at this point. To the point where we’re sitting on a tipping point between the programming epoch of when this piece was written and the next one wherein things like concurrency are widely addressed and properly implemented.

I can hope anyway.

“Startups tend to be an all or nothing proposition. You either get rich, or you get nothing.” – Paul Graham

With a base rate of less than 10% for success. Yet people keep doing them. Hell I’m doing one now. There’s more to it than the “all or nothing” part – sometimes it just means that something you created exists in the world.

“If you ever do find yourself working for a startup, here’s a handy tip for evaluating competitors. Read their job listings.

A new competitor seemed to emerge … every month or so. The first thing I would do, after checking to see if they had a live online demo, was look at their job listings. … The more of an IT flavor the job descriptions had, the less dangerous the company was. The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening– that’s starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried.” – Paul Graham

That is just a flat out fascinating heuristic.

At this point, I would separate C++ & Java and worry about the C++ ones. The trick is what do they want them for? I’ve found best success hiring C++ programmers for web development, even though I’ve immediately turned around and asked them to program in a high-level language (typically PHP.) I could trust them to do a good job because they knew what the hell they were doing, even if the “average” PHP programmer did not.

“I don’t expect to convince anyone (over 25) to go out and learn Lisp.” – Paul Graham

This point, plus the absence of the requirement that a Hacker be flexible in Eric’s definition (which Paul liberally uses elsewhere) are a serious problem for me. Computer people don’t build things which stand the test of time. Our art, our craft, is something which is fundamentally ethereal – our art has no substance, no heft. It is gone and forgotten almost from the second that it’s created.

That to may change as the pace of computer hardware development slows, but there’s no indication that’s happening quickly, or even that it’s it’s a fate accompli.

Accepting for a moment that change will continue to happen apace, how on Earth could any definition of a Hacker not include a willingness, and even a devotion to the processing, of learning? There is always something new – a new consideration, a new thought, a new option.

“Creative brains are a valuable, limited resource.” – Eric S. Raymond

Eric does get up to the edge of this issue, but that’s not good enough. Because it allows otherwise incredibly smart and successful people to write sentences like this:

“But I don’t expect to convince anyone (over 25) to go out and learn Lisp.” – Paul Graham

Why the hell not? If you’re writing of hackers, and you have (successfully) defined competence as knowing Lisp in a convincing way, why wouldn’t at least one of your readers take the initiative to go do something which they may not have already done?