Friday, January 29, 2010

Done with MS interview and Finger crossed!

OMG~~~What a LONG day!

I just finished my whole day interview in Microsoft campus and am currenting this post in their recruiting building's lobby.... I'm feeling exhausted now....I have never had such a intensive day before...

As my recruiter left early for his wife today, I don't really get a chance to recap my interviews with him today. So I guess I will do my recap here by myself :P

Hm... Overall, I think I did well. The first two interviews were especially good. I was able to solve the problem in time and show my coding ability. I had good discussion with the interviewers as well.
However, later of the day, after lunch, I got tired... after 3 - 4 hours talking and thinking... So I felt my energy level went down. So for the following two interview questions, I screwed up a little bit. I was trying to solve the problem really quick and start writing the code once I had some idea of how to do things, which was totally a mistake :(

Near the end, I was taken to the last interviewer. She was the very very nice. After solving another coding problem, we started to chat. She told me that the hiring standard for fulltime and intern is different. She also said, I should have applied for an intern if I'm not going to graduate in the august. She also mentioned another chinese girl working in her team was in the selection boundary, but now she is very good worker. I think what she meant is I'm in the edge of being hired or not hired as well, and if I was applying for intern, it would be much easier for her to say "hire"...

Well...now, I'm done with the interview, and all I can do is to enjoy the rest of the trip in Seattle and finger-crossing for myself...

O, also, tons of homework to catch up once I get back to Vancouver, including the final paper for assignment1 of CMPT376 :(

Monday, January 25, 2010

Bad design of scanner (My ENSC304 Assignment1)

1. The Problem

There was a time when I volunteered in a conference and my job was to use a little scanner to scan the bar code of the attendees’ tags. The scanner is a very small device, approximately 3cm*5cm. The interface of the scanner is very simple: the front side has a light indicator and one big blue button, and the back side has one small button with the same blue color.

When I first received the scanner, I figured out very quickly that to scan the bar code I need to hold the big button while the laser light going through the bar and also that the light indicator would flash if it succeeds. However, the problem comes with the small button on the back.

As no label on the back, without instruction I had no idea what this button is for. Later I was told that the small button is for deleting data. If that button is pressed, all the previous scanned data will be deleted. Fortunately, I didn’t press that button before I learned about its functionality. But if I did, all the data that the previous volunteer scanned would be completely lost and could not be retrieved.

Besides, there is no indication when the delete button is pressed. So in case I accidently pressed the button, I wouldn’t know. I was very cautious to make sure I didn’t touch the button while using the scanner, which of course affected my working efficiency. Due to the small size of the device, it was very hard to my fingers away from the delete button.

The scanner gives me hard time to execute my task, which can be considered as Huge Gulf of Execution. User needs to pay extra attention to the back button while working on the device. Without any label or instruction on the device, it is likely for a new user to press that button without knowing the consequence of loosing all the previous data. If user accidently presses the deleting button without knowing the functionality of that button, all the recorded data will be deleted which is actually not what user wants. Even worse, the effect of mistake is not reversible and the loss can be irreparable. On the other hand, the scanner didn’t provide enough feedback for me to interpret its state, i.e. user has no idea whether the deletion of data has been executed or not. This can be considered as a Huge Gulf of Evaluation. Above all, the scanner causes difficulties for users to execute the tasks, and evaluate the result of their actions.

2. Design Principles

The scanner violated the following principles:

a. Make It Visible

The delete button has no label beside and placed at the back with a small size. Without instruction, user will be struggling to figure out its functionality, or user won’t know the scanner has the function to delete the previous scanned data by pressing a button.

b. Provide Feedback

The scanner fails to provide any feedback for pressing the delete button.

c. Make Error Effect Reversible

The scanner has almost irreparable error effect. If the delete button is pressed accidently before backup, the data can never be retrieved.

3. Solutions

To solve the problems I observed, I have the following suggestions to modify the design.

1. A label should be added on the back side, clearly indicating that the button on the back is for deleting all the data.

2. It should use sound or light to provide sufficient feedback for the delete operation. For example, when that button is pressed and the data is deleted, the device can make a “bee” sound. The front indicator light can also flash with red color (the light flashes in green when the bar code is successfully scanned).

3. For such a small device with compact interface, it is not a good idea to have a screen to interact with user. In order to reduce the chance of mistake in operations, the deletion button should be made caved into the flat surface. This way, only when users intentionally press the button very hard, can the delete operation be executed.

Wednesday, January 20, 2010

Best Interview Experience Ever

I just finished the interview for the Extreme Blue Program. This is the best interview experience that I have ever had.
First, the interviewer follows the typical interview routing. After introducing himself, he asked to briefly tell him about me, followed by a series of behavioral questions. As I was preparing for my other job interviews recently, I was almost ready for all of his questions.
And then he started technical questions. Some of the questions were also kind of basic. Like,
- difference of C++ and Java. When will you choose one over the other?
- explain static keyword in C++
- What is deadlock?
...
He also asked a series questions about hash, and lots of complexity questions of different data structure.
Some of the questions are hard. ( Maybe just I don't know the answer!) He asked what is "vtable". I actually never heard of it before, but I asked him if I can "google" it. Lol... he said, "well, this is a phone interview..." So I cheated by searching online and came up the answer. He also asked me "what happened when you enter a URL in a browser and press enter..." I was supposed to talk about the very low level internet behavior here, like how packages are routed and stuff, which I actually had very little knowleage. So my answer was messy and not organized at all. I was just trying to tell him what I know or what I can guess as much as possible. But he was very nice that he kept giving me hint and guided me through.

The interviewer actually called five minutes earilier than the scheduled meeting time. We started at 10:55am, and didn't finished until 12:15am. More than one hour phone interview~
During the whole interview, he was talking in a very friendly and enthusiastic way. He kept encouraging me and commended my answer. I definitely felt that he was happy to talk with me and really learn more about what I know.

The best part is , in the end, when I asked about the following recruiting process, if I passed this round. He told me that he is going to tell them to hire me! This is the first time that the interviewer told the interview result right after the interview! I was so excited about that~

It was the longest interview I have ever had, also the best one ever. I felt really relaxed and just be myself. I believe he had a good understanding of my knowleadge scope as well. A win-win situation for both part. Well, look forward to the next round, which is also the last stage.

Good luck to myself!

Monday, January 18, 2010

Brainstorm for an interview question

Today, on my way to school. I was thinking about the interview quesitons that I was preparing for.

Where do you want to be in 2 to 5+ years? My answer to this question is:

As a new graduated student, I think I will start with a developer or tester position. And it will allow me to gain more experience and polish my skills. However, I would like to be in the role of project manager after 4 or 5 years of work. I like management work. What PM role attracts me is that you can work with smart ppl and collaborate among them and manage resources. As a manager of the team, you can allocate the workload and make use of the talent of people, and in the end accomplish something that is impossible for individual. This brings me a big sense of achievement. Most of my previous team work experience were very good. We had very firm group. We had good time working together and achieve the shared goal in the end....


O.. No.. I am trying to come up an answer for this typical interview question... But I don't think I'm doing a good job here >.<

Tuesday, January 12, 2010

Farewell google.cn ?! No~

It is like a bomb when the news comes out that Google may pull out of China after Gmail cyber attack.
http://news.bbc.co.uk/2/hi/business/8455712.stm
http://googleblog.blogspot.com/2010/01/new-approach-to-china.html
Everybody is talking about it in xiaonei.com, a chinese version of facebook in China, updating their status.
I'm shocked, and hope this won't happen.

I remember when I went back China during the winter break, I had no access to Youtube, facebook, my picasa photo album and ... It was so annoying and inconvenient... Now what? Even no access to gmail from China?! This is going to be insane.

I'm not into politics and I almost have zero insights to any censorship issues. But this reminds me what I learned from my middle school history textbook, which talked about the old time when china was in seclusion and was totally isolated from the outside of the world.
We have been trying to be open and to integrate into the whole world. And we have seen what we gained out of it. We opened our market, our economy. But yet, we are not going to open our mind?!

I will feel so sad if Google really withdrawed from China, because it means an essential channel towards the whole world is closed.

Saturday, January 9, 2010

New Semester, New Blog, New Post

I'm opening this blog for my CMPT376w course. We are asked to maintain a blog throughout this semester, writing in the blog at least twice per week. 
This is my first time maintaining English blog. I used to write something in Qzone, ( a personal space associated with an instant messenger ) and xiaonei (a chinese version of facebook... lol ) But I don't write on it regularly and that is in Chinese.
I like the idea of blog as a way to communicate with each other. You get to spread your ideas or say out what is on your mind in a written format, but in an informal way. I like blog as being more  causal and having more freedom in the way you express yourself.  Obviously, it is much easier to write a blog than a paper. :P
I'm not a fast writer. Especially that English is my second language. I need to look up online dictionary sometime. :( 
I hope it will be improved as the course goes on and as I write more and more in English.