Why Not NewThing?
For any given topic in tech, Very Loud Evangelists will spring up insisting that their favorite new thing is the only sensible way to go, and will point to things that their tech nominally does better as if that’s the only thing that should matter in all use cases. I think I see these evangelists for basically all programming languages and operating systems, for crypto in general and for just about every chain, for cloud tech, etc. Part of me wants to be this kind of advocate for Julia- a great fit for my simultaneous interest in high level data analysis (Python) and low level performance (C++).
But, Julia and other hot NewThings are probably wrong for most situations:
-
There’s huge value in consistency and stability- switching costs for an individual developer to a new tech or programming language are large, and switching costs for an organization or ecosystem are enormous- even if everyone collectively agreed Julia was PythonButFaster, the benefits would have to be overwhelming to make the costs of widespread switching worthwhile.
-
No, really, switching is a big cost- the burden of proof should be on the switching advocate to make the case it’ll be worthwhile.
-
NewThing might meet its goal in one dimension, but be a catastrophe in another, especially early on. NewThings are often terrible for stability, documentation, performance outside their toy projects, expressibility, etc. Since most projects really have multidimensional needs, NewThing is a net loss for a normal project.
-
The project really doesn’t care about what NewThing is good at. I’ve seen people advocate that utility payments be made on blockchains that are specific to the utility company, and effectively controlled by the company. That just seems like a database with extra electricity. Similarly, the number of Python projects where performance is the limiting factor is probably quite small- Python has never been terribly performant, but it’s been a very successful language anyway.
-
OldThing might be practically fine, even at the dimension NewThing is supposed to be better at. In the Python case, tools like numpy mean you can write something like native python, and have the performance critical parts run in perfectly reasonable time for the common use cases.
Eventually NewThing might overcome its problems to be a reasonable choice in a small number of circumstances, then a wider and wider set as improvements to the technology and ecosystem (including training) get bootstrapped. More often, NewThing gets abandoned, maybe with some small residual use from early adopters who, ironically, don’t want to pay the cost to transition from their technology.