Get your FREE 30 page Developing SOLID Applications guide!

A Reflection On Adopting Zend Framework – One Year Later

Out Of Date Warning

Languages change. Perspectives are different. Ideas move on. This article was published on February 3, 2011 which is more than two years ago. It may be out of date. You should verify that technical information in this article is still current before relying upon it for your own purposes.

About a year ago, I was introduced to Zend Framework as the framework I was going to be working with almost every day. And for nearly a year now, every day I have worked closely with Zend Framework, learning it’s intricacies and dealing with its warts. I sat down in March of last year and wrote a case study about learning Zend Framework. A year after adopting it seemed like a good time to reevaluate the framework and reflect.

Learning Zend Framework was a daunting, challenging experience that tested myself and those I worked with. I learned a few lessons that I think are important, and I think are worth sharing.

Learning new tools is not easy. The tool you pick doesn’t change this fact.

Learning a framework is tough. It’s hard to get involved, it’s sometimes difficult to read the documentation, and the paradigms which are so familiar and obvious to the developers and users of a framework are foreign to you. But that’s just part of learning. It’s the way it is.

Think back to when you first started learning PHP and the struggles you had with it. They seem so far, so foreign today, and yet for many of us it was a few years ago. Learning a framework is akin to learning a new language; while the syntax of the old language doesn’t change, the resources, tools, libraries and components available do. The paradigms shift and require us to rethink some decisions. And this is normal. It’s okay.

The framework you pick doesn’t make the transition any easier. They’re all difficult in their own ways. While some are better designed than others, none of them is easy to master in five minutes. Placing this expectation on ourselves or our tools is setting ourselves up for a failure.

Dive in wholeheartedly.

If we recognize that learning new tools is hard work, the only thing we can really do is dive in with our whole hearts. This is the key to learning: immersion. Immerse yourself in the framework; use it every single day for a while and refuse to step back into old habits or old tools. Determine that this is the path you have picked, and you’re going to stick with it.

One thing I see too often is people pick a framework, but then fight the framework tooth and nail. Rather than learning the ways in which it’s implemented, and the methodologies behind those decisions, they reimplement methods or components because they need them now, and don’t want to take the time to do the research. This is a fast way to failure. Diving in wholeheartedly means accepting that the framework’s methodology is one that you’re going to make use of, for better or for worse.

Don’t doubt your decision just because it’s not working for you today.

There are going to be days when working with the framework seems to be the worst decision you could make. The good news is that it gets easier! Day after day, working with the framework, it gets easier and easier to implement.

It’s easy to say “this isn’t working” and become discouraged or even abandon the idea of using a particular framework. I know I had days like that, especially early on. But the reality is that the decision you made is not less valid today than it was last week. Sure, perhaps there are some frameworks that we should discard, but chances are good that you can accomplish what you’re working on with the framework you’ve picked.

Frameworks are fantastic tools that typically make the development process easier, but learning them does come with a cost and developers must understand the importance of sticking with it, sometimes for better or worse. Like any tool, frameworks can be beneficial or detrimental, but when used properly and given the time to learn them, I’ve found them to be extremely beneficial.

Write better object oriented PHP today.

Object oriented programming always leaves you with a headache. What if you could master it instead?

Get the book now! »

Wiseguy wrote at 2/3/2011 2:10 pm:

Thanks for sharing your thoughts on this. I’m glad to see you back, as you haven’t posted in quite a while.

Tero wrote at 2/3/2011 3:15 pm:

Any framework is better than no framework, but I have to say symfony’s documentation was really helpful to understand its methodologies. I think zend is also great framework, but it is lacking good documentation and with documentation I don’t mean tutorials.

Mikael wrote at 2/3/2011 7:30 pm:

Sounds like you hated it.

Steve Clay (@mrclay_org) wrote at 2/4/2011 1:09 am:

This is good advice, but where’s the real substance of the “reevaluation”? What kind of limitations did you run into? How does it let you down or come through? The harshest criticism I’ve seen is from the team itself on the 2.0 development wiki. They’ve got their work cut out for them.

Steve Clay (@mrclay_org) wrote at 2/4/2011 1:14 am:

Here’s the link: Long, but good honest assessment of the limitations of ZF 1.x and the hurdles on the path to 2.0.

Brandon Savage (@brandonsavage) wrote at 2/4/2011 8:15 am:

Steve, in my experience there are plenty of blog posts that can talk about the technical likes and dislikes of various frameworks. I wanted to avoid duplicating that discussion here, and instead focus on some of the aspects of learning a framework that are difficult or stressful.

Zend Framework is a mixed bag in terms of whether or not it was ultimately a successful framework for my needs. It came through marvelously in some areas, and failed in others. Moreover, I came through marvelously in some areas and failed in others; implementation of access control is one example, where I could have done a better job understanding how the framework operated and adhering to those principles.

Steve Clay (@mrclay_org) wrote at 2/4/2011 10:04 am:

ZF is in the title and four places in the opening paragraphs, so I just wasn’t expecting a generalization :) Most of the blog posts reflecting on frameworks are written early into adoption so you get mostly an idea of the learning experience and initial impressions rather than how the framework suited the organization/projects in the long run, what became easy once you gained experience, what seemed great at first but turned out to be a trap, etc. That kind of two-years-in wisdom seems hard to come by.

arnold friend wrote at 2/4/2011 1:10 pm:

I agree with Steve: there’s absolutely no substantive discussion regarding the topic in question. This comes across, at least in my opinion, as more of generalized motivational speech; in summation: learning is hard; if you’re going learn to swim, dive in; if you don’t initially succeed, try, try again. A tad cliche friend; btw, hello from DC (glover park).

arnold friend wrote at 2/4/2011 1:18 pm:

btw, i wasn’t trying to be overly critical – I’ve been using ZF for five years and was very curious of what the interpretation of a set of “new eyes” would be.

Hari K T (@harikt) wrote at 2/7/2011 12:08 am:

Truly said .
You should never look back after choosing a framework or go and look another framework which implements a particular feature.
When I started learning Zend I didn’t understand many in the doc. But when looking into it now a days I feel comfortable.
Its same like learning PHP as you said :).