Scala books

As a Scala instructor, I often get asked about books for learning the language at different levels of expertise.

This is my attempt to summarize the best books out there.

Please, if you spot any omissions or inaccuracies, let me know.

Disclaimers

  • I have read some books thoroughly, but not all. Some I have evaluated with a rather fast scanning. So, if you disagree with my evaluation, ping me over twitter and I'll be happy to discuss.
  • I have no intention to diminish the work of any of the book authors. Putting a book together is a tremendous endeavour, and I'm very thankful for all the work they've done.

About the table below

I've classified books based on their target experience level, as such:

  • Beginner books, in green, require little related experience.
  • Intermediate books, in yellow, expect some level of knowledge in related technologies.

What about the other tags I've included?

  • Hands-on: Does the book provide code samples and exercises for the reader? (Minimal, Somewhat, Very)
  • Reference: Is this a good book to keep as reference material once you're somewhat comfortable and are starting to do real work with the language?
  • FP ↔ OO: Where does this book fall in the Functional-Programming to Object-Oriented continuum? FP means the book is focuses on how to write code in Scala that meets the Functional Programming principles. OO means functions have a relatively short treatment and Functional Programming does not permeate most of the book. Hybrid means somewhere in between.

The books

Title Authors Year Hands-on Reference FP ↔ OO
Atomic Scala Bruce Eckel, Dianne Marsh 2015 Very No OO
Beginning Scala Vishal Layka, David Pollak 2015 Minimal No Hybrid
Scala for Java Developers Thomas Alexandre 2014 Somewhat No OO
Functional Programming in Scala Paul Chiusano, Rúnar Bjarnason 2014 Very No FP
Learning Scala Jason Swartz 2014 Somewhat Maybe Hybrid
Programming in Scala Martin Odersky, Lex Spoon, Bill Venners 2016 Somewhat Yes Hybrid
Scala in Action Nilanjan Raychaudhuri 2013 Minimal No Hybrid
Scala in Depth Joshua D. Suereth 2012 Minimal No Hybrid
Scala Cookbook Alvin Alexander 2013 Very Maybe OO
Programming Scala Dean Wampler, Alex Payne 2014 Somewhat Maybe Hybrid
Scala for the Impatient Cay S. Horstmann 2016 Somewhat Maybe Hybrid

 

A few words about each book

  • Atomic Scala: Very well structured book, carefully thought out. I love the small exercises. It's unique among this list in that it target readers with little or no programming background! Great as an introduction. Focuses on the language features, not on the patterns that arise with its usage. Barely mentions Functional Programming.
  • Beginning Scala is clearly tailored to inexperienced developers, and provides a somewhat practical approach. Several advanced topics are missing, but that's expected for a book with this focus.
  • Functional Programming in Scala is a fabulous book, alas not an easy read. It's clearly written with Functional Programming at its core, and it will challenge the reader to solve many non-trivial exercises. Even for some of us who don't necessarily want to be FP purists, this book is an amazing experience.
  • Learning Scala is a well written book, that provides a good introduction to the language. It provides, however, less exercises than I would like.
  • Programming in Scala is clearly a must-have. Written by the creator of the language and two tremendously experienced developers. Very thorough, and a great book to have as a reference. It provides many small examples as you progress. Sadly, as is the case with most books, it provides no additional exercises for the reader to practice and deepen her understanding.
  • Programming Scala stands out as a book for developers that have related experience. It provides very valuable patterns and practices, and goes beyond the language and into other valuable tools, such as Actors, IDEs, build tools, and several others.
  • Scala Cookbook is a very practical and useful list of recipes - small problems solved using Scala. Despite it being almost 3 years at the time of writing this, it's not showing its age much just yet.
  • Scala for Java Developers focuses on a very practical use - how to write a Web application backed by a Database while using Scala. It's not a great alternative for learning the language itself.
  • Scala for the Impatient focuses on being very practical from the very beginning, and it does a very good job at it. It provides small exercises as you progress, and you find yourself playing with the language from very early on.
  • Scala in Action is a solid book, but its age is starting to show, which concerns me. It focuses less on learning the language, and more on how to build an application with it.
  • Scala in Depth is another great book that is starting to show some wrinkles after a few years of its last edition. Would be great to have an updated edition.

So, what do I recommend?

If you want to learn the language, I recommend this combination (in this order):

  • Atomic Scala as an introduction, and to get you warmed up.
  • Programming in Scala to fill some gaps and to always keep around for later reference.
  • Functional Programming in Scala to build (or strengthen) your FP muscles and start your journey into this wonderful (but not always easy) path.

