If I were to create an application from scratch, there are certain things that I would absolutely make sure are accomplished:
- Cascading Style Sheets – by separating the visual layer of your application from the middle-tier and back-end, you need not do much more than change a few files to dynamically change the user interface of your web site. CSS Zen Garden illustrates the power of CSS fantastically. The HTML is the same throughout the site, but as you switch between themes, new style sheets are applied and the site is transformed. I would also highly recommend their book.
- Templating – Page templates are the ‘middle-tier' between your back-end and the front-end. This pulls the actual retrieval code out of the pages and simply has it referenced from a template. The advantage of templates are they assist in separating the wheat from the chaff. Back-end functionality won't break page functionality and vice-versa.
- Common application code – you should never have to write the same code twice within the application. If you do, you're writing your application wrong. When you need to make a change, you should only need to make that change in a single llocation.
- Database – store data in databases. Storing data in any other layer requires so much more work!
- XHTML compliance – as technologies like Content Management Systems, APIs, RSS, and other content integration tools become more prevalent, the transmission of content needs to be simple. XHTML standards are important because content is easily ‘transportable' to other sites, services, or locations.
- Cross-browser functionality – browsers treat HTML and CSS differently. There are plenty of hacks that ensure cross-browser functionality. You should always be supporting the top 3 browsers in the industry with the latest 3 releases of each. Beyond those, I wouldn't bother… it will be the death of the browser if they can't keep up with the big dogs.
- Cross-platform functionality – some functionality is not the same or offered between a PC, Mac, and Linux. If you do all the previous steps, you shouldn't run into trouble, but I would still test to be sure!
Trying to fix plumbing in a home that's already built is costly. Doing good ‘plumbing' up front will save you a lot of money in the long run!
I found a great resource called The Scrutinizer while reading another blog, called Random Bytes. Lastly, if you're looking to become an enterprise application with broad reach and scope, I would be cautious of employees that ignore or don't concern themselves with these items early on. Find folks that care! You're life will be much easier down the road.