In Yesterday’s post Elm reduces project Risk I said that I liked Elm because it decreased project Risk. User EffBott on reddit commented as such
If you’re going to use Elm for client work, do the ethical thing and make sure your client understands all the risks associated with choosing a niche language.
If your client is technical and can understand these risks, or already has developers on staff who are interested in learning Elm, I say go for it, but if not, select a language that has a larger developer pool.
I would like to respond to this comment.
First of all Thank you to EffBott for a well thought out reply.
As consultants it is our professional responsibility to think of the best interest of the clients. I have seen shops engage in Resume Driven Development where they choose to do work in a given technology not because it is in the best interest of the client but because that is cool/new/interesting and they want a chance to play with it.
If the project is something that will be alive for more than a few months there should always be an assumption that some other shop may pick up development of the project at some point in the future. This could happen even if you and the client love each other because of reasons ranging from, developer gets way to busy to developer is killed by a drunk driver.
On this front Elm does introduce some possible risks. It is pretty easy to find developers who can do AngularJS, for example. While Elm developers are fewer in number.
In addition the Elm road-map is not laid out well in advance like some other technologies.
So what can we as consultants do to mitigate these risks?
First of all we can issue a Guarantee that we will keep the project up to date for a given period of time. And build into our time tables and budgets the assumption that when the next version of Elm hits that we will have to spend some time doing updates for clients.
But what about the other problem. If I get hit by a drunk driver on my way home from work how can we protect our clients? The truth is that even if I was using the most conventional development tools ever this could still be an issue as some other developer would have to be brought up to speed.
In this case, I think the best option is to have a hand over plan in place. Work with another agency so that they are familiar with the project and can take over if needed. Having some sort of Life Insurance to pay for it might not be a crazy idea, but is beyond the scope of this post.
Disclaimer: I am not a Lawyer, Insurance Agent or the like. This is just me thinking about how to reduce my client’s risk and my own.