Do Frameworks Fail? When?

Before reading this post, please note that the author of this blog is an entrepreneur who has turned to business from the technical background. The views and opinions have strong relevance to this fact. Anyone who is purely technical or managerial may not agree with some or all points noted in the article.
1. Learning Curve: [...]

Before reading this post, please note that the author of this blog is an entrepreneur who has turned to business from the technical background. The views and opinions have strong relevance to this fact. Anyone who is purely technical or managerial may not agree with some or all points noted in the article.

1. Learning Curve: Compared to simple PHP, frameworks need to be understood. Normally the curve is longer if the development resources are not very highly skilled. There are many ins and outs which we need to continuously learn from various official and many unofficial sources. After finding a few issues with a given framework switching to a new framework becomes difficult and also necessary. If a particular thing has to be done in a particular framework which is not directly supported one has to do a lot of research on the web. This is substantial efforts required in my experience. Many times a hack is required which eliminate all the benefits of a framework in the first place (Readability, Structure, Re-usability).

2. Code Efficiency: The time and space complexity of frameworks is not easily controllable. In fact, there is very little control available to the developers over fine tuning of the resources consumed by the framework which may not have been used in a particular project.

3. Total Cost of Ownership: Many frameworks have a great get started video that explains how quick a blog application can be created using their framework. I agree it can be quickly done but there is a catch. This is in compliance with the fact that when something is made easy by a framework it is done at the cost of making something else much harder to do. So even if you get started quickly with a framework, eventually, you are not the winner but a big looser when you see that important things have been sacrificed:

a. Time Efficiency: the code runs slow

b. Ability to support advanced web features.

The point is not just of sacrifice. In fact, there will never be any sacrifice to be done at all. But this comes for a cost, a huge cost. Time and Cost budgets get hampered. The time to market is drastically affected making the whole thing a flop. If, however, the budget is not a concern then one can go for such costly frameworks.

It should, however, be noted that these frameworks come handy when developing very small and simple sites which do not need something unsupported by a particular framework. Finding which framework fits best and supports your needs is a time consuming activity and can be avoided by starting with a no-framework to save this extra time again.

A Good Framework:

From the “engineering” point of view a good framework should consider following realities:

  1. Employee Attrition: Employee turnover has plagued the IT industry since long. It is essential that new employees are quickly absorbed into the working teams instead of spending several months training them.
  2. Cost Effective: Does your framework increase or decrease your costs? The cost is eventually bore by the clients and not the developers, so it is in the best interest of any customer centric company to use such a framework.
  3. Time-to-Market-Effective: Does it save your time or force you to invest your precious time into finding the hacks and “making it work”? This should obviously be the most important concern when choosing any tool.

With these points in mind I have written a small post with some of the simple rules to follow while coding PHP. The framework is in the minds of developer. If a developer is put into the right perspective he understands it and moreover the code has the essential qualities of reusability and readability.

Tags:

