[racket] Racket in Industry Apologia (was Re: Racket Apology)

From: Brian Mastenbrook (brian at mastenbrook.net)
Date: Sun Oct 2 14:45:10 EDT 2011

On 09/30/2011 02:07 PM, John Clements wrote:
> Racket is an experimental language (cf. Shriram's "hothouse"). We are
> *constantly* experimenting with the language, and on another level,
> we have a language that's designed to enable *your* language
> experiments. That's what makes it an exciting language to work with
> and on, and why it has design features that are still years away from
> appearing in mainstream languages.
> That's *also* the reason that you'll almost never see Racket used in
> industry. It's a language that doesn't compromise its ideals, and is
> constantly innovating, and if you're a business that's looking for a
> stable language with a broad supply of programmers, Racket would be
> an extremely surprising choice.

I feel compelled to point out that there's a big difference between 
"industry" as a whole and "business that's looking for a stable language 
with a broad supply of programmers". Just as most businesses aren't the 
big corporations everyone likes to rant about, not all (and maybe even 
not most?) tech companies aren't big companies where it's acceptable to 
throw warm bodies with a passable knowledge of Java or Python at a 
problem. Outside of the large companies of the world, Racket's rapid 
evolution is not a problem and not even a detriment. It's certainly no 
less rapid than the progress in mobile operating systems and client-side 
web technologies or the churn in Linux distributions, and unlike the 
latter, Racket is actually moving forward, not laterally. If the 
language does change incompatibly in a way that affects me and for some 
reason I need to maintain compatibility with an old version, it's much 
easier to accomplish this in Racket than in almost any other language.

In fact, I don't think there's been a better time to be using Racket in 
industry than right now. It is on the whole the programming environment 
that demands the least from me in order to do what I want to do. Tasks 
that in almost any other environment would be extremely complicated or 
tricky are trivial in Racket. Just to give one example, a 
colleague/employee who is picking up Racket for a project was positively 
giddy at how easy it was to put together a small cross-platform GUI for 
the project. Personally, I can't think of another programming 
environment which does that as easily. If you can find one, it probably 
won't make it as easy to create web applications, or simple command-line 
tools, or any of the other things that Racket does so effortlessly 
without making demands on my time or sanity. No tool which was truly 
unsuited for use in industry would do so many useful things so well.

As far as supply of programmers is concerned, I'm simply not worried 
about it. Racket is not particularly hard to learn, especially if you 
have prior experience in Common Lisp (as my colleague does) or one of 
the typed functional languages. If you can't or won't learn Racket, then 
there's no chance that you're going to understand the rest of what we do 
either. (We have a lot of C as well, but it's not conceptually trivial.) 
When it comes time to grow the company further, I'll be looking for 
people who are flexible enough to learn new technologies and create new 
things, not people who are skilled at rearranging prefab Java building 
blocks. We don't do engineering around here by throwing resources at 
problems - and that applies as much to programmers as it does hardware.

Brian Mastenbrook
brian at mastenbrook.net

Posted on the users mailing list.