Despite the fact that I ordered the book on the 25th of June, I finally received my copy last Saturday. The postal service can’t be blamed. They needed five days from Cincinnati, Ohio to Wildeshausen, Lower Saxony (Germany). From my own experience that’s quite good. I don’t know what happened in the meantime, maybe too many people preordered the book. However, I found some hours of spare time in the last days to read the book.
Before I’ll go into detail, let me give you a short summary. Ivo Jansch (that’s the author by the way) describes the audience of the book on the back as follows:
Whether you are running a large scale web app in a PHP-based environment, or if you are considering switching your site to PHP, php|architect’s Enterprise PHP Development will surely be a valuable resource for you and your development team.
I partly disagree. I’ll explain that later. The book tries to tackle everything which is related to enterprise PHP development. From building the team through software architecture to maintenance. Because of the wide range of topics and only 265 pages available, things cannot be discussed in detail. Most of the time that works, sometimes it does not.
The book starts with PHP’s background. Ivo talks about its history and discusses pros and cons. If you’re relatively new to PHP, those two chapters are very valuable. All important aspects get mentioned. If you already work with PHP for some time, you can skip them.
After chapter 2 the main part entitled “Enterprise Development” begins. Ivo starts by talking about The Team. Different roles in a team, training and recruitment are the covered subjects.
The chapters 4 and 5 deal with how to Gather Requirements and how to do the Planning. If your boss should ever come to your office and tell you that you’re going to talk to the new customer about the features the new software should have, read chapter 4. It lists all kinds of requirements which should be defined together with the customer. If you rarely talk with customers, it will help you to touch all important subjects in the meeting.
If you are a developer, you probably know the following situation: You are discussing with someone about a new feature which should be added to a software. You clarified all requirements and details, the meeting draws to a close and then your counterpart asks the final question: How long does it take to finish the task? The bigger the task, the harder it is to do a correct estimation. Personally I find it pretty difficult to pre-estimate the needed time correctly. Chapter 5 talks about exactly that.
So far I was entirely satisfied with the book and chapter 6 with the title Architecture sounded interesting but in my opinion Ivo chose the wrong topics here, namely OOP, UML and Design Patterns. Every PHP book, which covers slightly advanced topics, explains me in detail how to use abstract classes, interfaces and the singleton pattern. Such stuff doesn’t belong in this book! So after reading something about constructors and iterators, I arrived at the heading Enterprise Patterns. Cool! The topic lasts half a page. Uncool! Ok, that was somewhat disappointing but Ivo saves the situation by talking about Database Design. Of course you have to read about some basic stuff like relationships but there is also a big (”big” in the context of this book) ORM part which turned out well. The chapter closes with High Level Architectures (MVC, Multi-tier Development, SOA). Talk more about that in the 2nd edition of the book please.
Chapter 7 is about Tools. In there you find some very obvious wisdoms like your editor should support syntax highlighting but also some important things like Source Control.
Chapter 8 - Building Blocks. That chapter is about 3rd party software. That means CM software, eCommerce solutions, frameworks and similar stuff. Difficult topic, because, whatever you’re saying, you directly steer into religious conflicts between the different frameworks, forums or libraries. Ivo solves this pretty good by praising all of them equally.
Chapter 9 is about Security and I experience the second letdown. The chapter starts by telling me
Don’t Trust Input
Oh really? And htmlspecialchars() converts special characters to HTML entities? Neat! What was the main topic again? Oh yeah … enterprise PHP development. Fortunately Ivo enhances the chapter later by talking a bit about OpenID and ACLs.
Chapters 10-16: Development, Quality Assurance, Optimization, Deployment, Implementation, Operations, Maintenance. No, I’m not running out of time. Ivo, great job! Lots of enterprisish things in here. He covers many interesting topics like the different kinds of testing (he even mentions TDD and Continuous Integration), caching, clustering, monitoring and change management. And there is a lot more in these chapters.
In the end Ivo invests 10 pages in Development Methodologies and Project Management. A good ending which strengthens the positive overall impression.
Conclusion: First of all some thoughts about the audience. Remember the quote in the beginning?
Whether you are running a large scale web app in a PHP-based environment, or if you are considering switching your site to PHP, php|architect’s Enterprise PHP Development will surely be a valuable resource for you and your development team.
If I’m running a “large scale web app”, I don’t need this book because I know nearly everything about that stuff. Otherwise my “large scale web app” will crash in 3, 2, 1, now! I would recommend this book to
- PHP hobbyists, who want to become professional developers
- junior developers, who are in their first year on the job and
- more experienced developers, who have to put together their first team
I think I clearly exposed the parts I disliked but all in all it is a great book! It offers loads of interesting information and exciting subjects to think about. If you count yourself to one of the above mentioned groups of people, give the book a read. If you are more experienced, you can still read the book in order to verify that you know all the important stuff.