The document summarizes a company's experience using Scala for their financial software products. They found that rewriting parts of their codebase in Scala reduced lines of code by two-thirds, improved testing capabilities, and discovered bugs in the original code. Since then, they have used Scala for other projects and actively hire Scala developers. While IDE support was initially limited, the type system and functional aspects make Scala a good fit overall for their domain. Learning Scala takes time but can be gradual, with the type system posing the biggest initial challenge.
2. About us
We make software for quantitative investment management
Sell to asset managers, hedge funds, etc
Flagship product, ClariFI
Portfolio optimization
Model/factor building, backtesting
Performance/risk attribution
Building, simulating trading strategies
Screening, event studies
Overall data management
Etc...
Founded in 2000, acquired by Capital IQ (itself owned by
S&P) in 2007
Team size: 20 devs
3. Our first Scala project
About 2 yrs ago, needed to rewrite/redesign PA backend
FP a natural fit for the domain
Scala the clear winner among JVM FP languages
4. Results highlights
Scala implementation about 1/3 the LOC, comparable
memory usage and speed
More generic, modular
New code had much better testing
ScalaCheck a major win
On a few occasions, discovered bugs in old
implementation
In production now for over a year
5. Since then
Used Scala on another major project, more on the way
Scala well-suited for backend / analytics layer
Several other devs have now used Scala in some capacity
Actively hiring people with Scala/FP experience
6. Scala: the good
Scala/Java integration
Basic functional idioms
The type system
Optional non-strict evaluation
7. Scala: the bad
IDE support (as of 2008)
Scala generics vs Java generics
Limited, unpredictable type inference
Function values are monomorphic
Weak standard library
8. More on our environment
Scala code in a separate project, exports a .jar
Tools: Eclipse, NetBeans, Ant, ScalaCheck + JUnit, SBinary
More recently: Vim, sbt, Scalaz
9. How hard is Scala to learn?
Learning curve can be very gradual
Type system probably biggest stumbling block
Deep FP knowledge takes a long time to develop
Requires shift in mindset
Hard to find people with deep experience