9 ms·
I will toot the author's horn for him. He has a fine series of Scala posts on his blog [1] and his book Hands-On Scala Programming [2] is a great introduction t
by philipkglass 5y ago
I will toot the author's horn for him. He has a fine series of Scala posts on his blog [1] and his book Hands-On Scala Programming [2] is a great introduction to building real applications with Scala so that any experienced developer can understand and extend them.
I work at a small company that has been using Scala for 7 years. Some of the prior employees enjoyed playing with advanced language features and writing libraries for the most general possible case even when that made it hard to understand how they were used for the 2 actual cases we needed to handle. Akka, Cats, and Shapeless were all over the place.
Those earlier employees have churned off to other places and I have successively simplified the code they wrote that is still useful, while encouraging the use of no more language power than necessary in new development. Hands-On Scala Programming is the book I give new hires as a language introduction that shows the sort of style to be preferred. It's much more like super-powered Python than like Haskell.
I have written C, Fortran, JavaScript, Python, and Scala for money. When I started on Scala I had never written Java nor used any JVM language. I have come to really appreciate the rich ecosystem of JVM libraries, the instrumentation and profiling tools I get, and many aspects of the Scala language and standard library. I love Scala's collections and miss their power and ease when I'm writing Python. (Which I still do for certain scripting tasks and for accessing Python-ecosystem libraries.)
[1] https://www.lihaoyi.com/ https://www.lihaoyi.com/
[2] https://www.handsonscala.com/ https://www.handsonscala.com/
- tlarkworthy 5y agoI considered it a near miss when a Scala shop rejected me because I used Maven to compile their coding challenge. Clearly the company was full of over-complicaters and actively recruiting for it.
- _vertigo 5y agoHow did that conversation go? “We like your solution but did you seriously just use Maven?” What did they say exactly?
- the_only_law 5y agoYeah that’s got to be up there on the list for dumbest technical related rejection I’ve ever heard of, particularly if the code was done well otherwise.
- deleted 5y ago[deleted]
- alexott 5y agoI also prefer to use Maven to compile Scala code - it's much faster, better integrated with IDEs, etc.
- deleted 5y ago[deleted]
- SOLAR_FIELDS 5y agoAs opposed to Gradle or SBT? If I'm being honest here, a quite significant part of day-to-day backend JVM software development positions is dealing with the build tool. While I wouldn't outright reject a candidate for not being familiar with the latest standard toolchain (Gradle), I would certainly consider it as one of many factors - Gradle is pretty complicated, yes, but also quite powerful in what it is capable of achieving. It's not as eyebrow-raising as, say, if you sent in a coding challenge compiled using Ant (which would, in fact, be quite a fun discussion to have with a candidate) but it would certainly be something considered.
- tlarkworthy 5y ago> If I'm being honest here, a quite significant part of day-to-day backend JVM software development positions is dealing with the build tool. perhaps, because your work has over complicated it [1]. [1] If you are doing multi-distributions or multi-repo stuff perhaps it's warranted, but those complex build features better be providing serious value to the business to be worth losing 10% of the development workforce's time on build tooling.
- scalaIsKindaMeh 5y agoThat's silly but unfortunately this type of silliness is the norm in the industry.
- hengri 5y ago> Some of the prior employees enjoyed playing with advanced language features and writing libraries for the most general possible case even when that made it hard to understand how they were used for the 2 actual cases we needed to handle. Akka, Cats, and Shapeless were all over the place. This hurts me a lot
- ackfoobar 5y ago> Some of the prior employees enjoyed playing with advanced language features and writing libraries for the most general possible case Scala the language is quite fine, but it attracts this kind of programmers. The damage they do to a codebase has to be undone by someone who both understands those advanced concepts and is not a FP fanatic.
- wiseowise 5y ago> who both understands those advanced concepts and is not a FP fanatic. Oxymoron.
- AzzieElbab 5y agoI speak monads. I am a 50 yrs old high school dropout. Cool thing is - just because you are not seeing FP structures in non FP focused languages doesn't mean they aren't there.
- gregkerzhner 5y agoOxymonad?
- abernard1 5y ago> Scala the language is quite fine, but it attracts this kind of programmers. It does. I call them "code scientists": engineers want to learn a language to build things, scientists want to build things to learn the language. I've interviewed >100 Scala engineers and if the panel thought they were the kind of person that just wanted to understand FP instead of solve problems, they were rejected. I am now retired, but Scala is still my goto choice for engineering software. It checks all the boxes on concurrency, bulk I/O, ecosystem. In the hands of a sane and pragmatic practitioner, it's hugely productive.
- vasco 5y agoI read this and I get so tempted but then I load up the homepage and see "JVM" and regain my senses. You almost got me.
- jongorer 5y agoWhile easy to understand, I’m constantly surprised to see this type anti-intellectualism. The fact that you don’t have the required prerequisites to understand a codebase doesn’t mean it’s bad. Educate yourself on Category Theory and functional programming techniques and learn to leverage these tools to your advantage. Alternatively you can work in Go where braindead simplicity is the mandated norm.
- ackfoobar 5y agoI sympathize with your thinking. There are two "readabilities". 1. How easy it is for an average programmer to understand the code. 2. How understandable the code actually is if the reader is fluent with that prior knowledge. If one finds the latter is much better than code written in conventional techniques, but people are scared off by the former, it can get pretty frustrating, and "people are stupid" may be a conclusion drawn. --- But my experience is that those techniques do not yield better code. And "Educate yourself" made me barf.
- the_only_law 5y agoSo, I’ll probably get shit on for this, but I really cannot wait to leave this industry. I hate how “best tool for the job” really just means “what we can have a large hiring pool of people who’ve only ever learned one programming style and possibly only one language of” or “for legacy reasons this is the only choice”. Yes I’m familiar with reality, I just hate it.
- wiseowise 5y agoApparently "best tool for the job" means find he bottom of the barrel that can still engage somehow with the codebase. This Idiocracy went to the point where returning function pointers gets questioned during code review because "this might be too complex compared to imperative call".
- jim-jim-jim 5y agoYes, it's disappointing but hardly surprising to see the phrasing of management parroted by so many developers. It's their job to worry about hiring, deadlines, etc. It's yours to make sure things don't shit the bed at one in the morning, especially if you're going to be paged about it. There are some languages that make it very easy for grads to deliver features, and others that are far more likely to be correct at compile time. The "best tool" is born from these competing demands; those too meek to engage with this inherently adversarial process don't do themselves or anybody else any favors.
- phgn 5y agoI worked at Databricks in the past and Scala is just a way to get things done there. Honestly, for me writing code day-to-day wasn't that different from Java once you understand how to structure your classes. Handling nullables with typed Options is pretty nice though, and I miss it in other languages now. Most people who join Databricks do not know Scala beforehand, it's just a useful tool. Sure, sometimes progress is slower than you'd like, but that's the case in every large monorepo.