Author: Rob Miles
Publisher: Microsoft Press
Audience: Complete beginners
Reviewer: Mike James
Books that are aimed at the complete beginner are rare and good books aimed at the complete beginner are even rarer.
Writing a book for the complete beginner, i.e. a non-programming reader, is the toughest task of all. Most books that claim to target the complete beginner simply don't. The reason is most probably that the author has no idea what a complete beginner looks like and assumes that a complete beginner is just someone who can't program very well rather than someone who can't program at all. This book is different - it really is for the complete beginner.
C# isn't the easiest of languages to get started with - no object-oriented language is because there are too many things to learn before you can write your first program. The book is divided into three parts: Programming Fundamentals, Advanced Programming and Making Games.
The first part consists of seven chapters and really does start from the beginning. However, you do need to know that to make things easier for the beginner and to make sure that something substantial can be achieved very early on you have to make use of some special code that can be downloaded - the Snaps library. This has some advanced features, such as voice synthesis, which is how the beginner can get to do impressive things in just a few lines of code. As the book says:
"If you can't use programming to impress your friends and family, what's the point of it?"
This is a great idea and does get the beginner off the ground much faster, but runs the risk that the beginner might think that all programming involves these special objects and methods that the book uses. As long as you are happy that this confusion isn't going to set in, then it is a good idea.
The book slowly works its way through the key programming ideas - variables, loops, ifs and finally arrays. It is a logical progression but you do need to be warned that there is a lot of reading. It is all good stuff and fairly easy to read, but there is a lot of it. The early part of the book goes in for a lot of explanation of how programming works by analogy with other tasks. This is very reasonable but if your style is to get on with things and you aren't a very eager reader you might find this tough going. If this is the case it isn't the books fault, it is just a mismatch of styles. If you are willing to read then I think it is highly likely that by the end of Part 1 you will have most likely seen the light and be on your way to being a programmer.
Part 2 of the book is much like any other introductory book on programming because by this point you have or are assumed to have got over the hurdle of being able to program. You now have a better idea of what you need to know and the four chapters in the section can just get on and tell you about it. The idea of a class and objects has been introduced in the first part, but now we start to get to grips with it and find out about methods. Next we learn about structures and classes and details like reference and value types. The final chapter in Part 2 is about using objects and the advantages of using objects.
The final part of the book is in some ways a reward for getting so far. It is about making games using sprites and, on the way we learn more about object-oriented programming, including inheritance.
I say that this is the final part of the book but in fact there is a Part 4 but this isn't included in the printed book but has to be downloaded as a free ebook. This raises the question of why the entire book isn't just downloadable for free as an ebook? The answer is that in many situations a paper book is simply better. I think that the next edition should consist of all four parts - it would be a better book for it. After learning about games in Part 3 the free ebook tells you how to create apps and build a UI. Personally I would have preferred this to learning about games - it is simply more useful, but I admit that it might be seen as less fun.
Overall this is a very good book that is pleasure to read, although be warned that it does involve a lot of reading, which is perhaps unavoidable/
It is well produced in full color, which extends to the code listings. Code is helpfully annotated and there are Code Analysis sections (with a gold background) that point out generalities you might otherwise overlook. These, together with Programmer's Points picked out by a red flag, help to explain the basic concepts of programming and assist in the transition non-programmer to a programmer. Text on a blue/green background highlights possible pitfalls under the headline What Could Go Wrong. As well as lots of examples all the way through which you can download and try out, there are also suggestions for going further in green panels titled Make Something Happen.
This is a real beginner's book and if you are, or know, a real beginner then I would encourage you to give it a try. It won't work for everyone and you will have to spend a lot of time reading and following the examples.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.