8

I'm facing a choice of whether to start building Haskell components for a certain production app that is all done in Ruby.

I'm leaning toward Haskell for several reasons, primarily speed (compiled Haskell is like 4-8x faster), greater transparency (via Haskell type system), and safer refactorability (type system). I've written a few open source and production programs in Haskell already and enjoy writing it very much.

Feasibility is not an issue. I've played around with the Haskell Snap web framework and database libraries like PostgreSQL.Simple and am satisfied that rewriting a Rails app and various backend programs with Haskell is feasible.

The real issue is hiring programmers when we need to scale the dev team, or eventually handing off the programming responsibilities altogether. It's a lot easier to find programmers in Ruby than in Haskell. On the other hand, the Haskell community seems to be growing, and it's not too hard to train programmers to modify parts of a Haskell program if you approach it as a DSL (much like Ruby on Rails). The Haskell type system also seems to promise much safer collaboration than dynamic Ruby does.

In his essay "Beating the Averages" (http://www.paulgraham.com/avg.html), Paul Graham argues that using a superior language can be a decisive advantage. But when does it make sense to forgo using a superior language in order to make it easier to add programmers to your team?

closed as primarily opinion-based by user53019, Dan Pichelman, Jimmy Hoffa, Bart van Ingen Schenau, gnat Aug 3 '13 at 9:15

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    You're forgetting one thing: Though few know Haskell, there are probably more that know it and want to use it at work but aren't allowed than are, making a place where it's allowed while it may be tricky to find Haskellers compared to rubyists, the few you find will be a notch above and have a great motivation to work for you (I would so rather be working in Haskell than .NET...) – Jimmy Hoffa Jul 10 '13 at 15:33
  • 4
    Just a thought: Scala is becoming popular much faster than Haskell, as of now. But someone who has mastered basic concepts of Scala will have much easier time grokking Haskell. So the hiring market may not be as bad as it looks. – 9000 Jul 10 '13 at 15:44
  • 5
    My first reaction to the question was to check your profile to see if your company is near where I live. I'm just saying. – psr Jul 10 '13 at 16:41
11

If the speed, transparency, and refactorability benefits of Haskell are more important to the success of your app then the risks of having to train developers then you should stick with Haskell.

A reasonably intelligent programmer with mentoring should be able to contribute to your development without too much pain.

Just make sure you can afford (in time and cost) to do that mentoring.

5

How many days would you save using Haskell as opposed to Ruby? Would it be more or less than the number of days required to find Haskell programmers or train non-Haskell programmers? Are you already prepared to teach non-Haskell programmers how to use Haskell? Are you willing to hire programmers knowing full and well that they will not be able to demonstrate their capacity to use Haskell until long after their initial hiring?

These are difficult questions to answer. I think the deciding factor here should be whether or not you intend to continue using Haskell in the future or if this is going to be for one project only. If you plan on continuing to use Haskell in the future, then while the program will take longer, it could also be thought of as an investment. However in my humble opinion, language is not as important as architecture. If you use the right framework and the right program structure, you could easily outperform the same program in another "superior" language with the wrong framework or the wrong program structure.

In other words, if time is to be invested in properly doing a program, I think this time would be better spent analyzing an approach before writing the first line of code, which has been proven to cut down on programming times significantly if done right.

  • 3
    Yes, but who wants to write COBOL code, regardless of the "right framework" or the "right program structure"? :P Paul Graham's essay posits that the programming language itself matters. – Andres F. Jul 10 '13 at 17:04
  • 1
    True, I didn't say it would be fun. However, if writing programs was all about what language I wanted to use, I would have stopped using Java a good while ago. :) – Neil Jul 15 '13 at 8:34

Not the answer you're looking for? Browse other questions tagged or ask your own question.