[racket] Racket consultants

From: Neil Van Dyke (neil at neilvandyke.org)
Date: Wed Feb 15 21:23:03 EST 2012

This is just a message to see who Racket-consulting-inclined is 
currently out there and would like to compare notes.

To start, here are some frank thoughts based on my experiences 
consulting using Racket thus far.  Pardon the run-on sentences in quick 
brain dump.

I have been working as a consultant primarily using Racket and PLT 
Scheme for several years (except for a break for a scientist term 
appointment).

There is some work for people who can sling Racket.  Not a lot so far, 
but some.  The good clients I acquire, I try to bend over backwards to 
keep happy, out of natural professionalism, and also because good 
clients are precious.

The majority of Racket projects are secretive.  There is little upside 
to advertising that you're using a not-currently-mainstream platform, 
even if your business itself is not secret.  For now, "The first rule of 
Racket Club is: don't talk about Racket Club."

Thus far, the consulting work usually requires a lot of other skills, 
other than just being good with Racket.  Sometimes the client wants 
someone who both knows Racket and is a top-flight "programmer" in 
general.  Other times, they seemingly want someone who is expert at many 
related disciplines, including doing Racket well.  There's also 
sometimes a need for application domain knowledge (e.g., from one of the 
sciences or engineering disciplines), which sometimes I have had, and 
sometimes I have not.

Industry and government clients seem to generally be a better match than 
academia for consulting.  Academic researchers usually seem to be 
looking for grad students and the occasional staff Research Programmer 
(who I think is often easiest to hire from among known-quantity, 
indoctrinated recent alumni).  Also, people fresh out of undergrad 
(noteworthy exceptions who helped develop the high-quality Racket 
platform aside) often don't yet have much experience collaborating nor 
producing maintainable software, which is a problem when the task is to 
produce production-quality software together.  In industry, new grads 
would be mentored more on their first substantial projects, rather than 
tending to be in charge or having produced a base of legacy code to 
inherit.  Also, academic compensation usually is not very livable 
long-term, unless you are getting the university lifestyle, which you 
won't get as an outside consultant.  When I've seen consulting for 
academic research work, it's been a former grad student employed 
nominally as a consultant by a tenured professor/scientist who has lots 
of funding, and they collaborate directly and co-author publications 
(like an unusually well-paying, part-time post-doc).  These comments are 
based mostly on having spent a lot of time around various universities 
in various capacities, not as much from first-hand consulting.

There's also potentially consulting for startups using Rackets.  
Compensation would probably have to be a mix of pay and equity, unless a 
VC is ready to spring for market rates.  You'd need a special VC to let 
you do something in Racket, rather than Java or whatever the VC heard 
Google/Facebook/Twitter is using.

I do think that there are some people using Racket in industry, who are 
not using consultants as much as might be to their advantage.  You get a 
lot of people who are doing pilot projects, usually quietly (say, the 
manager doesn't want some other manager to start complaining about them 
using anything other than PHP or COBOL or the like), and are trying to 
use internal resources rather than put in a PO for a high-priced 
consultant.  Doing it without consultants is certainly doable, thanks to 
Racket attracting smart developers, good documentation-- and to 
pseudonymous GMail accounts for posting to the great Racket "users" 
email list, where people can get good and prompt answers to generic 
technical questions.  However, the email list isn't under NDA, and can't 
review designs, do code reviews, answer questions that require 
examination of the application code, mentor much, give much proactive 
direction, design or implement particularly tricky bits, help plan 
infrastructure, answer questions that require hours of research, do 
emergency troubleshooting of a deployment, participate in requirements 
analysis, understand and influence the big picture, etc.  I see a role 
for consultants in this, which is essentially helping new Racket 
adopters get up to speed and be successful with their initial projects, 
at the same time helping them build internal expertise.

Once an organization has internal expertise in Racket, two thoughts: (1) 
Racket success stories should increase new adoptions, and therefore 
increase demand for consultants to help the new adopters get up to 
speed; and (2) Organizations that are successful with Racket will still 
need need consultants, because they don't always have enough top talent 
in-house for all their opportunities (and companies like outsourcing 
these days, anyway), for things like "we want you to make a tricky 
library to do X, which we can use as part of our Racket-based 
application" or "we want you to make a tricky application to do Y, 
preferably using Racket" (which can be some of the best kinds of 
consulting work to get).

Eventually, there might be a need for a consulting firm that focuses on 
work involving Racket.  I don't yet see enough demand that I'm ready to 
start having people's livelihoods dependent on business I can round up, 
nor to end up spending all my time on management and marketing.  But at 
some point I would consider transitioning from being someone who makes 
things work, to being someone who wears a suit and makes other people 
make things work. :)

Somewhat separate from consulting, now that some key libraries of mine 
are coming together, I'm about in a position in which I can very rapidly 
develop and deploy mini-startup Web sites using Racket, with each site 
bootstrapping its operational costs from the start by using cloud 
servers and ads.  Doing mini-startups as a background task seems 
complementary in several ways to consulting in Racket.

Notes-comparison is welcomed.  Feel free to email me privately.

Neil V.

-- 
http://www.neilvandyke.org/

Posted on the users mailing list.