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.

I have a site that has been built from scratch by a few different programmers over time. The first programmer, who built the initial system and database, was not very tech savvy. Other programmers who worked later also did things their own way, taking shortcuts, patching things instead of dealing with root cause issues, as a result I got a website which is buggy and unmaintainable.

The site is made for wholesale distributors who come to buy and sell products. They register an account and take advantage of premium features. There is quiet a bit of different things that go on under the hood, for example, to stop fraudsters to continuously registering new accounts, we automatically block their account if any of the previous info they registered with is matched with their new registration info. We also have robot call and verify their phone number.

We also developed a system where anyone can send an email to our designated email address, and their email body and subject contents get posted as a buy and sell ad.

I want to rebuild the site. I've been thinking that in order to prevent future problems associated with programmers doing things their own way, it is good to migrate the whole site to a CMS such as Drupal or Wordpress and rebuild other features in the form of plugins. That way I suspect, the core, the framework, of the site will remain untouched by programmers, and every time core CMS updates come out, my site remains up-to-date. what do you think? Is this a good idea? Or should I keep the site custom but hire a savvy programmer who could try to fix all the problems, optimize PHP and Database.

I also would like to know if migrating my site and database is going to be expensive?

share|improve this question

4 Answers 4

This is a really good question, but I feel it is perhaps to localized. We struggle with this question all the time in IT: build or buy ? And if we build, what do we start with? The answer is, "it depends".

How good of a fit is a CMS to your business domain? Your website doesn't really sound like a traditional content site to me, but if it is then what you might do, is just setup your own little copy of Drupal (or whatever) and start prototyping - sketching out - out how you would build the site with it - what are the gaps you need to fill with custom plugins (put some static placeholder there). Practice doing some workflows with your prototype. This will be well worth your time, and I think you'll be able to answer your own question after doing it.

The second part of your question "hire a savvy programmer" - well that's really the hard part isn't it? Here's the thing: no one wants to fix your crappy website. Anyone who you can find to do it, is either going to try and convince you to let them build The Next Great System (their way) - or they are just doing time because they couldn't find any better job to do. Even someone smart and conscientious isn't going to get inspired by the prospect of doing this.

share|improve this answer

Full-disclosure: my primary expertise is in client-side work and I actually take pride in having JavaScript expertise. I've been exposed to a wide variety of stuff over the last four years (two of them were mostly short-term contracts with interactive agencies dealing with all manner of different web solutions) but take my opinions in light of this fact.

First of all Drupal is horrid. Really bad. It appeals to people who don't like writing code. Guess who maintains it? It is a royal PITA on the front end and taking a peak under the hood at the underlying PHP was like staring into the abyss. And I don't even know PHP that well. I've tried to have an open mind to both Drupal and also Joomla over the years but every experience has been misery on the client-side and not much fun on the back-end from what I could observe. If that doesn't sound very objective it's because it's not. I've worked with it. I freaking hate it.

A good CMS (I haven't really met one that I loved to be honest) might be helpful to you but they tend to be more about plug-in solutions that aren't very flexible or that have zillions more options than you need but none of the exact 2-3 ones you might want. I think choosing a smart generalist back-end framework might be the best way to go. WordPress is well-regarded but that might be because it's the only one that tends to maintain its own scope as a CMS.

After all, the point of a CMS is more to provide minimal-skill-editing of content on primarily content sites. Some, like Drupal promise much, much more but deliver a very enthusiastic community that knows absolutely nothing. In your case, certainly your site has content but it's not what I would tend to think of as a 100% content driven site. You have an app site or at least enough app to consider it so. Go with a back end framework that helps devs build and maintain apps.

I'm personally particularly fond of Django because it takes what I consider the ideal middle-ground. It will get out of your way when you need it to but the vast majority of stuff works so well and is flexible and fast and easy enough in its own right that you're still going to tend to want to do things consistently and in line with the framework's general philosophy. It's also a Python framework. And it assumes you can handle regular expressions. Django devs aren't people who hope to never have to learn anything new about development after college.

Python, IMO, and I'm not talking about the very best devs - so no holy war intended, is also going to tend to attract higher quality devs at the jr and mid-level. Or perhaps it makes more sense to say that it's going to alienate the crappy ones for not having a C-based syntax and offering flexibility that tends to horrify a certain kind of app dev who should probably stay away from the web.

The other general framework I've worked with that's tended to be the most painless has been .NET MVC, which was not easy for me to admit the first time I realized it. I'm not a hater but for your needs I would not recommend Rails. PHP might have something good in the mix that's even specifically targeting your needs but it could be a long search, and I despise Java too much to give an honest, unbiased appraisal, except to say that people who know why Java tends to make me want to kick puppies even though I'm totally cool with C, swear Spring is different.

You might also want to poke around and see if there are frameworks that cater more specifically to needs like yours. You never know. See what the competition or similar-minded businesses are doing.

share|improve this answer
1  
I really don't want to start a holy war, but how can you advise for Django and against Rails? –  sevenseacat May 18 '12 at 8:18

It sounds to me like your situation is exactly when you wouldnt rely on a CMS. You have a service - its the core product that you produce. If you used a CMS, virtually every part of it will be customized. You're not going to be able to simply swap in a new version of the CMS once all thats in place. It'd be better over the long run not to have to fight with an external framework to make otherwise simple changes, and not put your company at risk if the framework is discontinued or has a significant security or other problem that cant easily be upgraded because you've customized it so much.

From what you describe, your problem isnt the lack of a CMS - its the lack of a clear development vision and proper management of development resources. If you dont get that straigntened out and just start implementing a CMS, you'll probably just end up with a mish-mash of CMS's and other frameworks after a couple of years as everyone's still going to do their own thing, and your system will be even more complicated to maintain.

share|improve this answer

Have you looked into Joomla?, you can just create a new component in it's application space and toss the code in there with a few additions (point of entry and make sure all URLs are correctly generated) and have the sucker working.

Of course you might want to rewrite it and you can do so with it's application framework, but the important part is you can do so gradually and that you will benefit from the CMS.

But, independently of the platform (which could just be an application framework like Symfony), do you have any sort of migration plan?

share|improve this answer

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.