I follow the "learn as you go" principle rather than the traditional way "know before hand". This way there is a place to make ammendments to what you want in between the process.
For Instance
While creating a website - first things taken into consideration
- drupal CMS for web development
- obviously, link name (subjected to constant revision) for the content to be included
- preparing content for each page
- design/layout images (subjected to constant revision)
1st review - 1st revision
- deciding on the image - used gimp
- including blog in the content section
- creating a launch page - first page of the site
- deciding on the theme for better control over the page - acqua marina(for me, based on intuition I may be wrong but I ll manage)
2nd review - 2nd revision
- lets have a wysiwyg editor - opted for fckeditor
- playing with view to get the desired page/node
- creating image/favicon and integrating with the drupal
3rd review - 3rd revision
- Have single user multiple blog support - based on taxonomy
- Adding images/video/audiowith flash player of your choice
- Get hold of admin_menu
- used graffiti for the header
- Try out dynamic persistant menu
4th review - 4th revision
- use cck to create a content type
- create a non-commentable blog/qjournal
- create a region in the aqua harbour theme
- advanced help module ... installed
5th review - 5th revision
- Change the theme to basic.. for better ctrl since its divided into only 4 regions and my consistent look works well with it.
- make use of blog client
- pathauto for alias
- wiki
- image/video gallary
- tagadelic for tag clouds (or) drupal block with 3d tag cloud
- smiley for drupal comment page
- hierarchical order of displaying terms in the URL
6th review - 6th revision
- Added date, calender and email type for creating the content type
- Include contact form
- added emfield so that the images as well as videos can be imported from the 3rd party sites hence conserving space.