Atomic Scala is now “in production,” which means we’re building the index and finalizing the cover and making editing passes and creating other support elements so we can actually go to press in a month or so. We’ll stay with print-on-demand for the time being because we’re still learning things and want the freedom to make improvements. This book is also an attempt to adjust to the way that people actually learn and to make that learning experience better — this makes it more of a continuous experiment. For example, a few weeks ago my coauthor and I gave a one-day tutorial at a conference, and we came away realizing that experienced programmers needed a couple of summary chapters that they could jump to; this way the book can serve both beginning programmers and experienced programmers. So we came back and wrote those, and now the book is better. We expect this experience will be repeated as we gain more information about how people learn from the book.
I’m having some fun today “splitting an atom”, based on some feedback from a reader who downloaded the first 25% of Atomic Scala. He said that he thought that Values and Data Types should be split, so I started down that path this morning …
I’m splitting it into 2 atoms: Values … and Data Types. Following our practice before theory principle, Values must come first since Data Types has no context without storing a value. That’s driving some other fun changes too, notably in the Type Inference atom.
The Type Inference atom appeared later in the book because that’s how we thought of it … as something special that Scala does for us. But why did we think of it as special? Because we’re programmers who didn’t have that in other languages. Ah, but we’re writing this book to appeal to beginners as well as to seasoned developers. Stepping back, we realized that beginners don’t know that they have to declare the types of variables. And why should they? You didn’t have to do that in math class and that all worked out OK.
Beginners are not tied to the restrictions in older programming languages that required you to do so. So why not introduce Values using Type Inference and later show how you can do this in a more verbose way? I wouldn’t have thought of this when we started writing the book, but because our atoms are written to contain single concepts, they are also easy to re-order.
We are really grateful for feedback! Please keep it coming!