Hi,
First of all, as I already knew, I shouldn't buy wrox "Beginning..." books, because so far I have found them useless... I think these titles are very confusing also... The books are clearly not meant for people who want to learn a specific subject, rather the books are meant for people who want to start programming and want to do it with this or that programming language. Sure, towards commerce I don't doubt that this is a gold mine for Wrox, but towards learning and info, this is a disaster...
If I want to read about programming principles ( read 'common sense' really -- have never learnt anything from the programming principles spread out through books like this... ), I will buy a book about programming principles, but if every book about every programming topic tries to hide lack of cohesion and content, by writing about programming principles, it drives me mad! This redundant non-info makes a book a jungle when you want to find something and it takes double the time and concentration to read it.
As for my proposition to wrox, get one good book about "beginning programming", in which you really do an effort to make programming principles interesting, because no doubt they can be. Do some real research in the topic and come with some new material... This could also give some historical background (about how computer science developed) about computer science, which programming languages exist, and why and when (to)/(not to) use them, ... I almost get excited about this as I write, I think a good book like that summing it all up, would be a pleasure to read, even though programming principles are actually coming out of my ears...
Then ask your authors to stick to the subject, and advise people who have never programmed before to read the 'principles' book first.
Also I think about one subject there should only be one book. Everybody (at least I assume so,...) who is learning a certain language, would like to be good at it, not? I don't think there is anybody who wants to learn it half. Also nobody wants to have to read 20 books on the same subject, just to puzzle together this bit that isn't mentioned in the other books and so on... How nice would it be if you needed only one book about one subject, and it would tell you all about it. If some parts would be to difficult for a beginner, you could skip them and come back to it later...
As for now, some of the 'professional' books are this way. Actually there is this little sentence in about all of them in the 'who should read this book' section saying "however, if you are new to ... , this book doesn't completely leave you out..." Translated to plain english this reads: "if you are new to this field, this book is meant for you, and if you aren't, you are in trouble, because you are now reading more than one book on the same subject (eg. your time is being wasted)"
I don't like this way of commerce (as a general living principle, not only because it wastes my time and money), because it takes your readers for fools. I know I'm probably trying to convince you of stopping to make disgraceful profits, which has not a big chance of succes, but maybe you genuinely want to offer good products to happy users... and in that case i wanted to lay my egg...
My impression is also that the beginning books cover not half of the subject (in this case a professional book could pick up where it left of...), but cover half of each chapter, condemning the professional books to repeating everything... This completely nullifies the reason of existence of 'beginning' books...
To resume:
- Separate programming principles from program language syntax
- One book about one subject, covering everything
- Clear and comprehensive titles (eg. not misleading, beginning programming is not the same as beginning assembler programming)
- Book content should be structured, cohesive, contain no redundant text, cover each subject exactly once and complete, and have a good index, so the book can be used as a reference
- If possible, every keyword, or subject should be explained completely in one place, so you can easily find out everything about it by looking it up in this place
- Cut down on screen shots. 95% of the time they are just book fillers. There are some horrible examples from this at wrox also, like "Beginning regular expressions"
To give an example of how bad it can get, I am now reading Beginning Visual C++ 2005 by Ivor Horton, simply because there is no pro book out there on this subject, at least not in the stores in this town, and because I have never programmed C++ before, and because when I tried to use Visual studio for learning java before, i got lost in the mfc classes and the lack of native support for the original sun classes,... so I wanted a book to learn c++ developing for windows. Reasonable book to purchase, wouldn't you think?
Well, I haven't finished the book, but the first chapters are a bit like this:
"If you want to include a new line of code, you can place your cursor at the end of the previous line and press enter..." Not kidding, this is sentence from the book... You couldn't even call that redundant coding principles anymore... I would think this fits in "using word for windows for seniors". Mr Horton, my granny has no ambitions for c++ programming, and in fact people who do shouldn't need info like that.
On the coherence, I give you an other example...
In those first, I think 2 chapters, the author explains in about 3 different places why the main function can be called main() _tmain() or wmain(). Each time he explains about half. Now let me tell you how I read a technical book. I don't remember a thousand page book by just reading it, I remember what can be found in it, and about where it can be found. This kind of writing makes it impossible to use a book as a reference.
On top of that a lot of not so relevant things are mentioned twice or three times, actually making the chapters that I have read much longer than they should be, hence wasting my time and concentration.
Why does all this happen, I wonder, do people at wrox work together in a kind of we are all friends and don't dare to critique each other ( the marketing "only good vibes" attitude ), lowering the standards considerably, but unpunished, because nobody dares to ruin the good atmosphere (just realize that your readers are not bound by this 'keep everybody happy' atmosphere, and that they will be harsh on what you take their money for)? Or does just nobody read through these kind of books before they get published, or do the wrong people do it? Or do the same people always do it, making it a routine job, where they don't notice what it is really about, or don't try out all the code? I think books should be double checked by practice, meaning someone who actually wants to learn this technology should try to learn it by a book and give (harsh) feedback on it.
Am I asking the impossible? I don't think so, lets give a positive example: Professional Javascript for web developers by Nicholas C. Zakas. That's also a wrox book, but what a book.
Javascript is not extremely rich on functionality, unlike maybe c++, but clearly it was also not developed by Ritchie and Thompson, and browsers mishmashing it more, made it seriously complicated. On top of that it is very abstract, meaning you kind of have to write part of the language constructs yourself to get functionality. This doesn't make it a really simple thing to get across and to learn...
Well, it took me exactly a week to go from novice in javascript to do anything imaginable with it, thanks to this book. That's quality. That's inspiring, that's value for money.
The book doesn't contain redundant text, nor coding principles, nor to many screen shots of ide's or other software. Is perfectly suited if you have no experience in javascript, manages to give a completely browser compatibility solution, something i have not seen any other book do, and the code works!
So, in the hope wrox take this critique serious and other readers give their opinion about the subject
sincere greetings,
ufo