Dec 11, 2009

I can leave, finally

After the past 2 years of working, the most important thing I learned is humanity. I learned that when facing the lure from the dark side of Force, who can stand up with it and who cannot. It's good to see most people choose the light side. Nevertheless, the Jedi are still out-numbered by the Sith. In order to succeed, I have to find more Jedi, so now I am leaving to start my journey. Wish me good luck.

Dec 8, 2009

The true meaning of "Organizational Change"

In M, there will be at least one "Organizational Change" for each year.

When I was young, I thought a programmer is cool because they are very professional and can produce many cool stuff (like computer games). Therefore, I chose computer science as my major at university. I hoped I could become as professional as them and produce many cool stuff as they do. After several year, I left school and joined Mediatek to start my career as a programmer.

Then I disappointed.

The reason why I disappointed is not due to the fact that what I did in the company is a completely useless junk. The true reason is that nobody in this company cares what they did are completely junk or not. All they care are nothing but power and money. The politics, as a result, is the most influential factor to what they care. That's why people care about politics. They like to talk who is going to be promoted and who is going to be f**ked. They share political information and form a small political group to fight against each other. One who spends most time on politics gets promotion while the hardest worker gets fired. The company rewards who conslidate their power and punishes who improve the quality of products.

Somebody called it "a process to become mature". One must know the differences between idealization and reality. One must understand the human society is very competitive and cruel. The mature people should know the rules of the society and the necessary political skills to get what they want. The mature people should adapt themselves to the society and stop complaining about it.

I disagree.

We shall not adapt. We must understand that we are still in the stone age of software industry. There are currently no effective tools to estimate the contribution of a programmer. There are also no ways to estimate who is capable to become the leader of a software team. It's very likely to choose a incapable leader. The incapable leader, as a result, is going to fire the most productive worker in his team due to the lack of software managerial skill. He will also hire many incapable workers because these incapable workers are the most similiar to the best employee in the world--himself. Several years later, the company will be full of incapable workers. Since they are incapable, they don't do any software product nor do them improve it. So what do they do in the company? One possible answer is, unsurprisingly, "Organizational Change". Period.

Dec 7, 2009

Tips on how to write a thesis

The most useful part of the handbook of UBC CS department is "Tips on how to write a thesis" by Bob Woodham. I keep reading it again and again while thinking what I was doing when I was in graduate school. Sometimes I invented a new technique to solve a known problem. Sometimes I applied the exsiting techniques to another problem. Which one is the "good research"?

Bob Woodham's article makes me think this question again. He stated that the third step of a research project is to discover new knowledge. Even so, most of recent computer vision research lack in this step. A popular trend of computer vision research is to transform a problem into statistical domain and apply new statistical methods. They consist only step 1, 2 and 4. Are they "good research"?

Another trend of vision research is to follow classical works and do some "tweak". For example, a one possible way to do image inpainting is to choose a different "filling algorithm" of the classical work "Region filling and object removal by exemplar-based image inpainting" by A. Criminisi, P. P´erez and K. Toyama. Since the filling algorithms are different, it's quite possible that we can find another set of images which the new algorithm can perform better. This kind of research consists all four steps. Are they "good research"?

He also stated a researcher should commit to a research problem, not a technology. However, all computer vision people commit themself to use camera to solve problems. Is it a kind of commitment to a technology? One of the most noticeable problem is to estimate image depth. Everyone knows that Laser Depth Micrometer(LDM) can outperform the stereo-based approache to several magnitude, but there are still many people try to estimate depth by stereo cameras. I know cameras are much cheaper than LMD. Nevertheless, shouldn't we just put our effort on cut down the production cost of LDM instead of researching another cheap and unreliable technology?

In the beginning, I thought a graduate school can help me understand what research is. I end up with much more questions when leaving.

Here is a excerpt from Bob's article.

The purpose of research is to contribute to knowledge. Selecting a problem is the major part of any thesis project. Avoid the Computer Science tendency to think only in terms of tools and techniques (and mindless programming tasks). There are four steps to a research project. Step 1 is for motivation and is done first. The thesis addresses steps 2 and 3. Step 4 typically occurs only after the thesis is completed. The four steps are:

1. Identify the research problem. Understand the state-of-the-art within a topic area well enough to determine fundamental obstacles to further success. You have identified a research problem when you can make clear where necessary new knowledge is needed.
2. Choose the research domain. Choose a domain that is rich enough to demonstrate the intended result yet simple enough to avoid wasteful diversions. Pragmatic considerations best determine the choice of domain. This best choice often is not the domain of the original problem. The link is simply that the necessary new knowledge required is the same. Choose the domain that supports the most rapid prototyping and testing of your ideas.
3. Discover the new knowledge. This is where you add your talent and creativity!
4. Apply the new knowledge to the original research problem. This will complete the research and will provide a foundation for future research by helping to identify the next set of obstacles.

Here are more suggestions to avoid common pitfalls:
1. Decide on the research problem before committing yourself to a particular domain. Bad way: I like to play chess and I need a thesis topic. Maybe if I implement a chess program I will discover something interesting. Good way (after P.H. Winston): Learning is difficult. Maybe there is power in noticing similarities and differences between symbolic descriptions. I can explore this easily in the context of the world of the blocks.
2. Does the research problem demand exploration. A lot of work in AI and computational vision is on non-problems. A demonstration that a tool or technique is sufficient for a given task is not a demonstration of necessity. Convince yourself that your research problem is necessary. What is to be learned? Who is likely to care about the result? Is the problem of fundamental importance? Without necessity, you can easily be scooped by a better tool or technique.
3. Examine your commitment to the research problem. Commitment to a problem means that you will accept a solution, regardless of the scientific discipline that gives rise to it. If you only accept solutions of a certain type, then your commitment is to a technology, not to scientific research.
4. Develop a detailed scenario to demonstrate your work. A scenario provides an organizing principle for your research. As much as possible, carefully work through the scenario by hand simulation. Identify critical components. Work hard to develop the new ideas required dealing with these components.