The startup-culture teams I’ve known are profoundly conservative.¹ At one company, it felt easy to get a “kick me” sign on my back for bringing up solutions outside a certain spectrum. Case studies from that company:
Case study: Coffeescript
With great effort, I could introduce a tech like Coffeescript on Node.js. (Yes, I know Coffeescript’s controversial. But for this application it greatly simplified boilerplate. I led the team through a big analysis, brainstorming advantages/disadvantages. It won grudging consensus.)
Even then, many resented it, for reasons they never articulated—reasons I believe are cultural/psychological/cognitive. One person stormed out of the analysis I conducted.
Case study: Clojure
Clojure was outside that acceptable spectrum.
Junior Rails contractors built us a microservice backend. (Already, Rails experts hear warning bells: Rails… for microservices!?) They took months implementing it, and it had cosmically bad performance—our mathematician’s R prototype outperformed it by orders of magnitude.
In Clojure, I implemented it from spec in a weekend. 1 tiny service that outperformed the R prototype.
Management immediately got their recently-hired Rails expert to translate it to Ruby.
Management and the first employee asked me to explain this debacle. They rudely refused to listen to my analysis — it was outside their conceptual framework. The only answer I could articulate in their frame (as I became offended & near-shouted) was that it’s pure, fucking incompetence & we’re fucked to the core.
Case study: immutable DBs
Immutable DB architecture, even using plain MySQL and Python, was also outside that acceptable spectrum.
An emergency occurred: we lost vital numbers, so I had to fake them statistically so none would be the wiser. My laptop would take a month, but we had only 2 days. So I spun up dozens of machines to load immutable DB slices, letting hundreds of processes number-crunch. Success.
Afterwards, I gave a talk gushing about immutable analytics.
Later, they had the usual nightmares: “We’ve got 1 DB — and now logging in takes 20 seconds, not to mention generating reports!” I said, “What’s the problem? Just dump the DB every so often & load it on N machines for analytics.” Completely ignored, as if my words evaporated from our timeline.
Again, during immediate emergencies I was allowed to use whatever solution to achieve success — but it couldn’t be permanent. Company failure was preferable.
The first employee wanted to use Rails. The CTO demanded PHP, because of its then-larger labor market. Priorities: investor-friendly fast growth and management-friendly coders-as-replaceable-cogs.
Later, Rails became acceptable as its labor market grew.
Coders from that local labor market seemed to come from a tool-led trade tradition, not a theoretical compsci tradition. (I only have a highschool degree, but studied theoretical lit.) For example, they might speak of profilers, but never big-O analysis.
Coders in a trade tradition apparently have a harder time switching tech. Maybe they rely more heavily on visual cognition, which’d explain why syntax is so painful for them to change. Maybe they fetishize pseudo-math notation (unlike most, who it triggers). Anyway, they’re stuck on concrete implementations rather than abstract ideas.
¹ “Conservative” in terms of sticking to computing pop culture. You could say Clojure is conservative because it sticks to compsci concepts, and evolves only after great deliberation. But that’s a different meaning.