Yep, he nailed the process right on for large corporations. For small corporations, the process is slightly different:
1) We submit a requisition to the management team for an additional worker, and have it rejected because funds aren't in the budget for a new hire.
Three months go by...
2) Management screams that their projects are 2 months behind schedule. We remind management that we're understaffed, and that we requested an additional hire three months ago. Management reluctantly approves hiring an additional person.
3) We submit a job description to HR, which then goes to Dice and a few outsourced recruiting firms.
4) We then start getting job applications from Dice and the recruiters. Most of the applicants aren't remotely qualified for the jobs. (i.e. System Administrators with no database experience looking for DBA jobs, or junior level programmers looking to fill a development team lead position). The recruiters also send us a few dozen candidates, many of which aren't even remotely qualified for the position. For an example, if we asked for an Oracle DBA, they would send us every resume they had on file that had the word Oracle on it.
5) The technical people (like myself) weed out the worthless candidates, since the HR department isn't technical and doesn't understand what is on these resumes. This takes awhile, since the technical team is already overworked. Remember, the manager was complaining that the project is two months behind schedule, and that was a few weeks ago!
6) The technical team ends up wasting a lot of time explaining our requirements over and over again to the recruiting firms that send us these lousy candidates, only to get another batch of resumes that have little in common with the job requirements.
7) The technical team starts doing phone screenings, and finds that many of the candidates lied on their resumes. See my prior rant about people with UNIX on their resume not knowing how VI works, or people who say that they're experts in SQL and not knowing how to do a multi-table JOIN.
8) We then bring in people for an interview. The HR department starts by giving them a standardized math and English skills test that only a moron would fail. Amazingly, 25% of the applicants that somehow made it past the phone screen fail it.
9) The technical team finally gets a chance to interview the candidates. At this point, they probably have a good chance of getting the job unless they say something stupid (like excessively whining about their prior employer) or fail to answer some basic technical questions. Quite a few of the candidates succeed at doing just that.
10) Our management team then interviews the candidate that make it past the technical team. The rest of the team hopes that our managers don't scare the candidate off when they explain our crazy development schedules and meager benefit packages.
11) If the person did well in the interview, HR sends them an offer. Unfortunately, that low-ball offer will probably be 20% less than the average salary for that position. Some candidates will counter offer, but some won't even bother replying. If the person accepts an offer, it's safe to assume that they're getting paid below the industry average, and that they were desperate just to get a job.
12) The new person starts, and we start training them on our products. It takes about three months for them to become productive. By six months, half of the new hires have already left for larger companies with higher salaries and better benefits. Back to step 1.