Just curious for all your thoughts, is being ahead...
# thinking-together
j
Just curious for all your thoughts, is being ahead of your time a good thing? I’m thinking of a conversation I had with @Toby Schachman in the Cuttle discord a while back where he mentioned that Cuttle aimed certain details at a status-quo of programming style unlike it’s predecessor Apparatus, I thought that was quite profound. I’m thinking also of Fortran vs Lisp (or perhaps Forth). When is it not worth it to meet people where they are?
p
Being too far ahead of your time may not be very good for you personally, but your example can end up being helpful to those who come after you.
j
Meeting people where they are, and being ahead of your time, are orthogonal, I think. The more ahead of your time you are, the more necessary it is to meet people where they are. Something that is very different is not therefore necessarily alienating, or difficult. It can be different precisely because of how much easier it is. But if something very different is also very difficult, it will have far less influence than it might have otherwise. Always meet your users where they are, whether you want to make evolutionary or revolutionary change. And if you can't, get different users, or make different changes.
k
First question: what does "a good thing" mean? Good for the author? For the field? For society? Short-term or long-term?
Sometimes it makes sense to invest in something you know is very unlikely to be mainstream, because you’re trying to push frontiers; sometimes you’re specifically trying to take previously frontier ideas into the mainstream, and those have very different tradeoffs.
A good example here is the difference between Rust and the research languages it drew on. Rust itself (the example used to make a related point in the post I linked above) needed to be pretty mainstream in many of its surface syntax choices, even if the language designers might have preferred other syntaxes, because it was bringing along so much novelty in terms of type system, how it was asking people to think about systems programming and memory safety, etc.
Similarly, TypeScript’s success is very much a function of being a very small syntactical superset of JS, and being purely a way to express statically what (a[n ever-growing] subset of) the dynamic behavior of JS code is. Other compile-to-JS languages have had much less adoption, and TS has significantly changed the baseline for what kinds of type system constructs “mainstream” developers consider reasonable/normal as a result.
But on the other hand, even still in relatively mainstream programming (by comparison to a lot of the stuff we chat about in here), Elm has had comparatively minimal adoption, but has profoundly influenced the design of many other compilers and languages, by staking out a position and design ethos which have in turn shown that (for example) the baseline we were all used to and accepting of from compilers was not actually a necessary baseline, and that it could be much better.