Part of a series.
In additional grief, a couple adds a 10'x10' addition onto their kitchen, which includes a door to outside with a small deck and stairs down to ground level.
You have the client specifying in detail we would like the switches here, we would like certain things this way, and of course you have the contractor going not a problem, not a problem. But I'm told each and every day they came home it was done differently than they had talked about.
Communication's number one here. There was no proper communication. It did not happen the way the contractor said it would happen. Make sure your contractor complies with what you ask for. If he doesn't, stop the job.
The biggest step here, and one that I'm having to work on, is put things in writing. A vague "yeah, yeah" in a phone call or an in-person chat is easily and quickly forgotten, but if you take notes and fire off an email summary after the discussion it serves as a permanent record. As long as it's available to both parties, it can then be used during development and afterward to confirm that features are being done as requested.
If you can get away with it, make it very clear up front that you'll be using Software X (be it Trac, Mingle, or otherwise) as the be-all-end-all of development plan, and nothing gets done unless it's in there. Then just make sure you populate the system after any discussions.
This was underpriced in the beginning, as soon as I was told the price of 26,000 for the addition plus the kitchen I knew right off the bat that it was definitely too cheap, so they had to cut corners.
Well, obviously they thought they did a great job, they actually charged I think it was about $10,000 more than the original price for all the little extras they got them on…. This job was actually too cheap to start with.
Price is an often-taboo point of discussion, and it's easy for either side to feel that they're not getting an appropriate price for the work performed. The best thing I can suggest on this front is many small milestones. From a contractor's perspective, I want to go no more than two weeks without being paid, but it's hard for the client to justify that unless they have working software available to them.
This is something that I think the Agile crowd picked up on right - perform work in small iterations, with a focus being on working software. Avoid incremental development (first Users, then Profiles, then Friends) and instead iteratively improve on the functional base (first basic login information with a friendship association, then add more user information, then add user profiles, then add friendship information to the profiles). As you reach milestones in the development, the client releases funds.
If you're doing a long-term project with weekly billing, rather than a fixed-scope project and milestone billing, it's the client's responsibility to make sure that each week they're seeing useful, functional improvements to the software. In either case, if at any time the client isn't happy with the work, it's their responsibility to stop development as soon as possible.
This is guys that think they know what they're doing [when they don't], and it shows.
As you can see, as we're pulling it down we're finding problem after problem. What we have to do, to put this back together, to make it right, is not a simple project.
I just want to tear this down, and do it again.
Being brought in on a contract to extend a project, or even finish one up, very often this last thought is the feeling that resonates. But as long as the foundation is solid, a total rewrite is usually wasted effort. Better to run through with a fine-toothed comb and identify problem points, and limit the wholesale rework to just those areas.
No outside contractors came in, they done the electrical, they done the plumbing, they done everything.
Not everybody can do everything. You've heard the saying, jack of all trades, master of none.
We brought in quite a few professionals on this job. You're gonna hire a contractor, I think you really want to make sure he's gonna bring in the right people. Licensed carpenter, licensed electrician, that's what I want to see on my place - qualified people.
We are as good as the people around us. This is a big lesson learned here, make sure they bring in the right people.
Web development is funny in that sometimes you get individual contractors claiming to be able to handle everything from the back-end database design to coming up with a front-end look and feel for a site, and then behind the scenes go to other people to cover the areas they're not as strong in. It's done to save face, as though there's an admission of inadequacy when someone admits they're a great coder but have no sense of visual style whatsoever.
I much rather dealing with clients who at the beginning ask if we have a designer we can go to, or if they should look for someone else to cover that aspect of the job. It's a perspective that shows that they appreciate finding experts in our individual fields to provide them with the best quality work we can.