Ethan Herdrick (Biographicon): Running a startup on Scheme.
abstractstuff.livejournal.com
abstractstuff.livejournal.com
To me (management type, with some tech knowledge) it seems as if there are some serious downsides to using not-so-mainstream languages, such as scheme. In my position I would be worried about the following:
- hiring - will I be able to find talented people to work on the codebase? Especially if I am not located in a startup hub.
- Scaling - I haven't seen many sites using scheme or other flavors of Lisp that are able to scale. As a management type I would want to see more than just 3 or 4 sites that have scaled well.
- available libraries - the more traction a language has, the more libraries will be available for it. Can a (supposedly) better language make up for this?
And yes - I have read Paul Graham's essays on the subject and find them insightful, but since I am sure that almost all hackers have and I see no large sites written in anything but mainstream languages I am not convinced.
Disclaimer: I am in management, and I am merely curious - not bashing scheme or any other flavor of lisp. Just thinking that this is probably the right place to post this question.
Three or four seems to prove the feasibility.
> hiring - will I be able to find talented people to work on the codebase?
Yes. The people you find who hack Scheme or Common Lisp tend to be very talented. If you want to ramp up to 1000 programmers quickly, yes, you would have trouble getting experienced people. But if you're doing a startup, no sweat. Or so I think so far; watch this space.
> libraries
PLT Scheme and Common Lisp actually have big libraries, though not as huge as Java's. In most cases, though, the equivalent library in Scheme (and CL, too, I imagine) is much better than it's Java counterpart. Find me something in Java that is half so good for parsing HTML as this: http://www.neilvandyke.org/htmlprag/
There are Scheme/Lisp hubs that aren't startup hubs. Salt Lake City would be one. More generally, if everyone in your town uses Java, move.
I know it is nitpicking, but ultimately it is about trust, while I am learning: do the implementors of MzScheme have a sense of good style, or not.... Maybe I am just spoiled by having lived in an object oriented world for too long, but it also seems to me that sometimes OO makes sense, simply as a way to structure the code. Also I think it is neat how in Java everything has a "toHashcode" method, so you can store everything in a hashmap - how does it even work in Scheme (haven't studied it very close yet, I admit)?
Hash tables in functional-style languages often let you specify a hash function. That means the hash function is a property of the collection, rather than the objects in it. If you prefer a more "object-oriented" design, you can use an object system such as tinyclos to define a generic hash function. But Schemers usually like to avoid such complexity.
Looking at the PLT documentation, I see that its hash tables don't let you specify a hash function. That's definitely a shortcoming, though arguably not a serious one in practice. SRFI 69 gets this right.
Salt Lake because of U of Utah: http://www.cs.utah.edu/plt/
That said, why do you need more than one example of a large site written in Lisp to demonstrate that large sites can be written in Lisp? (Orbitz certainly counts as large, so I'm not sure how much weight I should put on "I see no large sites".)
Common Lisp comes standard with many of the things that are found in libraries for other languages.
More important, CL comes standard with many of the things that folks never bother to put into libraries but end up writing themselves, over and over again.
I should add at this point that I don't know how to code in Lisp. If you ask most programmers what languages they "know how to code in" (never mind if they're experts), Lisp will show up in only a tiny fraction of the answers. Interestingly, you can take this to support or detract from Lisp.
You could say "if nobody's using it by now, it must not be any good." But that reminds me of the joke about the economist who tells his kid not to pick up the $20 bill on the sidewalk, because "if it were real, someone would have already picked it up." Mabye Lisp is the $20 that nobody (or at least very few) believes is real.
Some day, I swear I'll get started. In college (as a math major) I remember talking to a buddy who was majoring in cog sci trying to convince me that Lisp was a great language, and that I really should take a look at it. I was dismissive. If it were so great, why were we using C++ in all my math classes...
-- oh, another thing to add hiring - will I be able to find talented people to work on the codebase? A management type probably won't be able to. This option is only available to founders who 1) can do the work themselves, and/or 2) know people who can do the work.
Especially if I am not located in a startup hub. Again, fairly unlikely. The idea is that the founders are already part of a community of good programmers, so they most likely live in a place where you can find more good programmers
Basically the argument implies that management types won't use lisp because they don't understand it. Well they don't understand java either. Or C++. What they do understand though is finding the fastest and cheapest way to a product - that is what they do for a living. If lisp was so great then surely some smart manager would have noticed that "hey look over there, they have 3 guys working on something that we have 30 guys working on - and they are doing better" And management is all about getting the most value for the least resources.
If you think of managers as the Dilbertesque pointy haired boss, then sure. But I think you (and PG) grossly underestimate the intelligence of management, and what it is that they do.
But I do disagree just a bit with your statement that managers look for the fastest and cheapest way to a product. THey look for the fastest and cheapest way available to them as managers. Those three guys probably aren't willing to work for a management type. You could throw money at them, but then you become an investor, not a boss. Which is probably a better deal for you, too.
This is another recurrent theme in PGs essays. The boss/employee relationship doesn't really work. But the investor/founder relationship works brilliantly.
1) you could show good examples of successful projects done by comparable teams
2) you could demonstrate the ability to hire/train people to develop/maintain it
Am I being too optimistic? I put in lots of qualifiers to make it more realistic.
As for hiring people to develop and maintain... well, this is probably why it doesn't work for the usual boss/employee relationship. The employee may quit a job. But if the employee is a founder or has tons and tons of equity, he'd be quitting on himself. He will go to the mat to save the company. He will bust a vessel in his eye before he'll let it fail.
Yes, he may end up sprawled out on the mat with a broken eye vessel, but that's the price of freedom, right? ;)
That is probably often the problem.
Also since nowadays almost all software has to interface with other software there is probably a case of Nash equilibrium. http://en.wikipedia.org/wiki/Nash_equilibrium
(this other software we have to talk to is written in java, so let's write this piece of software in java too)
If MIT had released Macsyma under an open source license, I believe you probably would not have been.
Go there and see Daniel Weinreb's post (just search the page for "Weinreb").
I think most talented people would be delighted to work with Scheme. Maybe (hopefully) it is still true that you can use LISP to identify the good programmers. Presumably most people from "Java School" would not bother to reply to a job ad asking for LISP knowledge.
"Great programmers are not looking for jobs. They already have one. And they don't want to switch from one Java job to another, unless they are dissatisfied with other aspects of their job. But a fraction of them would easily consider another job if it involved Scheme, Lisp or Erlang programming (or other non-mainstream languages like OCaml, Prolog, Haskell, etc.).
So I claim that it is easier to recruit Scheme, Lisp, or Erlang programmers, even in Montreal, than Java/C# programmers. Given that you use the right channels (Standout Jobs, or by advertising on group specific mailing lists/blogs). These languages are not only secret weapons for implementing new applications, but they are also secret weapons for finding new employees. I strongly advise new startups to consider these languages if they want to have an edge when looking for new employees. In Montreal, I am convinced that there is now a critical mass of Scheme/Lisp/Erlang developers to mitigate all the risks usually associated with the use of non-mainstream languages."