I get asked from time to time what it's like to write a book. Often, I've given those who have asked me that question an opportunity to contribute to one of my books in one way or another. I tend to look at the reviews that get posted about my books with a bit of trepidation. I know some authors who don't look at reviews at all. I like to look at them so I can get a taste and feel on what I've done write (pun intended) on the book and how I might improve next time.
I got involved in a short discussion on one thread about writing. This particular person was very negative about what I'd written. I considered his complaints and after weighing them in my mind, I decided he was a bit off his rocker. You get those, from time to time, people off their rockers. For example this person started the thread off this way:
"I started to read through this book - and the first chapter starts by
using VM templates on Windows XP - come on - no one uses XP anymore -
also using the templates is a cop-out from doing a real world install -
In the real world we are not using templates."
Clearly, I thought, he was missing the point. We had a couple of back and forth messages after which it was clear to me that this person was just not getting it. So, I finished the thread off with the post I will paste in at the bottom of this blog entry. In it, I talk about the writing processes. There are a number of factors that eventually influience the content and depth of a given book. I don't mind constructive commentary at all, but when the commentary becomes grossly misrepresentitive (no - it's not a word but I'm using it anyway!) of the book, or it's content - then I mind. This isn't just about me, but it's about a ton of people who put a lot of effort into these works. The authors, editors (copy, technical and others), the contributors, all of those involved in the publishing process work hard. So, to expect constructive criticism rather than criticism that actually mischaracterizes (again, the dictionary says this is not the strict form or use of the word but I'm going with it) your book is annoying to say the least.
So, here is the sum of my response to this person. I don't know if he ever "got it", but he never replied afterwards:
In fact in the real world virtual machines are everywhere.
not use a "template" in this book - but I did use a Virtual machine.
Each of the environments I used for the book were created from scratch
by me. I suggested the use of the template for the reader so that they
could spin up an environment and quickly start learning.
GoldenGate, what is foundational is not the OS, rather what is
foundational is the databases you are running on that OS. As such, and
unlike any other GoldenGate book we do cover the real world in that we
show not only how to replicate between Oracle databases, and we also
show how to use GoldenGate on MyQL and SQL Server. No other book on GG
that I've seen gives anywhere near the coverage to the heterogeneous
features of GoldenGate than mine does.
I wanted to do other
platforms but we ran out of time and space. If you want to do a chapter
on some other platform in the future, please write me privately and I'd
be happy to include you in the next revision of this book.
mind, people need to learn the basics first, and then they build on
those basics. The book isn't about installing Linux, so why waste the
readers time diving into something that is extra-topical. Good grief,
the thing would be > 1000 pages if I did that.
<name withheld>, I've
looked and don't see that you have ever had anything published. I'm sure
you wrote something for your PHD and your MS? but you have never
published a BOOK which is quite a different thing. The fact is that when
you write a book you have to balance a number of factors:
Time - You have a limited amount of time to produce the thing. You also
have the pressure of deadlines. I also had to coordinate the work of
others. Oh yeah, and I had to work my regular job.
2. Pages - Your publisher gives you a limited number of pages to write.
3. Recompense - You are paid a finite amount of money. It's NOT enough to live on, so see comment about employment on #1.
4. Family - You have to make sure that those who love you remember who you are.
Resources - A serious consideration. Resources cost time and money. I
don't have a convenient place, or the time, to reproduce an entire data
center in my house. My garage is flat out of space since that is where
my wife likes to park her car. I did ask her if I could install an
Exadata X3-2 full rack in there and she gave me the "what the heck are
you talking about" look. She said, "We don't have the cooling for such a
machine". I was surprised, I thought she was going to be upset about
not getting to park her car in there.
6. The "real world" is a
construct in your mind. There is no "real" world. I've been doing this
for 25 years and every environment - EVERY ONE - has been different.
There is nothing "real" about it. Even principles change over time (ie:
development methodologies - agile 25 years ago would have been laughed
at). There are environments that are strictly virtual, there are those
that are totally physical and there are those with a mix. You have cloud
services, etc...etc... So any scenario that I would craft would apply
to some percentage of the total audience.
Finally, my approach
is several fold. I try to teach the reader HOW to fish, rather than fish
for them. That is why the book is laid out as it is. You see, not
everyone has that PHD there <name withheld>, and not everyone has this laser like
understanding of the complexities of the real world. That's why chapters
1 through 5 very carefully lay out the fundamentals of GoldenGate and
even include workshops that run the reader through how to do these
For example, I find that on many occasions there is this
discussion on multi-master replication that is occurring and that
somehow they forgot about the problem of collisions with respect to
data. For the real world, do you not think that these kinds of
architectural concerns should be considered.
Far to often I find
that books give readers the "quick start" cheat sheet - getting them off
to the races fast and furious. The problem with that is they build
their architectures based on that quick start chapter and later realize
that they missed some fundamental principles in developing their
environment. They are miles down the road and now they have to U turn
and rebuild stuff. My approach is to teach foundational principles, WHY
things are the way they are - then teach how to do these things. That
said, once you have the fundamentals down, doing something like an
upgrade or a database migration is a snap. I have considered a quick
start chapter when we do a revision of this book.
It is funny
though, we do mention zero downtime upgrades and migrations in chapter
14, with examples. We don't have a workshop in there though. Maybe I'll
add one next time.
Bottom line, the book is 401 pages of packed
content. It starts from the ground up, and teaches you not only how to
use GoldenGate but how to use it properly. The real world is not
contained in a tidy box. The real world is, in fact, usually very ugly.
Thus, any attempt to replicate the "real world" will only apply to a
small portion of reality.
Finally, with respect to "grammar"
errors, I'm not sure I know how to respond to that. If you wish to reply
to me offline about this issue, I'll be happy to send your comments to
Oracle Press so that their editors, who usually have an MS in English,
can be further educated. I don't claim to be the greatest writer in the
world, but I try. I'm a DBA, not an English major Damn it! :)
the end of the day, <name withheld>, I don't know what to say. I respectfully say I
disagree with you and that if you can build a better book, then do so.
If you want to write a book, contact me offline and I'll see what we can
do to get you published. All you have to do is go through the process
once and you see it in a WHOLE different way. I challenge you to write a
better book, given the constraints I've listed. I'd love to see it. I'm
sure it would be great.
Correction - Chapter 14 does not have an example of a migration in it,
so that is something to consider next time. Chapter 14 assumes that you
have learned the basic principles of the previous chapters. When we do a
re-write I will have a workshop on zero-downtime migration/upgrade