It felt better, because the interview was more like a typical work like situation. In work too, we are assigned tasks, and we update the progress.
Maybe its a bit idealistic, but then we all like to dream about utopia, don't we :)
Here's a process that might work, that I actually would participate in:
1. ~20 minute recruiter chat to establish basic levels of fit/compatibility.
2. ~45-60 minute phone screen.
3. Onsite consisting of 1 hour behavioral/cultural interview, and 3-4 hour programming task, preferably based on a real problem or task that arose in the company's code base, suitably extracted, simplified, and scrubbed of proprietary information. Internet resources are allowed, as is asking any questions of the interviewer, without penalty.
You could bring me in at 11 AM, do the behavioral interview, take me to lunch, then have the afternoon to do the programming task, and have me out by 4.
"3-4 hour programming task, preferably based on a real problem or task that arose in the company's code base, suitably extracted, simplified, and scrubbed of proprietary information. Internet resources are allowed, as is asking any questions of the interviewer, without penalty."
Presumably there are some people who are willing to do a trial, either concurrent with their existing employment, or on the chance that they will be hired after the trial.
In any case, this is not the only method or approach that is the better alternative :) Maybe it will work for some and not for others. But evaluating alternatives is a good exercise. Currently we are stuck with this method because we do not have a better solution to the hiring problem.