A representative of Packt Publishing contacted me to do a review of their book PHP Team Development by Samisa Abeysinghe. Over the years, PHP has evolved into a programming language that can be used for much more than just simple web applications. And organising development processes and software architectures are becoming ever more important. So books that go beyond pure PHP programming are of interest to me. So I agreed to do a review.
The author uses the first chapter to tell us that software is complex. He then introduces different aspects of the software development process that can be used to deal with this complexity. These aspects are elaborated upon in the remaining chapters. He discusses topics that are popular at the moment, like design patterns, frameworks, agile development, collaboration and continuous integration.
Especially the MVC design pattern plays an important role in the book. The author tries to explain how MVC can help to divide responsibilities in teams. A whole chapter is dedicated the pattern and another chapter on MVC frameworks in PHP. Unfortunately, this is also where the weakness of this book shows. The author maps the View to the Presentation Layer, the Controller to the Business Logic Layer and the Model to the Data Layer of an application. This explanation of the MVC pattern is quite common, but also inaccurate, because the Model should also contain (if not most) business logic. Often referred to as "Skinny Controller, Fat Model".
Moreover, the author insist on using a MVC framework as a basis to split responsibilities in teams:
"So as long as all of M, V, and C, work on their own, it is only a matter of putting them together and they should work seamlessly."
The use of MVC frameworks is in a lot of cases a good thing to do. But he also discards Drupal as just a CMS and not a framework. And therefore it cannot be used for building enterprise-level applications as a team. A lot of developers would beg to differ. I am quite sure that Drupal, and other CMS type systems e.g. Typo3 or eZ Publish, have been used more often in building complex applications, than "leading" (according to the author) frameworks like Limb, phpDrone, PHP Work or ZNF.
Apart from the list of PHP frameworks there wasn't really a lot PHP specific information in the book. Tools like PHPDocumentor, PHPUnit, XDebug, PHP_CodeSniffer or Phing aren't even mentioned.
Throughout the book I had the feeling that the author based his views more on hearsay, than on proper research. Topics like object-oriented programming, agile development, extreme programming, SCRUM, continuous integration don’t go very deep. And he hardly refers to the people, books or articles behind the different theories and methodologies. I can understand that the author doesn’t want to get theoretical. But his advice is also too general. Practical examples are rare.
Also missing is how different types of organisations can influence a development team. Not every team works on a single product inside a firm. Some teams consist of a mix of internal and external employees. Team members might even be working on different continents. Or how do I organise a completely virtual team, which is typical for open source projects. Hey, some of us even work on multiple projects at the same time.
"PHP Team Development" presents a quick 'n dirty guide on team development. For beginning programmers it might be useful. But more experienced programmers don't have to feel guilty for not reading the book.