Reasons that people were forced to move from Elm to something else?

At my previous job, we got together a cross-functional team to design, build and deliver a project. The team was me as the front end engineer, a full stack engineer, a data-scientist/project lead, and a part time GIS expert. I was a reasonably seasoned Elm developer and the fullstack engineer was quite keen to learn, the other two had no opinion so we built the front end in Elm. This was both super fun and quite productive.

The project wasn’t huge, but there were 2 interesting technical challenges:

  1. Mapping and heavy duty geospatial visualization. gampleman/elm-mapbox was born of this. On the backend we used Postgress with PostGIS (these are really amazing BTW)
  2. i18n. We used a i18n service to do the translations, then used a build time script to generate Elm modules, so we had a different script for each locale. As the project needed only 2 locales, this was pretty manageable. The backend then dynamically served the correct bundle to each client.

After the first phase of the project, the project was put on hold for a bit, and all the other team members eventually left the company. The project went on with a v2, survived a ton of churn, scope changes, politics (literally in this case) and delays. Nonetheless, we shipped a successful version.

At this point, we had hired some new people. At this point the company had 2 senior front-end engineers, 1 graduate developer, 0 full stack and 1 senior backend engineers. We focused for about 6 months on a different React based project. Nonetheless, the other front-end engineer refused to learn Elm. He simply didn’t believe that it had any career potential for him and wanted to focus on other stuff. While the graduate developer might have been interested, he was simply too busy trying to get his head around all the stuff in the React ecosystem.

So when I handed in my notice (with a 1 month notice period), my manager told me that I will spend my notice period rewriting this project into React. As you may imagine, this was not really what I was hoping to spend my time doing.

On the plus side, Elm -> React+Redux is a pretty straightforward porting job, as many of the concepts are very similar. The main thing I was missing was probably Elm-UI, as there doesn’t seem to be a great alternative.

On the negative side, the asset size ballooned. Performance was not great either. The code, despite being a clean rewrite wasn’t any better, rather some of the nice guarantees of the Elm code were completely lost in translation.

For me this was a pretty disappointing experience and I wonder if we need something like “How to use Elm at Work”: “How to make sure they stick to Elm after I leave?”.

19 Likes