Moved to a more appropriate forum
1. This depends greatly on the project, the platform, and the coders. Often an easy way to allow for collaboration is SVN.
2. You can only ensure this with quality programmers and with a PLAN. It is most important to plan for growth, not to assume its designed to accept it. For example, if you are 90% sure you will be needing feature XYZ, then plan that into your database structure.
3. It goes both ways for me as a freelancer. I do some by the hour and some by the project. Generally if I control the whole aspect of the programming myself I do it by the project, if I am working with others or collaborating I do it by the hour. It depends on how the project is structured though.
jeremy - gnomeontherun
Educated questions often get educated answers, and simple questions often get simple answers.