Haskell in Enterprise

Michael Snoyman, Director of Engineering, FP Complete

Tel Aviv Haskellers meetup, August 30, 2015

Who am I?

  • Open source project maintainer (Yesod, WAI, conduit, Stackage)
  • Run internal engineering at FP Complete
  • Lead many of FP Complete's consulting engagements
  • Spend lots of time talking to commercial users of Haskell

I spend my days talking to both engineers and managers. Prepare to hear some of that today.

Why use Haskell?

  • Productivity
  • Reliability
  • Efficiency

Why use Haskell?

Productivity

Short, expressive code leads to programmer efficiency

  • Engineers: it's more fun to read and write!
  • Managers: quicker time to market
  • Compare with: Ruby, Python

Why use Haskell?

Reliability

Expressing invariants at the type level means less runtime bugs

  • Engineers: less debugging-production-system nightmares
  • Managers: easier support tail for sold software
  • Compare with: Ada

Why use Haskell?

Efficiency

Compiled, optimized code is fast, especially given high level structures

  • Everyone: faster == better
  • Compare with: Java (about same performance)

Note: Haskell, Java, and others offer many opportunities to go even lower level to get higher performance. In general, I'll talk about production-quality, high level Haskell code

Who uses Haskell?

  • Finance performance and reliability very important!
  • Science/pharma reliability vital (literally)
  • Defense performance and reliability
  • Startups time-to-market and recruiting edge
  • Enterprise solutions outpace the competition
  • Solutions providers do more with less hardware, less downtime

Strengths

  • Mature, well designed language
  • Well rounded library ecosystem (web, parsing, streaming data, mathematical, much more)
  • Powerful concurrency/parallelism story
  • Refactor with impunity (use the types, Luke!)
  • Team collaboration is much easier too
  • Amazing Javascript backend

Weaknesses

  • Doesn't integrate well with existing JVM and .NET deployments
  • GUIs can be a bit of a pain (situation is improving, and web UIs are a good option)
  • Compiling to mobile devices still a bit involved

Dispelling Myths

  • Category theory not required Haskell has a strong theoretical foundation, but you don't need to understand that to use it
    Haskell is the world's finest imperative programming language
  • Build tools are difficult FP Complete and other Commercial Haskell members have put a lot of work into fixing this in the past few years: Stackage, LTS Haskell, stack

Get started with Haskell

Just do it!

  • Choose a pilot/side project
  • Download stack
  • Start a project with stack new
  • Start hacking!

Learning Resources

Convincing others

Questions

Thanks for listening to me blab about Haskell :)