SebastianF (5) [Avatar] Offline

(First, a short note concerning myself and my point of viewsmilie

I'm new to the MEAP forum (still taking in all the habits here), even though I've been an avid Manning reader for years.

I'd like to comment on the first chapter -- from the position of someone new to Akka.Net and reactive systems. I have been a software developer for over 15 years (desktop, server and web development), but have not worked with Akka.Net or the Actor Model before, so this is my point of view. I will be commenting on chapters as I go through them in order not to bias my initial thoughts in hindsight.

One last thing: Thank you, Anthony, for sharing your experience and thoughts with us fellow developers. And thank you, Manning Publishing, for openly allowing us to collaborate on these books through MEAP and this forum.

I'm a very frequent reader of IT books and a passionate developer, so my comments can seem a bit harsh and pedantic. However, I do not mean them to be. I especially do not mean to offend anyone. I just believe that the great effort of writing a book must be met with just as great an effort of a sound and honest critique for the benefit of all. So no harm intended whatsoever.

(Now, some remarks on the first chapter.)

Overall, a good start. But two things strike me as odd:

Point 1: Central ideas and names not clearly introduced or contextualized.

The welcome page clearly defines the target audience as developers new to Akka.Net and reactive systems. However, the first chapter tends to throw central names and ideas at me without properly introducing these, making it difficult to follow your (Anthony's) thoughts. Sometimes it is not even clear whether a word references a common concept (like a "regular" compound noun) or is a proper noun (referencing something very special and distinct).

This point concerns section 1.2 and 1.3, but is best illustrated on the welcome page, where the "reactive manifesto" is referenced in the first paragraph with no capitals, and then taken up in the third, this time capitalized ("Reactive Manifesto", RM in the following). Similarly, the first chapter (page 1) introduces common traits of reactive systems and references the RM but does so only implicitly, expecting me to know about it.

Section 1.2 again refers to the (non-capitalized) "reactive manifesto" and states some of its central ideas. Still, I have no idea about where exactly it came from. Is it to the reactive programmers what the Agile Manifesto is to agile developers?

When finishing the first chapter, I kind of have made assumptions about what the RM might be, but a more thorough and formal introduction similar to the "Where does Akka.Net come from" box (page 9) would have helped me a lot here.

Similarly, the key traits of reactive systems as proposed by the RM (page 6) remain very fuzzy and not clear-cut to me. Okay, their fuzziness is hinted at on page 5 ("connectedness between all of the elements"), but not dissecting and clearly contextualizing them is not helpful to readers new to the reactive paradigm. I believe a better approach here might be to illustrate the ideas behind those traits by way of exemplifying. For instance, take a classic example of a n actor-based system and show where and why it is "responsive", "elastic", "resilient" etc.

Point 2: Akka.Net and Reactive Extensions (RE) referenced but not introduced

This point referes to section 1.3. Like in my first point, Akka.Net and RE are thrown in without a proper introduction (and context). Sections 1.3.1 and 1.3.2 mention Akka.Net and RE just in passing when actually talking about actor-based and event-based concurrency. The chapter even concludes in the summary (page 10) with "We also saw how Akka.Net fits into this story". Only that -- we didn't. Akka.Net was only thrown in vaguely.

I believe the basic problem with the first chapter is one of meta discourse. I clearly realize that you (Anthony), the expert, know a lot about your matter and are trying to introduce it to me, the reader being new to your expert matter. It is a notoriously difficult thing to look at your field through the eyes of a beginner. To you these concepts are clear, to me they are not. So when throwing key concepts and names at me without properly introducing or contextualizing them, I cannot follow you and feel lost. As a beginner, I want you to explain them to me in one of two ways: deductively by formally and clearly introducing central ideas and names and then problematizing/analyzing/contextualizing them, or inductively by way of illustration of examples (of such problems), which then lead to said central ideas and concepts. The first chapter, though, tends to do neither one nor the other.

That's it for now. Concluding, I am very much looking forward to reading the remaining chapters. From glancing at them I feel there's some really great stuff coming.

Please let me know if I failed to make myself clear, I'll be happy to elaborate.

Thank you very much for your hard work, I really appreciate it!