I like to do about everything myself on my homes. That way I can ensure the job is done right and to my satisfaction. But some things just take too long for one or even two people, and some things take acquired skill to get fast at, etc. The two things I like to sub contract are roofing and drywall work. Roofing is outright dangerous if you would fall, and drywall is just annoying filling in all the imperfections and getting it hung without gaps and other issues these 100+ year old houses have.
When you add it all up, holding costs, heat and electric bills during the renovation, taxes, and your own salary, it would take one person months to tear off and roof a whole house and drywall many rooms, etc. Those months can bury you in static expenses so its smart to hire them so you finish the house sooner. Plus there is the dreaded burn out of working on a house for too long, so its nice to get a house done faster by hiring extra help for the things you don't want to do. So slowly I'm finding good contractors who have good prices and this has been a godsend.
I've hired some horrible contractors in the past. One guy who did drywall work I had to pencil all the errors in his work where there was slopped mud that wasn't even scraped off, let alone sanded on the walls yet. Pits and pinholes, rough edges of drywall that was applied sloppy. It took about 3 or 4 days of pointing out flaws in each room. Each day he'd come back, sand and put more drywall mud on, and each day I'd mark more and more problems. I ended up paying the guy and doing it myself and it still wasn't as good as it should have been because I really didn't have the time to redo it properly. And I wasted hours and hours of my own time trying to show him all the problems.
So what I've learned from all this is:
1.) Ask for references so you can view their work. Not just call this person and ask them, but show me a site you did so I can see your work first hand.
2.) Never give them advances on any unfinished work. There is nothing wrong with milestones where they get paid when the milestones are completed if its a big job, but advancing money is always a bad idea.
3.) If they can start right away, they are fired. If they are desperate to start immediately, then that is also a red flag. Good contractors are busy and will set a date and be worth waiting for. Now this isn't always true, but if some guy comes knocking on your door wanting to do work and is available right away send him packing.
4.) Never give someone an advance for materials. This jerk told me he had a good deal on some shingles for my garage. They just happened to be the right color that was on the house, and just happened to be just enough. I was busy and didn't want to ride with some guy in his beat up vehicle to get parts and he had done some work for me and there was much more he could have got, so I give him money for the parts and he vanished. I had a weird feeling about it too, TRUST YOUR INSTINCTS, NOT SHITBAG CONTRACTORS!
5.) Get several estimates and then sit back and wait. They will call you back and lower their price. Or use one guy against the other. Beware though, this tactic could piss off a good contractor and then they won't work for you any more. So I only use this one against the scabs who I don't care if they never work for me again.
6.) Treat your golden contractors like gold. Ok there's guys out there who do awesome work for very reasonable prices, and they are fast. Treat these guys like gold. Pay them the minute they are done in full, and hell, throw them a bonus for doing a great job. Buy them a case of their favorite beer or whatever. Offer them stuff when they are working. Treat them right so they will be eager to work for you in the future. Recommend them to other people.
7.) Get a written description of the work they are going to do with itemized prices. This will help avoid any discrepancies and if you have to fire them or cancel the job mid way for any reason (cash flow shortage, bad workmanship, they stop working, etc, you can pay them for exactly what you owe them and nobody is arguing.
8.) Learn to do it yourself. This is essential so you can tell them exactly how you want it done, and be savvy on workmanship, methods, etc. If they quit midway through, you can finish it yourself and not have any problems. Plus if they know you can do it, they won't be screwing you around and making up things. Now if its pouring concrete or digging holes, I suspect you won't want to do this yourself, but its good to learn as much as you can and do most of the jobs yourself. If you don't want to get expertise in one area, at least know the basics involved, terms, etc and get educated about it.
9.) Negotiate. If you think a price is high, try negotiating. Or get them to itemize the estimate so you can do some of the work yourself, or hire some temp worker. Like I got an estimate for my garage, and they wanted 500 to tear the shingles off, and 500 to resheet and reshingle it. My daughter and I tore the shingles off in 3 hours. That saved us over $400 dollars by doing that one task ourselves.
10.) Buy the materials yourself. Often these guys just throw a price out there and you never know what quality of materials you might get, or they will inflate the price of the materials. So go buy everything yourself (at least once in a while) so you know what the costs are. Sometimes you can get a better price from a contractor on materials, like if they have left over supplies from another job, but generally you can do better buying your own materials and just have them bid on the labor. Then when you compare contractors prices you are comparing apples to apples.