web design business - use premade cms or no?

Red Squirrel

[H]F Junkie
Joined
Nov 29, 2009
Messages
9,211
I have not coded websites in a very long time but want to get back into it. All my current sites are basically hard coded html with php inline as required. This actually has one advantage in that there is less server side processing. With today's server power and how efficient apache/php is, this is probably not a huge thing anyway.

I want to code a custom CMS that I can just reuse for all my sites. It would be rather simple, but have modules to avoid coding repetitive stuff from site to site.

Then I thought I might be able to just use a premade CMS. I personally prefer to code my own that way I can make it exactly how I want, and don't have to learn someone else's code, but is there a reason I should use a premade one? I would be designing sites for clients, so I don't want "powered by phpnuke" and stuff like that on the bottom or the client to think I hardly did any of the work.

For those of you who code websites as a living, how do you go about it, do you do it from scratch each time, or do you have a foundation of some sort you build on top of?
 
I generally stick with WordPress and Joomla, more WP than Joomla lately though. But I'm no coder so that helps me do more designing. Which I'm not the best at either, but I do enjoy it.

Use a solid and established CMS to save time if you want to focus more on design and tweak where needed.
 
I prefer writing my stuff from scratch but if I've produced 100% bug free code that's flexible and general enough to cover the needs of most clients (something like a blog, newsletter or photo gallery) then I'll use that instead of rewriting it again from the ground up.
 
I'm working on my own CMS for my own use, but also to learn PHP as I go. I like knowing exactly what's going on and understanding the code behind my projects. And sometimes you're just too picky to use something pre-made. If you do it, it should do everything you want and nothing you don't.

But if you're looking for forum software, vB is the only solution. :D
 
If you had any sense, and you were capable of writing a CMS that didn't totally suck and that would work for many different kinds of clients, you would drop out of the web design business entirely and focus exclusively on making a CMS to sell to other designers.

So, with that said, use a CMS from someone who's good at that, and do your web design around that.
 
Learning one or a few CMS systems can only help your skillset. Using a CMS will remove much of the heavy lifting from your plate: user/role management, inline rich-text editing features, and modularization to varying degrees (among other features).

From what you've described of your own custom sites, they sound comparatively simplistic. It even sounds like you're more into designing the presentation rather than the back-end substance. If so, then look into a CMS package that has solid documentation and support for skinning and templating.

I wouldn't worry about any "powered by xyz" tags at the bottom. The product you provide is your responsibility, no matter what foundation it has. You will be the person that gets called, not the name in any bottom tagline.

As for sites I've done, the debate between "from scratch" versus a CMS depends on the client's needs. This leads into business analyst tasks, which is something you should already be doing.
 
If you had any sense, and you were capable of writing a CMS that didn't totally suck and that would work for many different kinds of clients, you would drop out of the web design business entirely and focus exclusively on making a CMS to sell to other designers.

So, with that said, use a CMS from someone who's good at that, and do your web design around that.

I don't know about this. I'm happy that I can write fairly flexible blocks of code that can be easily dropped into existing sites with minimal tweaks. I like knowing my code is 100% strict compliant, heavily commented, ultra light weight, cross browser compatible, and pretty easy to use.

I also like knowing most of the admin related interfaces I build aren't scary to my clients. I give them exactly what they need to know/view and nothing else.

My blog code might not be as easy to setup initially as Wordpress or have a billion plugins but I mean, I'm a programmer/web developer. It's my job to set it up and get it working, then offer the best solution I can possibly make for my client to manage it.

If I had to choose between:

1. Depending on 800k of code across a hundred files + teaching my client the admin interface of a third party product.

or...

2. Depending on 30k of code across half a dozen files + showing my client the admin interface which I wrote and how to use it.

Why would I ever choose #1 if #2 already exists?

Screw the other developers. If they want a solution like that they should do it themselves or think of another profession because they are clearly not qualified for the job. If Joe Blow wants to put up a blog and isn't a web developer then let him choose Wordpress, that's fine by me.
 
I'm not so sure ShoeLace. In your comparison of 1 and 2, I think you need to rethink a few things.

First, that "800k" lines of code is actively maintained by an army of great developers. Constantly updated, corrected, and having new features implemented. Second, the third party interface? It's as easy as using Outlook or Word. You can not possibly say the Wordpress admin interface is complicated. If a client, or someone on the client's payroll, is not capable of learning the Wordpress publishing interface- then I argue they should not be adding content to the web.

You can also strap down almost any modern CMS's admin interface to display only what you see fit via user permissions, essentially ending up with your "exactly what they need to know/view and nothing else."

It's basically reinventing the wheel, right? Every time I right a console application, or small platform application, I don't think of writing a new operating system for it to work from.

Whatsisname nailed it, really. If you are not trying to produce a commercial CMS solution (which is of course fine, hard work... but great if you can market it), it's not worth trying to invent your own. It's time much better spent creating awesome feature rich websites with nice designs and custom made modules/plug-ins to fit your client needs.
 
Depends what your priority is. Using a prebuilt CMS would save you time, however it won't be as exactly matched for your needs, sometimes trying to shoehorn another piece of software to fit is bad.

I prefer to write everything myself, I've got several sites with dynamic content and honestly the CMS didn't need a lot of work, and it works well for what I need. On the other hand my sites are small, if you're writing some huge site with loads of dynamic content then it might make more sense.
 
It's basically reinventing the wheel, right? Every time I right a console application, or small platform application, I don't think of writing a new operating system for it to work from.

I think our difference in opinion is you think writing your own code to be flexible means it must be like a typical CMS. Most CMS solutions aren't geared towards actual web programmers. They are geared towards the "do it yourself" person who likely knows very little about the field he's getting involved in.

You know, the guy who will try to fix his oil burner without knowing anything and it might work for a month but then completely dies and now he decides it's time to hire a professional.

Think of how many posts we see on this forum that make the above statement true. Someone will be like "oh hey look at my site, how can I output the date above this paragraph of text". It's obvious they have no idea what they are doing but managed to get things rolling with some type of CMS.
 
What happens when you do option two is that you have one set of 30k lines of code for one customer, then you have another set for a second, another set for a third, and eventually you have all these different sets of code that all act pretty similar but different enough to cause all kinds of weird bugs.

Then when you fix bugs in one you can't necessarily fix them in the others, and now you are stuck maintaining a dozen slightly different versions of the same code base. Which if it doesn't already sound terrible now realize you will be spending most of your time fixing the same bug 20 times in 20 different pieces of software, and it eats up so much time you can't do anything else or get more customers.

With option one, you get a piece of software that was designed to support many customers right from the get-go.

If I had to choose between:

1. Depending on 800k of code across a hundred files + teaching my client the admin interface of a third party product.

or...

2. Depending on 30k of code across half a dozen files + showing my client the admin interface which I wrote and how to use it.

Why would I ever choose #1 if #2 already exists?
 
What happens when you do option two is that you have one set of 30k lines of code for one customer, then you have another set for a second, another set for a third, and eventually you have all these different sets of code that all act pretty similar but different enough to cause all kinds of weird bugs.

Then when you fix bugs in one you can't necessarily fix them in the others, and now you are stuck maintaining a dozen slightly different versions of the same code base. Which doesn't sound to bad until you realize you are spending most of your time fixing the same bug 20 times in 20 different pieces of software, and it eats up so much time you can't do anything else or get more customers.

With option one, you get a piece of software that was designed to support many customers right from the get-go.

I meant 30k as in file size, not lines of code. :D

Proper planning and coding prevents the above from ever occurring. If someone wants a blog then I use the same code that I've been using for quite a while now. The functionality of the code doesn't change from site to site other than small tweaks like adjusting the pagination max length.

All presentation adjustment is handled with css unless they happen to want something funky outputted within the blog in which case I make the adjustment in their code only.

At the same time it's flexible enough to handle things like "do this if the blog supports tags, otherwise skip it", or "just skip using comments because the client doesn't want user comments" without touching the code base in such a way that it branches off into its own slightly modified version. The same can be said if they have only 1 content publisher or many content publishers.

I don't even think about using my own code until I tested the crap out of it so bugs usually aren't an issue in sites I develop. There will be presentation bugs that I actively tackle as the project progresses but functionality wise it's solid. If something does come up then I fix it, and if another client is using the same code then I'll fix it there too. Just like if Wordpress had a bug you would need to upgrade/fix every single client who is affected by the bug.
 
Last edited:
I think our difference in opinion is you think writing your own code to be flexible means it must be like a typical CMS. Most CMS solutions aren't geared towards actual web programmers. They are geared towards the "do it yourself" person who likely knows very little about the field he's getting involved in.

I am an actual web programmer, and I feel that both Wordpress and Joomla! are tailored for me due to their extensive API's for adding in my own features. They also work great for people with limited knowledge of web programming.

The modern CMS's are an excellent tool for a web developer to use when creating websites for a broad array of clients. It is the reason a lot of freelancers and smallish shops use them these days.

RE the OP, my opinion is not that there is anything wrong with maintaining your own code base to create websites. My opinion is that in most cases it makes much more sense to use a modern CMS if content publishing/editing is at all part of the project.
 
Thanks for the tips on both sides, I will probably end up coding my own, I just wanted to make sure it was not a totally insane idea. I'm actually more of a coder then a designer, but I do both. A long time ago I actually started coding a forum system but I got busy and never got a chance to release it. I will probably revive it at some point too, and make my CMS able to integrate with it.

First thing I'll use it for is redo my sites as they are long overdue. Some of the code I wrote 5+ years ago might be due for updating. :D
 
Last edited:
It really comes down to the type of work you do - if you're going to do a lot of generic sites, an OTS CMS (Drupal, Joomla...) can save you a lot of work, once you learn how to do what you want with it. If you're going to be doing more custom things, you're better off with a more low-level CMS (Django, Rails). If you're going to be doing a large, complex project with a lot of custom logic, coding something 100% from scratch is the only way to go. It really depends on what you need to do.
 
I originally started out html sites and then upgraded to php includes. This help to speed up the process some, but I found it wasn't flexible enough in some regards. I had some clients wanting a editing interface instead of having me handle their updates.

I considered options such as Joomla, Drupal, Wordpress, and some other systems, but found they failed to provide the level of customization I needed and then the though of custom templates...

The though of dealing with the template complexities of the different systems turned me off on the idea of using one of the mainline cms systems and had me considering going the custom CMS route. The idea of total control is nice, but there are drawbacks as others have noted.

- Development time
- Supporting Installs
- Testing (different servers, browsers, etc)
- etc...

I ended up finding MODx CMS which has given me a lot of room to play. The template is 95% normal HTML and 5% MODx tags which work really well. It's hard to argue with using my own code as everything works and validates :)

Worth a try if your looking for an amazing CMS :)
 
Hmm I'll play around with that and see how it goes. I'm leaning towards my original idea of coding a very basic CMS/set of functions but I'll see what that and maybe other CMSes have to offer first.
 
Back
Top