A Tale of Two Frameworks (Times Two)
Posted on November 7, 2008, under The Web Business, Uncategorized, Web Design, Web Development.
I’ve got a couple of upcoming projects on the horizon and I decided to start researching some well known frameworks both the server side and the client side. Most of my programming has been with custom libraries that either I’ve created or ones created by a client/employer. Up until now, I’ve been the wheel reinventor for a while with the notion that I can best get into the guts of the code if I built the libraries. Now, that’s ok for smallish projects, but as projects get larger and more complex, there are definite problems with that approach.
A web application framework, according to Wikipedia, “is a software framework that is designed to support the development of dynamic websites, Web applications and Web services. The framework aims to alleviate the overhead associated with common activities used in Web development.”
If you expand that definition to include both client-side (CSS and JavaScript for the browser) as well as server-side (for the web server using a language like php, python or ruby), then you have the making of a development platform for creating just about anything on the web.
So, today I wanted to share my justifications for using frameworks and what that means to site owners, designers and developers alike. There are many considerations when you’re shopping around for frameworks and understanding the business implications can help you decide.
For the site owner.
So, if your site is being redesigned or re-architected or if you are having new development work done, then here are some good reasons for having your web team adopt frameworks:
- Much of the foundation work is done. The main benefit to using any kind of development framework is that most of the foundational programming is done already. For example, a PHP framework like Zend Framework has all the basic database, file access, authentication functions built-in and includes some nifty functions for PDF, Mail, RSS and Web Services support. These features can be fairly simple to have implemented by programmers who are well versed. The benefit here is that your team doesn’t have to reinvent these features and focus on your site specific features.
- Good frameworks are rigorously tested. You can rest assured that the framework code works well. Additionally, good frameworks have a strong development team and any bugs found along the way are pretty well squashed quickly.
- Frameworks help with “What-if-my-developer-got-hit-by-a-bus” syndrome. A well supported framework will have a following of designer/developers that support it. They adopted that framework for their work and they can usually pick up a project with less ramp up time.
- Frameworks can help you add more features for the same price. With a good framework, you can have your team implement/enhance features that might not be in the budget without it. Many popular frameworks have a community of developers who routinely create plug-ins and new modules which might enhance an existing feature or add one that doesn’t exist.
As a site owner, you’ll also have to consider the downside of implementing a framework for your project. Here are a few things to consider:
- Retrofitting a website with a framework is hard. If you have an investment of code which you decide to restructure to use the new framework (or worse yet, a hybrid of the two), you’ll have a prescription for sleepless nights. Some frameworks support refactoring better than others. Also, you need to weigh the cost of recoding against the benefit. Rewriting code can be a big expense if not planned well.
- Learning curve for in-house staff can be high. Many frameworks have a very specific way of coding in them. Some of which are quite inflexible in the approach to building applications. For example the Agavi PHP Framework uses a very specific notion of what an MVC (model-view-controller) is. If your staff isn’t used to this type of development, then they’ll have to take time ramping up before they can get productive. So, there are start up costs involved in moving your team to a new framework.
For the designer/developer.
If you’re a designer/developer considering the switch to a new framework, then you need to also consider the following:
- Will the framework be around for the long haul? You certainly don’t want to invest your time and effort (and maybe even money) in a framework only to have it disappear. Granted, all your existing sites will still work, but the chances you’ll have support or code fixes (without going in and doing it yourself) will be slim.
- Is the framework conducive to how you do your work? In other words, how much will you have to change your daily workflow to accommodate the framework? More on this later.
- Will you be more marketable if you learn this framework? A popular framework creates a demand for programmers who specialize in it. Think about it, there’s a world of demand for developers of a particular framework. (Ruby on Rails anyone?) So, making the investment in learning a framework might open the door for new opportunities.
- Does the framework make programming more fun? A lot of my coder friends wholeheartedly adopted frameworks like Ruby on Rails and jQuery (for JavaScript) because, in their opinion, it makes coding fun! Hey, how cool is that?
How to choose a good framework.
Whether you’re a site owner or a coder, the selection process is similar. Consider these tips when choosing a framework:
- Understand how you (or your web team) codes. What kind of coder are you? Which tools do you use when you are coding? For example, I consider myself a no-frills coder. I prefer short and simple frameworks without a ton of extra features. Frameworks like the YUI framework for what I do is just overly complex. Accessing many of the features requires a lot of code and understanding a pretty large number of functions. On the flipside, if you want the kitchen sink of JavaScript frameworks, YUI is one to seriously consider, there’s a ton of modules and widgets included.
- Make sure there is a large community (of developers and testers) behind the framework. You want to ensure your framework continues to evolve and stay popular. The Ohloh website is a great place to see how popular a framework (or other open source project) and how well supported it is by the developer community. This is THE place to start when you are looking for a framework to hang your hat on. Ohloh will even let you evaluate projects by frequency of updates, code/comment ratio and longevity of the project.
- How large/friendly is the community surrounding the framework? Face it, you’re going to need help from time to time and the internet can be the best place to find it. Consider whether or not the community is friendly to those using the framework, especially newbies. Some frameworks have built a bad reputation for not being very tolerant to new users. This, in turn, sours their opinion of the framework and causes them to switch to another framework.
- Consider the quality of documentation/tutorials. Having a good set of learning resources is really important when making your choice. Bad or incomplete documentation/tutorials will cause a framework to lose popularity.
Doing your homework will help keep you from wasting a lot of time when evaluation a framework.
About my search process.
Over the next few weeks, I’m going to evaluate a number of PHP, JavaScript and CSS frameworks to hang my technical hat on. Here’s my unscientific criteria for making my choice:
- Does the framework provide the basic functionality I need? I, for the most part, don’t need a ton of widgets or prebuilt functions, but I do have a specific set of needs based on my workload and knowledge.
- How far can I get in a week? Overall, how productive am I with the framework? I want to know how easy the framework is to do a real life example. My evaluation process will involve choosing one PHP, one JavaScript and one CSS framework and seeing how far I can get with a minimum of hairpulling on my part. I want to see if the framework will increase my productivity in the long run.
- Does the framework support the way I code? I’m pretty set in my ways as a developer, and I want a framework to compliment my workflow, not bash heads with it.
- How good is the documentation and how active is the community? It’s a natural part of learning the framework my own.
- How complete is the featureset? How customizable it? Does the framework have everything that I’ll need to develop the kinds of sites I need to create? If not, how easy is it to modify the framework to round out the features I need?
- Am I having fun with the framework? It might sound corny, but I really like coding. I got into the business to have fun and feel passionate. I want to know that the framework I use helps me keep the passion alive.
Here are the frameworks that I’ll be evaluation:
PHP: CakePHP, Codeigniter, Symfony and Zend Framework
JavaScript: jQuery/JQuery UI, MooTools, YUI and Prototype/Scriptaculous
CSS: Blueprint, 960 Layout, YUI CSS and my homegrown CSS framework.
As I evaluate each framework, I’ll be posting my findings and how they compare with eachother. I invite everyone to share with me your criteria and experiences.
Leave a Reply









