Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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 seamlessley 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 less. This logic supports Symfony, but to me it is not enough.

Qualified opinions will help, please.

Thanks!

share|improve this question
    
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 Feb 16 '12 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 Feb 16 '12 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 Feb 16 '12 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 Feb 16 '12 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 Feb 16 '12 at 18:46
show 3 more comments

migrated from stackoverflow.com Feb 16 '12 at 23:13

This question came from our site for professional and enthusiast programmers.

1 Answer

up vote 2 down vote accepted

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.

share|improve this answer
    
@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. –  Asif N Feb 17 '12 at 11:22
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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