Why I'm giving away my Apple Watch

I've owned an Apple Watch for a few months now, and I've decided to give it away (maybe to you, if you want it and read through this post).

My reasons are very simple, but it took time to embrace them:

  1. I don't need an Apple Watch. This was clear to me very quickly, as I'm rarely using the apps that have a watch interface.
  2. I keep forgetting to charge it, which means half the time it runs out of battery and it dies on me. I already have enough devices that need charging, I don't want one more.
  3. It increases my device-induced FOMO. Every notification, text message and timer kept creating this physical reaction that created nothing but anxiety. When I started feeling my old (non-smart) watch vibrate, I knew something was wrong.

So, in an attempt to be true to my minimalist claims, I've decided to part with this wonderful piece of technology that is doing me no good.

If you want it, just reply to my tweet with the password, which is the first word of the second and last paragraphs of this post. Seriously, it's yours if you want it.

Letters from a Stoic

I read this book a while back, following Tim Ferriss' recommendation. But I kept thinking about it recently, while spending a week offline (well, mostly offline) doing my best not to think about work, money or planning for the future.

Letters from a Stoic is a collection of letters written by Seneca to his disciples. While often disconnected (different disciples, different times), it's easy to see the patterns and tendencies of stoicism in his communications.

Some passages that were particularly relevant to me during my days off:

Nothing is a better proof of a well ordered mind than a man's ability to stop just where he is and pass some time in his own company.

I'm well aware of this, both on myself and on others. I enjoy solitude, but on my daily life fall into the modern trap of FOMO, feeling I need to be constantly online to be happy.

When was the last time you sat down to do nothing? No internet, no book, no nothing. Just sit and breathe, not planning, not strategizing, just letting time pass by.

A delight in busting about is not industry - it is only the restless energy of a haunted mind.

Oh boy. If Seneca is right, I am a thoroughly tormented man.

I often forget to ask myself: why am I busy right now? Why do I “need” to do this at this particular moment? Am I truly accomplishing something worthy, or am I moving about because I just want to keep pushing the cart - or even worse, because I cannot sit still?

The life of folly is empty of gratitude, full of anxiety, it is focused wholly on the future

A thought has begun to appear in my mind on occassion: “I made it”. Just a few days ago, sitting in the sun by the river, with my family around me, zero worries and fully enjoying our time, it’s hard not to feel a profound sense of achievement.

Now, there is of course much I would like to accomplish in the future. I’m nowhere near done leaving my mark in this planet. Yet, being too busy planning the future leaves me no time, no mental capacity, no mindful silence to embrace the wonderful life I already have.

Now, there are a few efforts I'm trying to make, which I believe help me lead a more mindful and thankful life:

  • I try to turn off devices well before going to bed, to allow my brain to shut down and to better enjoy sleep.
  • I put devices away when I’m with my kids. No tweet or message or email is worth taking my attention away from my wonderful children. Nothing is more valuable.
  • I try a mindful meditation in the mornings, to help set the tone for the day.
  • I do my absolute best not to let work bleed into the evening and weekends. This is my family time, and it’s priceless.
  • I take spurs of delegating work and saying “no”, just because I can. It reminds me that I don’t have to do everything I’m asked, and that I don’t have to do everything myself.

What about you? what do you do to slow down and re-focus?

Anything you want

I’ve been meaning to write about this wonderful book by Derek Sivers for a long time. Better late than never, I suppose.

This book hit a very important chord for me for one simple reason: while I’ve been increasingly interested in becoming more business oriented, I’m constantly intimidated (and frankly, bored) by the idea of becoming a “business man” as defined by some specific people I know. I felt (and still feel) I do not want to become *them*.

However, Derek reminded me that I can be a business owner, product creator, or team leader, in my own way.

I can be a business person and still be myself!

Trust me, this realization was a big deal to me.

I can be more business-y, and still keep much of who I am: technically-minded, caring, informal, trusting, generous.

Some ideas I really like from this book:

  • Business is not about money. It's about making dreams come true for others and for yourself.
  • Success comes from persistently improving and inventing, not from persistently promoting what's not working.
  • If you're not saying “HELL YEAH!” about something, say “no”.
  • Start now. No funding needed.
  • If you find even the smallest way to make people smile, they'll remember you more for that smile than for all your other fancy business-model stuff.
  • Don't try to impress an invisible jury of MBA professors. It's OK to be casual.
  • In the end, it's about what you want to be, not what you want to have.
  • When you sign up for a marathon, you don't want a taxi to take you to the finish line.
  • Never forget that you can make your role anything you want it to be.
  • (On why he gave his company away to charity) I get the pride of knowing I did something irreversibly smart before I could change my mind. Most of all, I get the constant, priceless reminder that I have enough.

