views:

284

answers:

6

On my first job interview, I was asked why did I build my own CMS? Why not to use one of existing CMS, Wordpress, Joomla, Drupal...? At first, I was stunned. I couldn't immediately recall all of my reasons for building my own CMS, but this was definitely one of the main reasons: It's my code and if I want to change something in that CMS (which I often have to do, because each website I build needs CMS with different functions) it's not a big problem. For some time I've been using Wordpress and one of the main things that distracted me from using it was discovering bugs in code that wasn't written by me and this bugs were often, especially if I made some changes to CMS or added a plugin...

Here, I can find these 8 reasons why NOT to build own CMS:

  1. It won’t meet users’ needs

  2. It’s too much work

  3. It won’t be a standard solution

  4. It won’t be extendible fast enough

  5. It won’t be tested well enough

  6. It won’t be easily changeable

  7. It won’t add any value

  8. Create content, not functionality


Quote from the same page:

So the main question to ask yourself is: ‘Why am I really trying to re-solve a problem that has already been solved before?’


Well, I definitely agree that it's hard to invent CMS that hasn't been already invented, but on other hand, I think every CMS is (or should be) individual... it maybe won't have a million of functions, it will have 3 functions but their usage will be clear (to a user) and do all that one site needs to have. I think also that it is not good to give to a client a CMS with a lot of functions that are never used and it looks probably more professional when website and CMS together look like one product.

I would also like to comment some quote parts:
"It’s too much work" - I agree, but when using existing CMS and customizing it to website needs and can sometimes be very hard job or mission impossible.
"It won’t be easily changeable" - I disagree with this one.

What is your opinion on this one, why did you develop or didn't develop your own CMS?
Ile

+1  A: 

As a team leader that is always being pushed to do more with less, I too ask the question "why would you write your own?" There are more CMS packages out there than there are programming languages and I find it difficult to believe that you cannot find one that meets most (if not all) customer, business and cost requirements.

If you find that code changes are needed, opt for an open source solution, make your changes and share as needed or desired.

I do know that many times a CMS systems is NOT what is needed. Many customers need a Content Editing System. What I mean is that someone technical puts a site in place and the customer adds/edits/removes pages. The pages are already well designed and formatted. In these cases, I can see where it may be quicker to design & implement something from scratch rather than chopping down a CMS with access rights or removing/hiding functionality.

MichaelKay
how do you decide which CMS system is the best one for the requirements of your client? for sure you need to adapt the CMS you choose, so which one is the best and for sure will suite all requirements? How much time to you need to get familiar well enough with all existing to make that choice? (best means cheap in this case)
Chris
Well, I don't agree that it's so easy to find suitable CMS, especially for my clients when most of them need website (and) CMS in Croatian language, and I must confess that I always had a LOT of problems with diacritic characters
ile
@ile: i guess u mean 'šđćčŠĐĆČžŽ' ;-)
Chris
@ Chris: yes :)
ile
+6  A: 

This is an interesting question that applies to most development, not just when building a CMS.

In general, I would say that it's a bad idea to reinvent the wheel (and most of your 8 arguments are correct in most cases), but there are exceptions. The first one that comes to mind is one from Joel Spolsky, In Defense of Not-Invented-Here Syndrome:

If it's a core business function -- do it yourself, no matter what.

The point is, if you're making your money directly from building content management systems, you should not take one from someone else and tweak it until it fits you. You'd rather be in full control over your own product.

Edit:

Also, don't forget that the urge to reinvent things stems (among other things) from a fundamental law of programming:

It's easier to write code than it is to read it

This does not mean that we should take the road that appears to be easier but it explains why we fall for it. Take the challenge and actually read some code, rather than write it, from time to time.

Jakob
I don't know why, but I'm a bit sceptical when it comes to use someone's code with knowing that I will need to make some changes to it in future, maybe that's what distracts me from using it. Someone mentioned here, if you're building CMS to learn it and to learn new technology than it is good to do it. Well, I would say that I was also led with it.
ile
+6  A: 

I would build a CMS because it can be fun and a great learning experience.

However, any open source CMS can be customized to any client's need. The biggest problem is that you have to understand how that CMS works in order to be able to change it well.

Either way you would be faced with quite a big task, but I must agree with those who say that you shouldn't start from scratch (unless you are doing it to learn some new technology) exactly for the reasons stated in your question... As they say, don't reinvent the wheel unless you want to learn about wheels.

klausbyskov
"I would build a CMS because it can be fun and a great learning experience" - I didn't write it in my question, but this was also one of the main reasons why I started building it.
ile
+2  A: 

I've found it works when the context of the project is larger than just a 'content site'. I've worked on a number of real estate sites where the bulk of the content is coming in from data feeds, or already existing in databases that have had their structure set up long before you were involved. Really, we only had a handful of BS 'content' pages that made up the site that were rarely updated. What they really needed was a simple interface to data entry. It was far easier to build some one off components than try and shoehorn an existing system on top of an out of the box CMS.

Like others mentioned though, you must consider overall requirements. Is there workflow involved? Dynamic navigation? Then I'd start leaning more towards out of the box CMS's, but many times people say they need a CMS, when they really just need a WYSIWIG interface to a database. But sometimes not...

nick92675
+3  A: 

It seems to me that the biggest reason NOT to build your own CMS (besides security issues) is lack of support and upgrade path. I consider it a disservice to clients to put them on a custom CMS and then have to rely on you only support and updates. Even worse is having them pay for the development of the custom CMS - they are paying you to reinvent the wheel no matter how simple the site requirements are.

There are plenty of CMS options out there that will allow you to add your own custom extensions if your requirements are beyond what is built in.

The best reason (possibly only) to build a custom CMS is to learn a language well. Building a CMS is a great way to learn web development, but it's not a great way to service your clients.

mahalie
A: 

Unless you're building one for the experience, there's only one real reason for building your own: It's cheaper and/or easier than using one on the market that meets your requirements.

Rimian