This is a very interesting discussion.
I have used Elm in my previous and now at my current company. When I joined the company, out of 8 devs only me who was really into Elm. There were a couple of devs who didn’t mind doing Elm, but there were who would never do it. Through 4 years of elm experience in two different companies, here are the main reasons why people would migrate from Elm:
-
Most people can grasp functional programming concepts, but what they are struggling is the application of those concepts to the UI. For example, TEA architecture is simple, but when you have to make a component library using this architecture, then they just can’t figure out how to do it. I have seen so many weirds patterns, which just makes codebase unmaintainable and pain to work with.
-
Elm allows using of imperative programming concepts such as
let
statements. Devs from imperative programming background they really lovelet
clauses. This antipattern is so annoying. It allows for creating huge functions. I have seen a function of 1000s of lines. Eventually, I ended up writingelm-review
rule for not allowinglet
clauses at all. -
Not following good programming practices, like reusability, modularity, testing and so on. People are just happy that after one day of struggling with the simple task to implement a button it actually works. They won’t spend another 3 days to abstract that button, write tests, maybe even put in the library. Unless someone will force them. This makes codebase even worse.
-
The more dev is experienced the more likely he will use known, easy and quick plug&play solution. Elm is the opposite from this perspective.
So in conclusion. There are not many people who would try to learn Elm in the first place. Those who are willing, they either:
- Afraid to push Elm through the chain of command.
- Those who adopt, they fail due to lack of knowledge.
- The main Elm dev leaves the company, and there is no one to take it over.
You can reduce migration away from Elm, by writing tons of documentation, setting right tooling, using CI, introducing Elm gradually to your peers, after a while, they will start to see how easily you are managing thousands of lines of front end code. Then they start to trust Elm as a good solution, and won’t abandon after you leave the company.