Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> it's been an awesome force multiplier for small teams who need to productively pump out safe and ergonomic code.

How much of this would be due to actual language features, and how much due to selection bias induced by talented and ambitious software developers looking into functional programming languages as a means to satisfy their intellectual appetite?



I've worked both at a startup that used functional programming libraries pretty heavily, and a startup that is using as plain of a Scala as you can imagine (no cats / zios / kyos / etc. in sight), and both benefited greatly from Scala language itself. The rich, safe and sound type system, combined with ergonomic syntax and well thought out features make it very easy to both read and write code – and most importantly – to make massive changes with very high confidence – which is an absolute necessity in a fast moving startup where the business requirements evolve all the time, features are shipped urgently with some tech debt that needs to be effectively addressed later, etc.

In terms of talent there is definitely some self-selection as with any non-default tech stack. Scala is a sharp tool and there are both people who are attracted to it for the pragmatic utility of its sharpness, and people who are attracted to it for wanting to play with sharp things. Both types are smart but the latter group have given Scala a bad rep in the past for being too smart and thus writing code that was too clever for others to understand. But nowadays the general vibe in the talent pool is a lot more pragmatic.


> I've worked both at a startup that used functional programming libraries pretty heavily, and a startup that is using as plain of a Scala as you can imagine (no cats / zios / kyos / etc. in sight), and both benefited greatly from Scala language itself.

Wouldn't you want to use Kotlin for the latter these days? It seems to have broadly wider adoption than any "plain" variety of Scala.


I don't know, kotlin has its pros, and is absolutely here to stay due to Android alone, but I always felt it being more or less just syntactic sugar for Java 8, to the point that now even Java has some more advanced/elegant features, like proper pattern matching with algebraic data types, while Kotlin is stuck with dumb sugar for instanceof checks.

Scala was always much more elegant and actually going the extra mile.


Kotlin's adoption is not that much bigger than Scala, and it's no good to me, as it's heavily concentrated in the Android world, which is irrelevant to me. Among other things, that means that Kotlin.js is not as good as Scala.js, both itself and in terms of the ecosystem – and the quality of Scala.js is half the reason I'm using Scala in the first place.

Kotlin as a language is also closer to Java on the Haskell <---> Scala <---> Java spectrum. We just don't want to move in either direction on that spectrum, Scala sits perfectly where it makes sense to us.

It's interesting that some people here are saying that Java's recent improvements will eat into Scala's market, when actually, it seems that it will eat into Kotlin first.


Could you give an example of a massive change that was made easier by your choices?


I've had a (relatively) bad time with Scala codebases. The last one I was involved in was like a 6-minute wait between making a code-change and being able to run or test it. But I still wanna work with Scala devs.

I'd rather work with Scala devs on a Java codebase than Java devs on a Scala codebase.

It's not about intellectual appetite though. It's about not re-litigating the same crap at every new work place. Avoid mutability and nulls where possible, etc.


> I'd rather work with Scala devs on a Java codebase than Java devs on a Scala codebase.

And Java devs on a Scala codebase is effectively the norm once your project enters BAU/maintenance phase.


One of Scala’s major issues is that it’s too easy to write Scava IMO


its a feature not a bug


The problem is that it is easy to write code that is not easy to read/understand afterwards. Especially if the code has a lot of operator soup and implicits.


Do people still do that? I thought that the whole "you can just google goobedygook" meme died already! ZIO for this reason has sane normal proper names for things for example.


Type system makes a huge difference especially things like refined types:

https://github.com/Iltotore/iron

Shifts entire classes of errors to compile time.


Most underrated library in the world


Scala is not just a good functional programming language. It's also possibly the best OOP language around. The magic happens when these two aspects are combined.


This has been my personal discovery as well. I inherited a bunch of old Scala code and, having had no experience with Scala, it took a while to get up to speed.

But once it clicked, it's been a joy to work in.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: