I am sure this has been asked before but prior to writing, I searched for threads specifically for this and didn’t find one. So here goes:
My question is what is better and the norm for web design, using CMS or hand coding when you are a freelancer/design firm?
My personal choice is hand coding, but is the industry pointing in another direction? My girlfriend is involved in a business development program and she had a web designer come in, who favors the use of CMS’s over handcoding, who told her and the rest of the people in the program to avoid designers who hand code. Perhaps it was a business move, convince everyone in the program to use a designer like him rather than the other guys? My opinion is that a CMS website, is for a certain type of client. It’s for some one who wants total control over their website and once the designer has set it up, is removed from the equation.
I thought I would ask the collective because I am feeling unsure. I want to provide the best service, and I am not opposed to implementing a CMS if a client desires it, but to me, a better product would be hand coded and more authentic feeling.
A well known and widely used CMS will almost always be the better choice over hand coding.
With a well known and widely used CMS, any feature you or the client could want, now or in the future, has probably already been written, either built-in or as a plug-in. It would mean that if you or the client needed to bring on someone new, then you can hire someone who already knows the system inside and out. And with probably millions of other sites using the same CMS, it would mean there are lots of people to find and fix bugs, so code maintenance wouldn’t all fall on your shoulders.
If you think a CMS isn’t a good fit for a particular job, then you’ll want to look into frameworks.
If you’re super stoked about your own code, then you could always release it to the public as open source. Perhaps people will like it and start using it. And down the road, after it’s proven itself, been refined, and accumulated a community, then you can consider using it.
Well I see your point, having a wealth of resources and community to back up them is quite a powerful tool, but then what is the point of learning multiple languages just so you can download a few plugins and slightly modify a theme provided from one of these CMS’, and then presenting it to a client as a finished product? I know this may sound a bit insulting and there is more work there than just altering a few things here and there.
Don’t get me wrong, I do see the ease of implementing and catalogs of themes and plugins an advantage in speed and quality to a point. And streamlining workflow with these products do help, but why would someone decide to learn many programming languages rather than learning the CMS’ available and open up a design firm?
Sometimes that is what a job calls for. Clients don’t exist to help you learn. When someone is paying you for work decisions should be made in the best interest of a client not your own self agenda.
Having said that for last few years I have worked on several Drupal sites. No project I have ever worked on is simply a matter of installing software. There is always some form of customization and/or continuous development associated.
There are Drupal projects in the tens of thousands of dollar range as I’m sure there are projects in that range that use another open source CMS. On the flip side there are probably projects in the low thousands using the same open source software. So sure those low budget projects do exist but they aren’t mutually exclusive with using a open source CMS.
In this day and age using a mature open source CMS provides significant value in terms of community support, maintainability, and features in comparison to any on-off solutions with a similar budget.
Eventually everyone wants some of form of control over their site. Offering it from the get go is smart if the budget and talent allows. In the long run it is more cost efficient to do in the beginning considering converting a straight HTML static site to a dynamic one is pretty much a complete redevelopment job anyway.
At the same time there are also those clients with large budgets with very particular needs. In those cases it is probably best to development things from the ground up considering it can be quite challenging to nearly impossible to change some attributes of open source CMS’s such as workflow. Though I would argue that regardless of language you should be using some type of framework in those circumstances like .NET, Rails, Node, Symfony, Spring, etc not reinventing the wheel for low level functionality aka: building your own one off framework. In terms of learning you will learn far more digging through code that has touched several hundred if not thousands of peoples hands than you will only your own.
I think that is an exercise in futility with all the software available today. I have no problem with people creating things like that on their free time but for a paying client there is certainly something that already exists out there by which to build on. I think developers who fail to realize that are just plain stubborn doing more harm that good. Think about it from a clients perspective for a second. If the developer(s) get hit by a bus the learning curve is always more steeper for custom software than community driven software. Not to mention client(s) can provide more granular job opening descriptions. However, if the project is some custom one-off for no reason other than a stubborn developer the learning curve for the next developer is going to be much higher. Especially if the project lacks documentation. More times than not the project ALWAYS lacks documentation. At least with community driven, open source software there is some place to start most of times in terms of documentation. Developers who go off creating their own custom frameworks and what not put a bad taste in my mouth. I get that without them we wouldn’t have new software but with so much stuff that already exists and is free it is difficult for me to agree with such practices.
A CMS is very useful even for a developer maintaining his/her own or client’s site. It allows you quickly to do what would be quite tiresome and long winded with hand coding. And as mentioned, it is incredibly useful to understand the language the CMS is written in, because you will almost always want to tweak things in small or major ways—up to developing add-ons for specific functionality etc.
As an analogy, it’s not a waste of time learning about auto engineering if you are just going to go out and buy a car anyway. That knowledge is powerful and will allow you to fix the car and maybe improve it in many ways (theoretically). Just because you know how the car works isn’t an argument for building your own cars from scratch every time. It’s just not efficient.
I really was unsure whether or not the majority or all of the community was doing this or not. If everyone is using one CMS or another, is it ever appropriate to write/code a website from the ground up?
With the CMS I use all templates are hand coded and built from the ground up (essentailly starting from a blank slate). This keeps code a clean and efficient as possible while having the benefit of client content editing abilities.