views:

188

answers:

5

I'm biting the bullet and becoming a Web Designer, there are just too many good opportunities out there. I'm a professional SW engineer, so I want approach this correctly. So far I'm fairly good at HTML/CSS/Javascript all completely by hand. I'm also good with jQuery and Django with mySql. I've made some cool sites but it takes TOO LONG if I want to do this for many sites.

Here is my question: Do I learn a CMS really well and use it (and be stuck with it) or do I spend that time developing some reusable HTML/CSS templates and do everything by hand?

So far my CMS experience is that there is overhead setting it up, and it you want a lot of customization you're doing CSS anyway.

If I go the CMS route -- which one?

What is the "best method" for Web Dev? I intend on creating a very diverse array of sites as well...

Thanks!!!

+4  A: 

The future of web publishing is clearly in Content Management Systems for everything larger than a small personal site. People are not buying sites anymore for which they have to pay a professional every time a paragraph needs changing.

Make sure you know your HTML, CSS, and Javascript, but get familiar with one or more CMS's on the market, preferably one of the big ones that get you a big community, and the advantage of a widely known standard that it is easy to find people for. Learn how to customize it, how to build templates for it quickly and effectively.

One of the biggest flagships in enterprise-level CMS'es is certainly Drupal. From personal experience, I also know Joomla, but I'm not sure whether I'd recommend it to get started with - it tends to be a bit dirty on the code side sometimes. WordPress is successfully used as a CMS by many.

Look around on SO what systems people are happy with; if you want to get to know the concept of a certain CMS check out openSourceCMS who provide live demos of many CMS'es. There are also very robust commercial products out there that are better maintained than the open source projects.

Pekka
+1  A: 

There isn't a single correct answer for this IMHO. Basically, it comes down to:

Use the best tool for the job.

The best thing you can do for yourself is learn about what tools are available, and what they are capable of. Try to match each one to a scenario you think might be particularly suitable for a given solution.

You will find that if you invest a lot of time in learning something like Python / Django you will be able to create just about any site you can imagine, but then you might find that if all your client requires is a simple, mostly static company info site that something like Drupal might be more appropriate.

The baseline technologies like (X)HTML, JavaScript, CSS and SQL are used across all of them, so knowing these tools well in a generic context is also extremely valuable.

A truly well-equipped toolbelt is invaluable.

Wayne Koorts
Thanks. I do agree, but I find that each new tool that I explore sucks up a ton of time to initially get working. So far some of the CSS frameworks and jQuery plugins are manageable, but the CMSs I have tried take forever to get working and then more time to understand. I think I'm going to start with Drupal, so far I'm happy with what I'm seeing!
Art
@Art: I think a good way to manage that is to focus on the tools that are getting the most mind-space, like the Drupals and the Djangos and the Rails's. Good luck!
Wayne Koorts
drupal is easy to make work but hard to customize in early future.django is otherwise. harder to make work, easier in further usage.
Vasiliy Stavenko
A: 

If you are going to implement web sites for the general public, I'll go with Joomla. I managed to implement 9 websites in one year with this CMS. In my opinion, it is important to know PHP, HTML, CSS and Javascript pretty well before using Joomla (which you seem to know), or any other open source CMS for that matter. This way, you will be able to customize all aspects of the website (both frontend and backend) with ease. For example, when I don't find a plugin which does what I need, I just create the plugin myself.

However, if your aim is more on Web Applications rather than web sites, I'd go with ASP.NET and ExtJS, which seems to be today's trend for web applications since you will be combining the power of ASP.NET with the power of AJAX (ExtJs).

IMO, Phython is more targeted for very large and complex projects (look at google or amazon)

Chris
+1  A: 

If you need a little number of pages, without any dynamics, render your site with your favorite language and numerous templates to html files and don't deal with anything but www-server.

Once you need a rather big site - use a tool which you already know well. (I using django and happy with it).

When a site is really huge - make your own CMS. But at first have a practice with tool like django. Until you know how it works - try not to deal with big projects at all.

I can advice to use statically typed language for anything, but i'm sure that you know benefits and caveats.

Python and Django is suitable almost for anything.

Vasiliy Stavenko
A: 

Those two choices aren't mutually exclusive.

You should build reusable code regardless of which option you choose. With a CMS, there will already have some design decisions made for you of course, but I find myself building APIs and interfaces using Drupal all the time. In fact it's a measurement of quality.

There are also some frameworks that you might like too that will let you custom build and increase productivity. See The Zend PHP framework, Ruby on Rails, Kohana, Nanoc and the 960 CSS/HTML grid. You could say they are the best of both worlds!

Rimian