| Alvin's profileRunning Water Stays Clea...PhotosBlogLists | Help |
|
|
June 09 Stupidity and SimplicityI made a very stupid mistake yesterday. I went through the whole process I was in, finding that each step went on well without error, but it ended up with a stupid solution... Sounds strange. I was responsible to schedule an interview loop between 5 interviewers A, B, C, D, E and 6 candidates C1, C2... C6. Here, I blurred their names because this has nothing to do with my foolishness. Interviewer A, B, C are invited guests and D, E are both local experts. Each candidate will meet two of the guest interviewers and two local experts, so there are 4 rounds for each of them. For the two guest interviewers, they need to meet 4 candidates each, while the local experts are to meet all 6 candidates. Conditions cleared. Basically, I think this is easy, because the number of both interviewer groups (A, B, C together as the guest group (3) and D, E together as the local group(2)) can divide the number of candidates (6). So I easily break the 6 candidates into 2 groups, and scheduled them cyclically as follows: | R1 | R2 | R3 | R4 | R5 | R6 | But there's a big problem in this solution, as we can see in the table, unlucky C3 will have to wait for the whole hour doing nothing between R2 and R5. Certainly this is unfair to C3. Of course we know that waiting is inevitable as there are less interviewers in local group (D,E) than in guest group (A,B,C), so at least one candidate will have to wait. But still, 1 hour is a bit too long. So I changed the schedule a little. | R1 | R2 | R3 | R4 | R5 | R6 | Now there are more people waiting between rounds, and there's still one (C4) who has to wait 2 rounds (R2 and R5 separately) summing up to 1 hour. In some way, this solution is worse, but I like it because I believe C4 will be happier than C3 in solution 1 when he/she see more people waiting with him/her. Things are going on very well, until I was told there'll be one candidate absent. Immediately, I got to the point that we can go back to the first solution, and assign the absent one as C3. By doing so, no one need to wait between rounds. All candidates get consecutive rounds to take the interview. This is good, and fair. | R1 | R2 | R3 | R4 | R5 | R6 | Then I think, why should we keep C6 that late, just because we want the candidate to meet both D and E? Why don't we have one of the guest interviewers to help meet C6 in the free slot, so that we can release C6 earlier? So I looked back into the time sheet, and find that A can help meet C6 if we move C1 and C2 a bit. Yes, I have only 5 rounds now. The solution resulted in a exception that C6 will meet all 3 guest interviewers and only 1 local one. | R1 | R2 | R3 | R4 | R5 | Now comes the question: can I fit the R5 of C6 into the time matrix? I know it's stupid to have Interviewer C and Candidate C6 do nothing at R1, just because they are scheduled to meet at R3 again. I think and think and think, there seemed to be no good solution. So I locked it down and sent the email out. I even explained to the interviewer C why we will have a blank for R1, bla bla bla bla. Then, at the very moment, I woke up to realize how stupid I had been. There're 5 interviewers and exactly 5 candidates. If I simply schedule them cyclically, then everything is ok, just that there will be 2 candidates that will meet 3 guest interviewers. This is no different from the last solution, just one more exception. But after the long journey from solution 1, I was just stuck, and deprived of all the smart ideas. Here's the final solution, see how simple it is? | R1 | R2 | R3 | R4 | June 03 Meeting Martin FowlerI have read quite a lot of books by Martin Fowler, Analysis Patterns, Refactoring, Patterns of Enterprise Architecture... and once I even took his little book UML Distilled e2 everywhere with me. (but I never got enough time to finish this one, what a pity!) So it's a great experience sitting right before the master, listening to his talk about the past and future of Patterns. The master started with a typical statement, "I am not sure if it's OK for me to speak English..." and I was quick enough to respond, "Can you speak anything other than English?" He said no and looked at me. All people around looked at me. It made me feel silly. I must think twice before speaking... eh... next time. Martin spent some time explaining why he didn't have slides with his presentation. Then he gave a big review on the start-up of Software Patterns and Extreme Programming. To me, there weren't many new ideas as I had read most of them earlier. But after all, it's coming from the mouth of the master, right? That's different. Martin covered some key suggestions: To take the pattern books as dictionaries and never read them from cover to cover, to see whether the pattern fits in the case before trying it, and remember to optimize the pattern code by adapting it to specific circumstances. At the end of the talk, he advertised his website at http://www.martinfowler.com. One note to add: Martin looks exactly the same as he appeared in the photos, but he never showed his passionate body languages in them. Good to see him at Millenium, Beijing. |
|
|