“I can’t make things as cool as that radio…”
Would Dieter Rams agree? In what ways does the Elm language exemplify Rams’s iconic 10 principles of good design?
Let’s review each principle.
- 💥 Is innovative
- 🔨 Makes a product useful
- 🏺 Is aesthetic
- 💡 Makes a product understandable
- 🕶️ Is unobtrusive
- ⚖️ Is honest
- ⛰️ Is long-lasting
- 🔬 Is thorough
- 🌳 Is environmentally friendly
- 📌 Is as little design as possible
Elm brings pure functional programming to front-end web development. Front-end had never been served by this paradigm before.
Elm’s static types and pure functions create numerous guarantees, making software development predictable and scalable.
Members of the Elm community are quick to express the emotional satisfaction of refactoring huge parts of their codebase and arriving at a working result.
Elm is easy to learn, and its lack of side-effects makes application code easier to understand, maintain and debug.
Most Elm developers use
elm-format, an automatic formatting tool that is standardized and non-configurable by design. So the layout of most Elm code will not surprise you.
Elm requires you to handle all cases of your application state. This removes the possibility of runtime errors due to unhandled cases.
Some applications are cheaper to rebuild than to refactor. But Elm applications are easy to refactor confidently, which means codebases can remain useful longer.
Elm’s compiled asset sizes are the smallest among React, Vue, and Angular 2. If all web applications used Elm, their download size would be smaller on average by a factor of (at least) 2.5.
In the Elm core libraries, there is mostly only one way of doing something (e.g. rendering HTML, producing an HTTP request, parsing, etc.). This minimalism means easier communication between developers on a project.