5 ms·
The lesson: Programming language adoption is based on politics, not technical merit. This isn't inherently bad, but is important to remember. Languages are s
by jimbokun 5y ago
The lesson:
Programming language adoption is based on politics, not technical merit.
This isn't inherently bad, but is important to remember.
Languages are successful due to the community that rises up around them, far moreso than anything inherent to the design or quality of the language itself.
Which can be correlated, but not necessarily so.
- pfraze 5y agoIt’s not all one or another. PLs are a software product and they need proper marketing and PMF. You can describe the network effect as political but its the same kind of politics as getting your friends to change chat apps.
- jensensbutton 5y agoWhy politics and not practicality? Taking a ton of time and resources (and potentially risking attrition) to migrate a thing that works to a thing that _hopefully_ works often simply doesn't make business sense. It's not a political decision (in the common usage of the word).
- frenchy 5y agoPracticality is a big part of the politics, but there's real politics at play as well. Different developers will have different levels of comfort with different tool chains, and different capacities to work outside their comfort zone. This is overly reductive, but here's an example: if you have 3 developers, and 1 will be twice as productive in F# and the others will be 10% less productive, it's probably practical sense to switch, but the 2 developers will resist it, and it may fail for political reasons.
- AnimalMuppet 5y agoI don't think that's the lesson. The problem described is with maintainability. That's not political; that's technical. (It just looks political, because people say "No, you can't use that language" after they've seen the maintainability problem a few times.)
- tikhonj 5y agoI've seen this pattern before: problems encountered with a new or different technology are attributed to that technology, while comparable problems with the existing system are seen as the fault of specific teams/developers or just as the sort of natural bugs you get in software development. The same kind of problem that's seen as a clear reason to avoid the less popular tool is seen as just something to solve or workaround in the more popular case. That's how politics generally works: there always has to be a plausible "objective" reason for something, it just doesn't have to be applied uniformly or even actually true.
- AnimalMuppet 5y agoWhat you say may be true in general. But we're specifically discussing being able to hire someone to take over a code base in a language, and no, the dominant languages do not have the same problem. You can find C# programmers under any rock. F# programmers? Not so much.
- jimbokun 5y agoThe maintainability problem is a political problem, because it's hard to maintain because it's hard to find developers that know the language or are willing to invest in learning it.
- peoplefromibiza 5y agoThat's true, but it's not entirely true. I've seen countless migrations to React from other equally capable frameworks because "everybody uses React" it must be the best tool! I've seen companies picking up Python because if you wanna do ML you gotta use Python, right? Anybody can write Python, right? Except now you have a Python codebase written by people that pretend to know Python, while they really don't know how to write a maintainable software program in any language, it just happens that Python is the only language they "know". And now everything sucks, but at least it's trendy, right? Programming languages are tools, if you hire someone competent in Ocaml but force them to use Java because "it's more maintainable" you now have two problems. IMO
- dangets 5y agoYes and no, Jetbrains did an incredible job on Kotlin with seamless interop with Java, trouble-free mixed Java/Kotlin codebases, as well as reducing the learning curve and mental context switching as compared to something like Scala. At my company there have been several devs trying to introduce Clojure as well as parallel forays to introduce Kotlin. Overall, Kotlin has caught on and spread much more rapidly and with less effort. This is not a statement of which languages are "better" given all things equal or what problems each are suitable for, but in my first hand experience it is easier for the average Java developer to pick up Kotlin. Of course we as a company are also cognizant of the IntelliJ lock-in as I suspect using any other editor would run into the same random bugs / autocomplete annoyances that the GP experienced.
- jimbokun 5y ago> Of course we as a company are also cognizant of the IntelliJ lock-in There's your politics. Kotlin is succeeding because of it's ties to a very popular Java IDE, so developers already using IntelliJ tend to trust it. It wouldn't do nearly as well without that built in base of support.
- listenallyall 5y agoIt's primarily utility, not politics. Yes, sure, Kotlin gets free press because Jetbrains and Google support it... but it's also because Kotlin is a brilliant language, it had an initial use case that was in extremely high demand (building Android apps) and JVM compatibility meant it had an enormous ecosystem of compatible packages from the start. But instead of just sitting back and riding on its initial popularity (that would be "politics"), the language has added more and more use cases (backend, multiplatform, JS), expanded its scope (kotlinx extensions), and built a following and a Kotlin-specific ecosystem of packages and tools that often surpasses the JVM equivalents in utility and quality.
- ukj 5y agoThe "brilliance" of any technology is not intrinsic to the technology. It's determined by humans. It's always politics.
- Clubber 5y ago>Programming language adoption is based on politics, not technical merit. This is a very serious problem in a production system and it's not a political problem. Having a mixed language system is never as maintainable as a mono-language system, assuming that mono-language is up to the task. >they leave and now the project has this magic F# part that nobody really knows how it works but everyone knows how to work around.