Estou enfrentando uma escolha entre começar a criar componentes Haskell para um determinado aplicativo de produção que é tudo feito em Ruby.
Estou inclinado a Haskell por várias razões, principalmente velocidade (o Haskell compilado é 4-8x mais rápido), maior transparência (via sistema de tipos Haskell) e refatorabilidade mais segura (sistema de tipos). Já escrevi alguns programas de código aberto e de produção em Haskell e gosto muito de escrevê-lo.
Viabilidade não é um problema. Eu brinquei com a estrutura da Web Haskell Snap e as bibliotecas de banco de dados como o PostgreSQL.Simple e estou satisfeito com a possibilidade de reescrever um aplicativo Rails e vários programas de back-end com o Haskell.
O verdadeiro problema é contratar programadores quando precisamos escalar a equipe de desenvolvimento ou, eventualmente, entregar completamente as responsabilidades de programação. É muito mais fácil encontrar programadores em Ruby do que em Haskell. Por outro lado, a comunidade Haskell parece estar crescendo, e não é muito difícil treinar programadores para modificar partes de um programa Haskell se você o abordar como DSL (como Ruby on Rails). O sistema do tipo Haskell também parece prometer uma colaboração muito mais segura do que o Ruby dinâmico.
Em seu ensaio "Beating the Averages" ( http://www.paulgraham.com/avg.html ), Paul Graham argumenta que o uso de uma linguagem superior pode ser uma vantagem decisiva. Mas quando faz sentido abandonar o uso de uma linguagem superior para facilitar a adição de programadores à sua equipe?