For the last year and a half, Dianne Marsh and I have been working on an introductory Scala book.
The book is based on these ideas:
We do not assume you know Java (or any particular programming language).
We only cover some of the language, enough for you to get a foundation and comfort with it. We find that trying to cover everything in Scala all at once is overwhelming and confusing.
We take the smallest steps possible, to give you many learning points where you have a sense of accomplishment.
The third idea produced the title of the book; the original concept of the "atom" was that it was the smallest indivisible piece of matter. Thus, we call the book "Atomic Scala" (this also gave us inspiration for the cover design: mid-century modern "atomic age").
Although the goal is to produce a book that is simple enough that a (dedicated) programming novice can learn Scala as their first language (and, taught right, it's a lot easier than Java as a first language), we also wanted to create something that works for more experienced programmers, who can easily skim through the earlier atoms until they get to the parts they need to study.
We feel that topics like unit testing, coding style and error handling should be internalized early, and so we introduce those in this book.
I tested both "Thinking in C++" and "Thinking in Java" as seminars first, and they became books later; this testing was fundamental to the success of those books. "Atomic Scala" is now at a point where it will benefit from live feedback, so we are holding our first week-long seminars.
The seminar will be hands-on, with lectures based on book atoms, followed by exercise sessions using book exercises. The course will put you in a great position to follow up with Escalate Scala training and/or other, more advanced books.
A great thing about the "atomic" format is that the resulting lectures are short -- typically less than 15 minutes, which is within the average human attention span. One of the main reasons I stopped giving seminars is that the "deep dive" of the chapters in "Thinking in C++" and "Thinking in Java" produced lectures that regularly lasted over an hour! I found this exhausting, and the audience did too. I'm looking forward to being able to give short lectures; it should be more energizing for everyone.
Attendees will receive an early access copy of the book and online commenting/review status on the Google doc where we're actively working to finish it (you might even witness the editing process).
We're also trying to figure out where we should hold the second seminar, so we've posted a quiz on our facebook page:
Please suggest a place you'd like to see it held -- thanks!
We hope to see you in Boulder or somewhere else soon!