Monday, February 4, 2013

PHP Application Development with NetBeans: a review

After too much time I've been able to review "PHP Application Development with NetBeans: Beginner's Guide" by M.A. Hossain Tonu, published bky Packt. The official description of the book says that it's "aimed at PHP developers who wish to develop PHP applications while taking advantage of NetBeans functionality to ease their software development efforts and utilize the powerful features of the IDE. Familiarity with NetBeans is not assumed. However, a little familiarity with PHP development is expected.".

TLDR? You can skip the review and jump to the rating. Of course that would kill my ego, but if you still want to stab me in the back here's your knife. Et tu, Brute?

A small disclaimer

I do have a little familiarity with PHP development, and I have a strong familiarity with NetBeans, being a NetBeans Certified Professional, so while on the one hand I belong to the right target, on the other hand I might get extra-critical. Well, the book has been reviewed by no less than six professionals, so I guess my rants can happily and safely be ignored.

I must also note that I have received a free copy of the book in exchange for the review.

Here we go

As every Packt book I've seen (and I've not seen a few) the fonts are easy on the eye and there are many clear pictures. A bit of critic on the code sections, sometimes too long and with a lot of boilerplate that could be found in a downloadable file (it actually is) or confined in an appendix dedicated to the complete code.

Every now and then there are some "Pop quiz" sections, short multiple choice questions. As a rule of thumb I am not very impressed, because they remind me too much of a braindump. I'm OK with the ones on concepts, but not so much with the ones regarding actions, for which I'd rather have more hands-on. Speaking of which, we have the "have a go hero" sections, that often asks us to do completely new things rather than insisting on variations of what has already been done: that can be seen as a plus or a minus, depending on the eyes of the reader.

The first chapter guides the reader through the installation of the IDE and the whole stack environment. Having everything already installed (see initial disclaimer) I didn't check each and every passage, but everything seems very well explained and pretty much the way I remembered it.

The second chapter introduces the editor, yet I'm afraid it doesn't effectively convey all its power and potential, many things have been left unsaid or have not been deepened enough, like the possibility to customize the code templates and the folding criteria, not to mention specific editors for other languages.

One thing I didn't like is the position of the shortcuts, which are often presented out of context and way after the corresponding feature has been described. I think that an approach like "this is your action, and this is its shortcut" would be much better, as the proximity helps to sink the concept in.

The chapter follows the "here's the theory, try it in practice" pattern, yet I find the loop between the two to be too long. This is an issue throughout all the book (at least, it is in my opinion). A little less conversation, a little more action.

The third chapter introduces us to project in which we complete a whole user story. It starts with a description of the technologies used, then slowly presents all the code. The chapter is very similar in concept and structure to the seventh one, in which the skeleton for an enterprise feature (user registration, login and logout) is presented. In both cases there is a lot (trust me, when I say a lot I mean it, particularly in chapter 7) of code before we can actually see something working. Forgive me for the politically uncorrect comparison to another publisher, but from this point of view the "Head First" series are much better, as they start with something working, then they slowly build things up.

Moreover, the chapters are more about the technologies used in the application rather than NetBeans. Chapter 7 in my opinion is even worse, because it deals with more advanced subjects that a beginner probably doesn't know. OK, take the probably away. Yet, ironically, after several patterns and abstractions, and almost at the end of the book, the author says "it is recommended that you are familiar with PHP sessions and cookies in this tutorial", a subject simpler than many others that are taken for granted.

Chapter 4 is on testing and debugging, it's quite good (I must admit I had some problems with my instance of PEAR but that has nothing to do with the book). Some more details on Selenium would do no harm, at least a screenshot of the results should be inserted.

Chapter 5 deals with documenting your code and it's quite good. It also happens to be the chapter that you can download to evaluate the book.

Chapter 6 is about versioning with git and NetBeans. It's not bad, yet it does not show how to unstage a file (why not a have a go hero here?). Another feature that's dealt with too lightly is merging, and the resolution of conflicts is only briefly cited. And, talking about versioning, chapter 2 ends with a warning about the position of NetBeans metadata directory with respect to versioning, but it does not explain the consequences of the choice; some hints or advice would be nice.


Now, here we are with the conclusions. If you skipped all the article to jump to this section, please feel a little guilty.

The book should be an introduction, yet some PHP concept are quite advanced for a beginner. It helps you to get up and running with a complete environment and introduces you to many features of NetBeans, yet some important things are left out. All in all, in my very personal scale the books rates 3.5 our of 5.