(Some of the above are quotes, some my own paraphrasing - sorry I didn’t keep track of which is which).

In short - if you’re attracted by business but don’t feel like a business person yourself, you may enjoy this book.

I must certainly did.

PS: The audiobook version is narrated by Derek himself, and it’s a wonderful experience.

Scala Up North 2016

Scala Up North was, once again, a great success. Personally, it takes a lot of work to organize, but it’s incredibly fulfilling.

It’s wonderful to have guest speakers such as Bill Venners, Daniel Spiewalk and Kevin Webber, who set a great tone for the conference. I was also very happy to see many less experienced speakers. It feels great to know the event can encourage Canadians to showcase their knowledge and experience. 

Thanks to everyone who spoke, submitted and attended. You are awesome.

I’m very proud of the small contribution we can make to the Scala community in Canada, and I can’t wait to start organizing our next instalment - this time heading to Vancouver, a city that has a very special place in my heart.

Talent is Overrated

I recently stumbled upon the book Talent is Overrated by Geoff Colvin, and it turned out to be incredibly appropriate for my current path as a professional trainer.

If you ever want to become better at what you do, if you’re a teacher, or a parent, if you practice a sport or intelectual discipline - really, if you appreciate expertise in any way - I would strongly recommend you read this book.

In short, the book examines the following idea: most of us, when asked to think about world-class top performers (chess masters, olimpic medalists, best seller authors), tend to assume they were born with some kind of talent that made it much easier for them to get to the top. However, as Colvin finds in his research, the correlation between early signs of talent and top level performance is practically non-existent.

If not talent, what makes these people the best in the world, then?

Colvin discusses the idea of Deliberate Practice, which has three key components:

  1. A training program designed by an expert,
  2. Immediate feedback, either by other people or the environment,
  3. Repetition, repetition, repetition, repetition, repetition, repetition, repetition, repetition, repetition, repetition...

My summary does not do the book any justice, so if any of this sounds interesting, pick it up and give it a good read.

Some of my favorite quotes:

“Contemporary athletes are superior not because they are somehow different, but because they train themselves more effectively”
“We’re awed by the performances of champion sports teams or great orchestras and theatre companies, but when we get to the office, it occurs to practically no one that we might have something to learn by studying how some people became so accomplished”
“Employees aren’t children, but many of them, like children, will not voluntarily keep seeking new works experiences that stress their weakest professional muscles, the temptation to continue doing what you do compfortably is too great.”
“If inborn gifts aren’t the cause of success, then each of us must be responsible for our achievements - or at least much more responsible than we believed.”

Wanting less

I often see this hunger in myself and others to want more, better, higher, bigger things or experiences.

You taste a great wine, and immediately feel like you need to try one even better.

You visit a wonderful city, and start looking for the next best destination.

You enjoy a delicious meal, and start fantasizing about where the next dinner date will be.

The problem with this state of constant hunger is that it never ends. You’re never complete. You never arrive. You’re never living in the present, or fully enjoying what you’ve achieved or received.

Instead, I’m challenging myself to want and need less.

Imagine we went through life thinking the very experience we’re going through is the best one we’ll ever have.

We would probably cherish each moment and be a lot more present.

Next time I’m having good coffee, I will try to savour it as if it was the last good coffee I’ll have.

When I hang out on the couch with my kids, I’ll try to enjoy it as if this was the last chance we have at hanging out like that.

Let’s see where this takes me. 

Surrounding yourself with the right people

I started the year recovering from an intense holiday trip, the shock of coming back from the tropic to cold and snowy winter, and a nasty stomach flu.

Needless to say, I did not feel ready to go back to work on Monday January 4th.

I spent two days catching up on communications, visualizing and planning the next few months, and prioritizing work.

I was still not in the groove.

I was not feeling flow.

I was not happily tired at the end of the day. Just tired.

Then, today, I made my way to the office, where I shared a few words with some wonderful peers. And that made all the difference.

Just being around good people who were already working hard, pushed me over that hump and woke me up just enough to start feeling my groove again.

It’s amazing the difference it makes to surround yourself with the right people. 

I’m truly lucky.