All the “knee jerk” changes clients will try to make is precisely why I have set up a “system” of handling client requests.
First things first, and that is I talk it over with the client, and record the entire conversation so there can be nothing like “but I said” because I’ll have a recording of it. Then I write up what the client is wanting and include a flowchart or UML diagram of an overview of the functionality of the application. Once this is approved, I will give a quote for the “application” programming, and let them know if once we reach the “design” phase if they want a great deal of fancy design, it will increase the price a bit, and go over with them what things will affect the price. They don’t even get an initial quote until they have “agreed” to the contract with their signature on the line. That way, if they start making changes, I start adding quotes to each change.
I also wait until the application is complete according to how they originally approved it before they get a chance to see it and test it. This also prevents a lot of changes along the way. Initial customer testing is done in simple views where a “design” has not yet been applied. Once the functionality has been approved, the application is then “skinned” so to speak, where the design will be approved and applied.
Generally speaking, the browser testing comes into play at the point that the application is being skinned. Session handling and other “non-display issue” browser testing is done before the client approves the application itself. Browser display testing is done once the application has been “skinned.”
This generally works for me very well. Others, I am sure, will have other opinions on the same subject.
[rant]I’m not sure if this helps or hurts me ... as I’m expected to pretty much work in overdrive mode 24/7. [/rant]
Ok, you probably don’t expect a response to this part, as it wasn’t really part of your plea for help, however, this was a sore spot with me in the past, and I will address it. Take or leave anything I say for the rest of the post.
I had the same expectation for my first few clients. Since I am a freelancer, I now let the clients know up front what my time limitations are, and what they can expect certain tasks to take time-wise. Being up front with this will help the client be more patient than they would otherwise. If a client insists on my operating in 24/7 mode right away after explaining the time restraints, I generally will politely ask him to find another developer. If he decides half-way through the project that he needs me in 24/7 mode, then I will evaluation the reasons for his request, and tell him I must recieve approval from my “business partner” first. Then I make sure it is ok with my wife and family. If it is ok with my wife, then I proceed to give the client a quote for the 24/7 mode, which is approximately 3 times my normal rate, and explain to him that this is the extra cost for expediting an application.
Why do I do that? Because my life is good, and I have a priority that my family always comes first. I provide well enough for them. You can always earn more money, but you can’t ever get back time lost.
Ok, I know I ranted more than you did. Sorry about that, but I feel there is some good advice there as well.