Hacker News new | ask | show | jobs
by x87678r 1991 days ago
Has anyone seen a big - multi year system done in FP? Lots of people love FP, it seems great for your own side project, but I'm not convinced it works in those typical big corporate systems where devs turn over every few years as the code base grows.
5 comments

Nubank seems to be doing just fine:

“From [its] start in 2013, Nubank has grown to 600 Clojure developers, running 2.5 million lines of Clojure code in 500 microservices”[0]

[0] https://www.fintechfutures.com/2020/07/brazilian-challenger-...

To be fair, they had to buy Cognitect to cope with the technical debt of Clojure and Datomic.
Technical debt can exist in any product and for a variety of reasons: inexperience, frequent employee churn, lack of leadership, frequent change of product direction, etc. Your comment implies that the technical debt is with Clojure the language or because of it. Beware of single-cause explanations of inherently complex problems.

I've designed and worked on systems with both OOP and functional-style code. Clojure is a tool that very much helps minimize technical debt. I think the minimal use of managed state in Clojure plays a crucial part.

Having done a good amount of looking through the Clojure language code itself, there's very little (if any) technical debt there.

That would be a good story if it were true, except it's not.
I've worked in big F# projects in banking. It's absolutely superior to C# or Java in many ways. One notable drawback is "how much code can new hires write in their first month" which is not a metric I consider that important for big enough projects. The month or so needed to skill up a C# or Java programmer in F# is a drop in the bucket compared to the benefits it brought us.
It's working fine for us and we just hired 6 new clojure devs. Code base is quite significant yet easy to make meaningful changes to.

Most reasoning is local to your changes thanks to the focus on small, pure fns dealing with immutable data.

CircleCI is a clojure shop.
Pitch (from Berlin) is using Clojure as well as Reagent with React. From what I saw it's quite a moderately sized app (not a gigantic one, but not a side-project sized either, in between that's what I mean).