11 Comments

  1. Tarique Sani added these pithy words on December 30, 2009 | Permalink

    Your case sounds like a classic one of fighting the framework rather than working with it!

    Frameworks standardize code which makes handing over an existing project to a new member easy. This also works for decreasing the cost because a client can easily hand over the project to another cheaper developer.

    Lastly I do agree that a good framework should NOT need changing of code in ANY of the core files to make things work, this however in my experience is largely due to lack of knowledge on part of the developer….

  2. Jayesh Kitukale added these pithy words on December 30, 2009 | Permalink

    Hi Tarique,
    I was expecting a reaction similar to what you gave. Thanks for that.
    I agree Frameworks standardize code but there are other ways to standardize code. When I say not to use a framework I do not mean to not use Coding Standards.
    As for my background, I have used several frameworks in PHP and .NET. I know there are times when hacks have been necessary because of the shortcomings of the framework and not the lack of developer’s knowledge. I have also developed several frameworks and as a developer of framework it was very clear to me that there will be some features which will be made difficult by adding a certain restriction in the framework. This is natural.
    The article’s aim is to make a developer aware that frameworks have drawbacks and that they are inevitable. A developer who knows this is more likely to make a better decision while going for a framework.
    Hope that helps.

  3. Ryan P added these pithy words on December 30, 2009 | Permalink

    For me, being a freelance developer has allowed me to experiment with many different frameworks. I agree with the author of this blog very much when he wrote: “Many times a hack is required which eliminate all the benefits of a framework in the first place (Readability, Structure, Re-usability).”

    When you have a very impatient client who is waiting for you deliver, a hack is almost inevitable.

  4. Lenin added these pithy words on December 31, 2009 | Permalink

    “when something is made easy by a framework it is done at the cost of making something else much harder”
    I totally agree to this. I’m not against using framework yet.

    At some typical scenerios framework is obviously a good choice to not to re-invent the wheel and getting things done fast. But when it comes to hack a framework and figure out how to get rid of the bloats etc, then no-framework seems to be the way.

  5. Williams Mendez added these pithy words on December 31, 2009 | Permalink

    I think @tarique is correct, but that’s OK when you already know the framework, and find a cheaper programmer has a cost: time.

    I think that this POST is really interesting…I agree with the author, but just when you have new programmers, rookies, because they must learn the framework

  6. Sébastien Penet added these pithy words on December 31, 2009 | Permalink

    I don’t really agree with the author. From my point of view, a lot of frameworks have difficulties to decrease your costs in certain cases but generally-speaking, they do. I come from a php background, and I know that without Zend Framework I couldn’t have made so much money. I develop faster than ever.. And when something is not possible with the base components and therefore needs a hack, I simply make my own component or extend the ones in place. And this new component becomes my new default component. In fact, as time goes by, I develop my own “little” framework on top of a bigger one. And that’s how we should all work IMHO. A framework can’t cover all cases, it covers the main cases and it’s up to you to cover more specific cases in your own libs.

    I’ve worked this way for approximately one year (yeah, that’s not a lot), and really, the more I work, the more I enjoy working like that.

  7. Paul added these pithy words on January 1, 2010 | Permalink

    What is the alternative? For many individuals and companies developing your own custom framework or library of code can turn out to be a disaster. Chances are somebody else has done it before and better. Stick to your domain, and focus your development on what separates this web application from others.

    One good point this article mentions is that there is a trade off. Every time a framework magically does something for you, realize there is overhead and a cost. Usually its speed.

    A good framework is one that does not force use to use all components, and let’s you easily strip out pieces you don’t need. First step get your new app up and running, then focus on finding bottlenecks and implement caching where needed.

  8. Demosthenes added these pithy words on January 1, 2010 | Permalink

    It sounds like someone had a run in with Zend Framework. The fanboy framework of choice. The ever pretentious bloated mess that can only be described as an Academic Framework.
    Where
    complexity == unquestionable loyalty from people who don’t know how to code.

    Pretty bad when IBM is quietly telling their clients to back away from the entire Zend environment because of the Framework.

    I recommend using the “non-framework” known as CodeIgniter if you do choose to use one. Or if you want to deal with some complexity then go with Cake although Cake feels a bit like an overbearing spouse who never wants to give you the remote control.

  9. Jayesh Kitukale added these pithy words on January 1, 2010 | Permalink

    @Paul
    Good that you asked the question about the alternative. Here is the post I wrote to answer your question.
    After all! What is this no-framework?

  10. helloworlder added these pithy words on January 2, 2010 | Permalink

    I agree wholeheartedly. Recently I had to choose between using the Zend Framework or CakePHP. In the end the Zend Framework was the winner by a long shot. People say that RAD frameworks like Rails and CakePHP are great for beginners because it’s easy to get started. I disagree strongly. It’s like using Dreamweaver without knowing HTML or CSS. When you run into a problem you are totally lost. I think RAD frameworks are great for people who are proficient or experts in OO programming and MVC, but for beginners there’s no taking shortcuts. You can’t use a framework without knowing how it *really* works.

    I made a loooong post (well not that long) on Stack Overflow on the topic of CakePHP vs. the Zend Framework so I’m not going to repeat everything in this comment. The link to the post is:

    http://stackoverflow.com/questions/77371/zend-framework-or-cakephp/1944557#1944557

  11. Hari K T added these pithy words on January 5, 2010 | Permalink

    I agree we may spend lots of time learning a framework. But once we learn it developing makes faster.
    Also for example many of the frameworks uses security measures when getting data’s like the form. We may need to write the same code again and again and debug many in plain PHP. But with the help of framework it reduces.
    Also SQL injections etc ..
    The client may not be having a technical background , and many of the developers write buggy codes without framework . They are more interested in the layout and design. But once the site goes live and when it gets lots of traffics then he will recognize it.
    Also some frameworks has cache that decreases the loading time . So I am always I person standing to go for frameworks.
    Also using a particular framework the clients will be able to find any developer who can alter the code later easily. He doesn’t want to search for the same developer if he is busy …
    I hope so :) .
    Thanks

6 Trackbacks

  1. abcphp.com on December 28, 2009

    Devlopr » Do Frameworks Fail? When?…

    Before reading this post, please note that the author of this blog is an entrepreneur who has turned to business from the technical background. The views and opinions have strong relevance to this fact. Anyone who is purely technical or managerial may …

  2. [...] This post was mentioned on Twitter by shivie, Bin-Blog. Bin-Blog said: Do Frameworks Fail? When? – http://bit.ly/71nE8I [...]

  3. [...] good things that frameworks can provide, there’s still some bad that can come with them. In this recent post from Developr.com Jayesh Kitukale mentions a few of these downfalls. Before reading this post, [...]

  4. Twitted by isenthil on December 30, 2009

    [...] This post was Twitted by isenthil [...]

  5. uberVU - social comments on December 31, 2009

    Social comments and analytics for this post…

    This post was mentioned on Twitter by shivie: Do Frameworks Fail? When? http://digs.by/14zW...

  6. [...] of the good things that frameworks can provide, there's still some bad that can come with them. In this recent post from Developr.com Jayesh Kitukale mentions a few of these downfalls. Before reading this post, [...]

POST A COMMENT

Your email is never published nor shared. Required fields are marked *

*
*

HEADLINE

You could put something here. Edit this in bottom.php.

HEADLINE

You could put something here. Edit this in bottom.php.

TAG CLOUD