On 27 Dec 2018, at 0:04, Neil Van Dyke wrote:

Jason Stewart wrote on 12/26/18 5:25 PM:
Even for blue-sky projects without any legacy lock-in, I don't fancy our chances with the enterprise/MIS crowd.  They tend to favor straight-jacket languages, and for good reason!

Agreed.  (A big-corporate exception being R&D and "startup-like" units, not necessarily under MIS, like some might have in, e.g., fintech.)

For some guy running a two-man startup, something like Racket is a super weapon.  For a large organization--with any staff turnaround at all--metaprogramming is cancer.  They need a "paper trail" for the next guy to follow.

Them's fightin' words. :)  For a counterexample, consider a programmer inheriting a project with an LALR or LR(1) parser written voluminously by hand, and a programmer inheriting a project instead using a parser generator DSL.  The non-DSL-using code might never be understood enough to find the bugs or extend it correctly.  The new programmer might not even recognize the model that the non-DSL-using one is supposed to be implementing, nor stick to a documented model in what changes they do.  And then a third programmer comes along, and then a fourth...

In an organization with good software engineering, judicious use of DSLs, and having them well-documented, tested, and maintainable, seems a win.

I think bigger barriers to enterprise adoption of Racket than "I heard that 'metaprogramming' eats your babies" are:
(1) Wanting employees to be interchangeable cheap commodities.
(2) Wanting someone to blame/sue/consult if anything goes wrong.

I'm happy to let "the enterprise" wait to adopt Racket until after everyone else has had years of success stories.

I think we agree that startups are a much more likely path for Racket commercial uptake.

I've had some moderate success in established, non-Racket companies by working around -- rather than taking on and trying to replace -- the main language & toolchain. For the PHP shop where I work, I made a DSL called Riposte [1] for testing HTTP APIs. It has become, in time, the de facto tool for such things. Thanks to Riposte, all developers have Racket installed on their workstations, even though I'm the only one who knows Racket and can fix problems with the tool.

I made a tool (1) whose benefits to my boss and teammates are obvious, (2) which is clearly hard to do in the main language, but (3) which would not kill the main line of development if I were to go away. A boss who respects his employee's skills and their need to "do his own thing" while still helping the company may indeed welcome Racket, in limited ways, on these grounds.

I might advocate for just making great tools/languages privately, then trying to make the argument for them later. The opposite is trying to get permission up-front to do something in Racket. That's less likely to succeed, I think, than just making something great and explaining its benefits, over time, at opportune moments. In my case, that meant talking with co-workers about their work and asking: "How can we model the proposed change in the API and be sure that we've really succeeded?" The implied answer being: "Write a Riposte script." That's the moment where it becomes clear that what I made has real benefits. I don't even "push" Racket. I just introduce the DSL and show them how it helps them.

Jesse

[1]: https://riposte.in

--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to