Skip to content

Latest commit

 

History

History
85 lines (46 loc) · 5.64 KB

File metadata and controls

85 lines (46 loc) · 5.64 KB

How I went about learning Scala

0. Motivation - why Scala?

  • for Spark, the API seems to be richer, especially the low-level functionality. See here

  • serious data engineering seems to be done in Scala; Spark is to blame here, I think - video

  • a lot of really smart people thinking really smart thoughts about things I don't understand - blog

  • this new Dotty compiler is fascinating - video. Heads up, Dotty will become Scala 3 eventually, and since this video was published the compiler has moved even further along

  • turns out people can explain complicated technical concepts without going full academic on you - video

1. Setup

  • don't use Intellij as your IDE; everyone and their mother uses Intellij, and I think it makes starting very easy but doing anything more complicated - too difficult for a Scala novice. I think Scala should be learned in the least obstructed way possible, and VSCode/Metals is the way to go IMO

  • I committed to VSCode and wanted to pull my hair out for a few weeks, but eventually you get the hang of things. This is a good motivation for VSCode as your IDE of choice

  • this helped enormously - video

  • in general, if nothing works and sbt doesn't start and you miss IPython, just clone a repo from Github that has a working Scala project. Load it up and start modifying the build.sbt file to get all the packages you need, etc.

2. Classes/videos/guides

(in the order I took them, mostly)

Heads up, if you're a Deloitte employee, Udemy is free for you; if you aren't a Daddy D employee, $20 a course is pretty affordable nonetheless

3. Books

(I keep them around for reference, but I wouldn't read a book and consider that being "learning Scala")

  • Programming Scala by Wampler & Payne; Scala operational manual

  • Functional Programming in Scala by Chiusano & Bjarnason; how all topical books should be written. What -> Why -> How -> Upsides/Downsides -> Alternatives

  • Hands-On Scala Programming by Li Haoyi; practical, driven by use cases. Is it worth $60? I don't know, but if someone else is paying...

  • Spark: The Definitive Guide by Chambers & Zaharia; DON'T BUY THE HARDCOPY PLEASE - THE EBOOK OFFERS FREE UPDATES EVERY TIME THERE IS A MAJOR SPARK RELEASE

; Learning Spark by Damji, Wenig & Das; Available for free, maintained and updated

4. Theoretical stuff

(Personally, I find this really interesting and difficult and elaborate; I don't think watching/reading this is required, but who knows, maybe it'll come up in an interview)

  • primer for category theory - video

  • functional paradigms - video

  • why would you do this to yourself/why functional programming is useful - video

  • mathematical definitions of these concepts/how a person with more math than me might think about their code - blog

5. Don't's

  • I don't recommend the Scala sequence on Coursera. They took a high caliber university course tailored for advanced CS majors and threw it up as a MOOC. It's very pedantic, very theoretical, and there are no facilities for getting help since the homeworks are the exact opposite of theoretical. Roughly equivalent to "let's learn about fluid dynamics and aerodynamic design of large bodies; now go fly a Boeing 737 MAX"

  • same goes for the edX, even if you pay for the certificate

  • don't watch any of Odersky's videos or read any of his papers. He is a genius, but he is an awful lecturer. It's very discouraging

6. Community

  • I don't do enough of this, but I highly recommend joining the Gitter channel for Scala. People are generally very helpful, aren't rude, and even if you just scroll through the messages, it's a fantastic way to see how Scala code lives in the wild

  • there is a DC meetup for Scala; haven't done any of the events