Reason ML - ready for production satire
ReasonML has a lot of hype these days, all the cool kids seem to be using it, but it's it any good? Unlikely. We'll talk about this today in this totally not a satire, way.
1. Developers can't learn new languages
You see this is a little known fact but when a developers learns a new language, it changes their brain to be usable in only that language. If a person learns JavaScript they become a JavaScript developer. They are now only useful for that now. A good way I like to explain it is that you're brain is like a ball of clay, then when you learn your first language then it's like putting the clay into the oven and basking in into a hardened clay pot. Completely irreversible. That thing is never going to be a clay plate.
Sometimes, in rare cases, you can technically learn 2 languages so long as your brain hasn't been quite cooled down yet. We call these, "Full stack" developers, however this can only happen if they haven't taken a job yet and are still paying to learn. Luckily job listings tell you what what language they have been imprinted with 😌.
ReasonML's lack of developer factories
You see, ReasonML is nice for those lucky few that have soft clay brains got it in the ReasonML oven, however this is rare due to the fact thare is no schools that teach it exclusively. To teaching a developer a new language would be like going to the Moon and walking around in it, it's never been done before, and it's probably not worth it (moonlandingwasfake).
After all, programmers never have to learn new things. JavaScript libraries haven't changed for months, days even. Plus reading the company's code could hardly be called "learning". After all it doesn't change daily and is very well documented.
Many people say that software development is where you do the same repetitive task over and over again, like laying clay bricks to make a house (but not the ones being used for developers brains, obviously) this is the reason that software development is so easy to estimate.
Learning on the job only benefits the employee
Learning new technologies can help widen a perspective of a developer and help them be a better developer in the long run, but does that benefit the company? Hardly. We just need developers that will come to work and not ask questions, we hired them that way and don't want them to every change, especially their salary 🤞. After all people only stick around for a little while, why invest? It's obviously not anything we've done to make them go.
Having to contribute to open source
You see when you're working in a smaller community there is a high likelihood that someone hasn't made some bindings to a JavaScript library you obviously need (I heart you redux form). At this time you'll realize that you might have to contribute back to the community, this is bad for business because what if you're competitor is using redux form and they also happen to be using ReasonML and they win even more If the market (not that they are, if you would like to provide us with the next round of funding please email me at john@satirefinance.com). This is a very reasonable fear.
Even worse by doing this you might end up actually paying for software that you're used too being free. I mean I have no idea if there is any people behind those nicely documented GitHub repos but if there is, I want them to keep working for free. Relationships where you take all the vegetables that other people put in the pot is what I want to have. winning
Inferred Static Typing
Your don't seem that convinced... Maybe we should talk about some of the features of ReasonML just to help solidify that there's no reason to let your developers learn or use it.
Take inferred Static Typing for instance, for one thing that's a mouthful and two why would you need static types that get figured out automatically even you can just use something we're more familiar like proptypes! These are great because they allow you document only your components that prints warning messages that you can easily ignore and can join a proud clan of "normal errors" in your browsers console.
That may not sound like a good thing but it basically becomes a not as expensive jira backlog that's integrated into the browser, neat! Plus it's so much easier to only document the props you want people to know about (or remember to). Plus there's no way to verify functions have the right arguments or return types which is just one less thing I have to worry about. Basically it means I can look really busy without much consequence!
ReasonML means you have to find your own bugs
I'm not super good at finding bugs, but my customers are! They find them all day, and they pay me to do it! I know, in very lucky. If we adopted Reason then we be presented with all those issues more quickly instead of fixing them in the next project. If that's technical debt than I say, "just put it on the credit card!"
Tags: ReasonML