4

We have an app that's currently only got about 120 users. The userbase will probably grow by 50% over the next 12 months - but we're going to have to separate storage etc. because we're looking at several TB of data. Later this year, we will move to cluster based hosting. The app will also be provided in multiple languages.

I'm at a stage with the project now where we sometimes need to add additional features rather quickly, and whilst the building the app the way it is was a business decision (time and money was short then and we had to have something running fast), now we need to have multiple developers working on the application, and it's a little tough, even though we have everything templated and documented well.

I have the opportunity to rewrite the application - we can build one team to simultaneously redo the codebase, whilst one team manages the existing application. Once the new version is caught up, we'll switch over to it.

The question is: should we use a framework for this application? I've looked at Symfony and CodeIgnitor, and obviously the latter is easier with a smaller learning curve for our team. On the other hand, if we just re-architecture the application and build our own 'framework' and classes (I know, no need to reinvent the wheel, but we already have hundreds of functions written which seamlessly talk to our database).

Now I've seen comments like 'if you want have an app you want to make a living with, use Symfony', but I just don't know how that works. I've made a living with WordPress websites before too, so that statement is, well, not helpful!

Any advice, please. Developer resource is not a problem for us, but I don't particularly like the restrictions Symfony imposes in terms of directory names, etc. (but I guess this is just a matter of getting used to things).

The thing is, I now have to make a business decision, ultimately, and I'd like to be able to justify it to my team. At this point, from my point of view, the only major benefit is that when we hire new developers, if they are familiar with the framework, their learning curve will be smaller. This logic supports Symfony, but to me it is not enough.

Qualified opinions will help.

8
  • this is such a common problem. When an application start from scratch then it grows without having defined a good long term plan. My advise yes adopt a framework (even your custom ad hoc framework) and make the application as possibile modular and extensible
    – dynamic
    Commented Feb 16, 2012 at 18:01
  • @Mike B - I said qualified because I needed to know why you would choose something. A collective subjective can lead to an objective, if that makes sense :)
    – Asif N
    Commented Feb 16, 2012 at 18:05
  • @yes123 - yes, that is the plan. But because we have a chance to do it, what is the 'best practice' and why?
    – Asif N
    Commented Feb 16, 2012 at 18:06
  • @Mike B Understood, but I don't think anyone is qualified to actually make the right decision until they have built this precise application in all of the frameworks they talk about. The rest always is and will be opinion, because that is consulting. I am interested in opinion because ultimately I have to make the decision. I asked for qualified because if someone tells me WHY they might use a certain framework, it might help me pick up on something I need. Ultimately, I am seeking an answer - not the correct answer. The question doesn't allow a correct answer.
    – Asif N
    Commented Feb 16, 2012 at 18:20
  • LOL - this is a practical question, surely you cannot doubt that. And if you give your opinion, there would be no open end. Opinions are not open to discussion. NVM - you don't want to answer the question - I can live with that.
    – Asif N
    Commented Feb 16, 2012 at 18:46

1 Answer 1

4

No one can answer it definitively, but here is a framework, if you will for deciding the business value of a framework.

  1. Does your current project have a lot of duplication that needs to be refactored anyhow? The cost of fixing the foo functionality in n places is non-trivial.
  2. Does the current system make no sense anyhow to a fresh set of eyes?
  3. Does framework x elegantly solve a burning problem for us?

If you said yes to to 2/3 (particularly item #3) then I think you have a case for using a framework. If it helps, you don't need to eat the elephant in one bite. I've been gradually refactoring a system toward using Symfony by gradually changing out a proprietary template system for twig and using Doctrine for fresh parts of the application.

I think the learning curve angle is a bit over emphasized about frameworks. Compared to the learning curve for most domains the time spent learning the CI or Symfony way is trivial.

1
  • @Duane Thanks. This is actually quite useful. The answers here would be no for us with some duplication occurring, but there are better ways to tackle that than re-writing the whole application using a framework. Commented Feb 17, 2012 at 11:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.