Max Tagher, CTO of Mercury, discusses why the fintech startup chose Haskell from inception. The decision was driven by the need for type safety and correctness in banking applications, where runtime errors could erode customer trust. Haskell's powerful type system prevents bugs at compile time and has unexpectedly become
•25m read time• From serokell.io
Table of contents
What motivated the decision to use Haskell from the beginning of the Mercury from scratch?How has using Haskell from the start influenced the company, the development culture?Did it affect your time to market strategy?Did it benefit it in the long term because these central themes should be more customized for you?We heard that you joined the honorable ranks of companies who are not only using Haskell, but also contribute to its compiler and tooling. Where do your contributions fit in?Do you have some specific vision of a way you want to extend these contributions further?Has using Haskell affected your hiring process and team growth? It’s kind of challenging to find a good Haskell developer, and your team is a pretty big one.How do you address the bus factor issue with these early hires that you made and built your company with?How has your experience with Haskell in production in many years evolved since the project’s inception?What tools or libraries have you found indispensable for Haskell? Developing in a production environment during this long period of time.How do you balance pure functional programming principles with practical business requirements?How do you balance the need for quick iterations in a startup with Haskell’s compile-time guarantees? Can these guarantees potentially slow down development compared to going into production?Another big topic I want to discuss is the specificity of the financial domain. Have you found functional programming to be particularly advantageous compared to classical methods for developing such applications?Is the main benefit in the types rather than in the functional programming aspects, such as Haskell’s architecture and type system?How do you see the use of untyped functional languages, like Clojure on the JVM, in relation to your needs?In my understanding, domain-specific languages are popular in many applications to prevent users and developers from making decisions that could harm finances. Why don’t you find them useful in your context?In your experience, how does Haskell’s performance compare to other languages dealing with high-volume financial data?How do you handle observability in a functional architecture with a large codebase, given the need for separate monads for input-output and their constraints?I’m also curious about your infrastructure choices, especially your use of Nix and declarative approaches. How does this impact your operations? What are the benefits and challenges?Do you benefit from Haskell regarding the security side?If you could start over, would you make the same decisions about the tech stack and development culture?What are the things that you did differently in your time?Thanks a lot. I really appreciate this conversation, Max.Sort: