I’ve gone through(at high level) the Elm guide provided in the official Elm web page. I’ve tried implementing 4 or 5 examples mentioned in that guide.
I think that I’ve got decent understanding on why should I learn Elm and apply this knowledge in real projects.
Well, I’ll want to put my understanding below for your review.
It’s my humble request to confirm or correct my understanding.
- Elm is a functional language for developing front end applications. First of it’s kind in Front End application development(not sure though).
- Initial learning curve will be high for those who come from Object Oriented or imperative thought process. However, with diligent practice one can come out of this hangover and appreciate the declarative way of implementing.
- That’s said, refactoring the code is easy in Elm. Hence, developer can focus on implementing the solution for the given problem statement and need not worry upfront about unknown future enhancements.
- It’s architecture style (Model, View and Update) is intuitive and simple. This along with the declarative thought process helps the developers to create small building blocks and use them to construct very complex applications in a simpler way.
- Elm outperforms other FE supporting languages like Angular or React(I’ll want to know technical details, HOW part).
- Being a static type checking language and not allowing ‘null’ or ‘undefined’ it wont generate any run time exceptions.
- It has it’s own package manager with Semantic versioning support. This would help the developers to maintain the code with ease even though the application/code base has become a mammoth.
That’s said, my understanding leads me to the following points.
- Implementing solutions using Elm gives the developers to start with simple building blocks and eventually construct complex functionality. Supports Agile way.
- Functional way of implementing gives edge on improving the code coverage. It’s doable with very good set of test cases.
- As refactoring is easy, enhancing the application with new features will also be easy.
- Better performance hence better user experience.
However, I’ve the following concerns.
- Elm is still in Beta. What’s the future scope? Without knowing this, it will be difficult to influence myself and my organization to pick Elm.
- As being the new player, building it’s echo system is in progress.
- Do Elm has support to implement the applications in TDD way?. For eg, node has Mocha, Angular has Jasime.
- In my organization, we use Angular 4(+). Even though I learn Elm and influence the team that Elm is a good choice, if I don’t find a good migration path so that applications implemented in Angular can be gradually migrated to Elm, my efforts would go in vain.
If you read this line, I’m sure that you are here to help the people who are interested in learning Elm. I appreciate you and your time.