Author: John Paul Mueller
Publisher: Microsoft Press
Aimed at: Complete beginners
Pros: Good choice of language
Cons: Wrong level, wrong order and wrong priorities for the beginner
Reviewed by: Ian Elliot
C# is a good choice for a first language. It is modern and while it is strongly typed and object oriented the latest version has many easy to use features that makes it suitable for the beginner.It is also available for free in the form of the Express edition of Visual Studio.
Start Here! should be a good book but things don't always go according to plan.
The book starts off easily enough with an account of how to get Visual Studio 2010 Express C# and Web Developer. Then it sidesteps the usual hello world for a simple web browser - not so difficult as it simply requires you to place a control on the form. However, it is here you first suspect that the book might not be taking the simplest possible route to teaching C# as it then goes over the whole procedure again using WPF. So far this extra confusion isn't too bad but...
Chapter 2 takes us into Web Development. This might seem very practical as web development is important but remember this book is about learning C# and going off into another whole environment replete with complications before we have even encountered a single line of the language seems unnecessary. You have to suspect that this book isn't going to take a simple approach to learning C#.
The next chapter confirms this suspicion because it is about LIINQ. This is quite amazing - to make LINQ a topic in such an early chapter of a beginners book is a very strange decision. For a real beginner, i.e. some one who cannot as yet program, this is going to be a complete mystery. Why go into LINQ when the objective is to explain the C# language? It seems that if there is a way to make things more complex this book takes it.
One thing that is easy to overlook is that this book isn't entirely "standalone". It relies to some extent on Start Here! Fundamentals of Microsoft .NET Programming which is available to the reader in ebook format. References to it are made at the beginning of both Chapters 2 and 3 - but if you are reading a printed book you might not want to break off to read material that requires going online. If you do you will find that it doesn't really help to negate any of the complaints about this book. A full review of Start Here! Fundamentals of Microsoft .NET Programming will follow very soon.
Things get worse in Chapter 4 with a look at collections. Remember nothing about the C# language has been formally introduced as yet. Some of the really big ideas like conditionals and loops have been introduced but as part of explaining something else without much stress on the fact that these are the big ideas.
After this the book continues to ramp up the level of the technologies tackled. It becomes difficult to believe that such topics can be selected to be part of a beginner's book - Chapter 5 on XML, Chapter 6 on accessing a web service including SOAP, Chapter 7 on WPF,. working with libraries, command line programs, LINQ in web apps. The final two chapters are on Silverlight - yet another whole new subject - and debugging.
This reads more like an attempt to get as many advanced buzz words into a book as possible. None of them are explained deeply enough to be of use, they read more like technology demonstrations. For a book on programming it is actually quite light on code. What code there is simply makes use of higher level facilities to get a job done, which means that most of it is simply a linear flow of method calls. At best you will see a loop performing a search. As to creating your own objects and methods, this is simply ignored. This is C# used as a scripting language to glue things together. It isn't deep and it isn't enough for the reader to do more than pretend to be able to program.
Even if you are an intermediate level reader, or are trying to convert from another language, you aren't going to get anything much from reading this book - it just isn't deep enough. If you really are a beginner then the only thing this book is going to do for you is put you off programming for life. It fails to tackle any of the big ideas that are central to learning to program - flow of control, functions, objects, methods, inheritance, properties, events and so on. Some of these are covered in the companion ebook, but even so the ideas should be repeated in print and no reference is made to them. If you do take a look at the ebook to find out about them you will find that it really suffers from the same faults that this book does.
I can't think of a reader that this book would be useful to. It certainly isn't any way to learn C#.
So what would we recommend?
See our reviews of Beginning C# Object-Oriented Programming if you are specifically interested in C# or Hello World! Computer Programming for Kids and Other Beginners if you want an accessible book for a beginner that uses alternative free resources.