Lately I've been trying to learn ASP.NET. I've gone through the tutorials on the ASP.NET website, but for the most part I'm a complete beginner. I've also been working on creating a personal website, which I've opted to use the CMS Umbraco because it is based on ASP.NET.
Now my questions is not really specific to ASP or Umbraco. It could apply to PHP and Drupal or any other website framework and CMS. I'd like to know when and why a website should be created using an existing CMS technology (Umbraco, Drupal etc..), and when a website should be created from "scratch" using a base web application framework like ASP.NET, PHP, JSP etc..
It depends heavily on the CMS's (module/theme) API, for instance, one Drupal modularity in my opinion is its greatest strength, although learning Drupal itself is not to be taken lightly either. I've seen a lot of commercial sites done in Drupal, most of them look successful, but it made me think what was the total cost of creating the modules, customizing it, etc.
Since you mention you are a newbie in this stuff, do take in account all the stuff to take care of when you are creating a website from the scracth:
- Security (XSS prevention, sql injection, blah blah)
- Authentication
- A flexible theme system (unless you mix html with code... good luck, although there are some really nice template system available for PHP 5)
- Database Layer (just use an ORM)
- Learning JavaScript, then learn jQuery, MooTools, etc.
- Administration panel
- Adding stuff like content management
But most importantly, plan something before doing it. Starting out just because you feel like without planning what you want and how will you implement it creates uncertainty, just too many doubts...
So start with a CMS, even for a personal site. There are solutions like Joomla! Drupal, SimpleCMS, some django CMS are also out there. Learn the language of the CMS and start creating your own module as you see fit. Always read their documentation, search in forums before asking, or search here in stackoverflow. Really.. just ask here.. better than googling for a solution :P
You should use a CMS because it's simpler. There are a lot of 'boilerplate' code that you don't need to rewrite. Some CMSes might also contain useful code like user authentication built in. You won't have to roll it your own way, saving time and if you aren't a good programmer, it might also be more secure. Not only that, using a popular CMS means you'll also have a bunch of modules that you can just plug in and use. You can now focus more on the design than the programming in less time.
When should you not use a CMS? If a CMS doesn't provide anything you need or it doesn't allow you to do what you envisioned.
First of all it depends on whether you intend to build a real-world professional website for commercial purpose. If you do, I have to tell you it takes at least 2 years full time self-study to be able to write a web site like that. Web development is not as simple as it's made out to be (Some ppl say you could manage ASP.Net in 3 months-that's due to ignorance). Not only that, it is extremely logically challenging.
So if you only intend to write one professional web site, the best choice would be to pay someone to do it. You only learn ASP.Net when you intend have have a career.
CMS website would be enough for personal website, but maybe not professional enough for "tasteful" commercial websites. Its looks and functions all look the same, maybe good enough for local appliance repairs shop, but not good enough if you want to show your business have "taste", which also implies money
The most important feature of the CMS is its simplicity and the management of data.This is why my big sites like stanford, whitehouse etc have their sites on CMS.Managing the data is not an easy task as it seems.
For me at least it would be better to at least try to create something from scratch I know that they're plenty CMS out there that make things easier but, again ... for me the best way of learning is doing things your self and discover and solve real issues rather than just read about them. if its something for you own and you can afford the developing, troubleshooting testing.. blah blah... do it your self, if its something for a client and you you have a due date I would rather use a CMS or if you want something between a framework such Cake PHP or Codeigniter.