I don't know that I have ever used contract for hire in the definition of California, but it is the preferred way to do. If I have an opening for direct hire I get to read some resumes, check your references, have an interview and hope that tells me how well you will write code. Of course how well somebody interviews tells me nothing about how they code, and references are chosen and coached so they are not reliable.
The alternative is hire somebody for a few weeks of contract, and if they are good give them an offer. Note that I specified two weeks. One of my past bosses said he knew faster than the new guys co-workers: when he asked the rest of the team how the new guy was doing, if the guy was good on the 3rd day you could see the mental shift as the team realized the guy hadn't been on the team for years (even though he was asking the teammate who had come to ask when the new guy's computer would arrive). If the guy wasn't good there would be several weeks of he is "getting up to speed".
The alternative is hire somebody for a few weeks of contract, and if they are good give them an offer. Note that I specified two weeks. One of my past bosses said he knew faster than the new guys co-workers: when he asked the rest of the team how the new guy was doing, if the guy was good on the 3rd day you could see the mental shift as the team realized the guy hadn't been on the team for years (even though he was asking the teammate who had come to ask when the new guy's computer would arrive). If the guy wasn't good there would be several weeks of he is "getting up to speed".