显示标签为“学习”的博文。显示所有博文
显示标签为“学习”的博文。显示所有博文

星期一, 一月 01, 2007

[转载]李开复:问问自己为什么要去戴博士帽



在读了博士生远潇给本报的来信后,GOOGLE公司中国区总裁李开复说,有这些困惑和担心,实际上是很多博士生们在读博士之前并没有认真地想过,自己是不是能耐得住寂寞做学问,是不是能抵御来自物质世界的诱惑。
另外,如果读博士抱有“一顶博士帽能给自己找工作时加分”的想法,不仅会增加自己学习期间的痛苦,而且在找工作时会发现,博士头衔不能有多少优势后会更加失落。  
由于是最早进入微软公司高管层的华人,又常常在高校亮相做巡回演讲,而且还在中国创办了“开复学生网”,给中国学生解答“大到人生观,小到如何学好英语”的各种问题,这使卡内基梅隆大学毕业的工科博士李开复,在中国高校学生中的名气不小。就博士生远潇的困惑,记者专访了李开复。

  多问问自己为什么要去戴博士帽

  “选择读博士就等于选择了在未来三五年,或者是更长的一段时间,你必须要成为孤独的人,要远离物质的花花世界,甚至要无数次承担失败或者不被学界认可的痛苦”。这就注定了不是每个人都具备能成为博士的潜质。在李开复看来,当你犹豫自己是不是要去读个博士之前,一定要向自己问问这些问题:
  首先,你是不是有创新的热情。因为要取得博士学位,最后就得看你在某一领域的研究有没有突破和创新。如果你是一个墨守成规,不太富有挑战精神的人,那么做创新研究可能就不太适合你。
  其次,要问问自己愿意孤独地追求知识吗?看到同学发财、出名,会羡慕、甚至感到痛苦吗?如果你是个物质欲比较强、对挣钱还有兴趣的人,或许你该去读个MBA,或者找一份好工作,而不是去读博士。
  在美国,一个博士生毕业后可能能拿到10万美元的年薪,而一个MBA毕业后或许能拿到15万美元,但拿到博士学位要花上5年时间,或者更长,但MBA只要两年的时间,MBA的投入产出比要高一些。
  第三,你愿意花很多时间拼命工作,即便你知道你正在探究的问题有可能在短时间内无解。如果你是一个很在意失败的人,那么读博士可能会使你的人生变得灰暗。
  李开复说,只有当你肯定自己读博士确实是为了享受做学问、超越前人的乐趣时,才有可能愉快地度过学习生涯。
  李开复回忆,他自己念博士的时候虽然有奖学金,但日子也不富裕,有时候假期也得出去打打工,但每个人在自己不同的生活阶段就应该享受不同阶段的乐趣,学生时代就应该是物质清贫,学习而快乐着的。

  毕业时,你应该成为你研究领域中世界第一的专家

  跨入博士生的门槛后,李开复建议,要给自己设计一个3年的学习和科研计划。首先,需要彻底地了解在相关领域他人已有的工作和成绩,然后再提出自己的想法和见解,脚踏实地工作。另外,还要不断跟踪这个领域的最新研究进展,把握好方向,避免重复性工作,把精力集中在最有价值的研究方向上。
  李开复说,他至今还记得在他进入卡内基梅隆大学攻读计算机博士学位时,当时的系主任说的话:“当你拿到你的博士学位时,你应该成为你所从事的研究领域里世界第一的专家。”
  这样的要求似乎对大多数刚刚起步的人来说都是高不可攀的,可李开复说,他本人正是确立了这样的目标,在经过五年寒窗、夜以继日的努力工作后,他所期待的结果就自然而然地出现了。
  一个打算攻读博士学位的人,就应该给自己树立一个很高的目标。李开复想告诫博士生远潇:读博士不是一件轻松的事,切忌浮躁的情绪,而要一步一个脚印,扎扎实实地工作。也不可受一些稍纵即逝的名利的诱惑,而要200%地投入。也许你会疲劳,会懊悔,会迷失方向,但是要记住,你所期待的成功和突破也正孕育其中。
李开复回忆说,他在攻读博士学位时,每周工作7天,每天工作16个小时,大量的统计结果和分析报告几乎让人崩溃。他也曾不止一次地怀疑自己的所作所为是否真的能够成功,但终于有一天,在凌晨3时做出的一个结果让他感受到了成功的滋味。
“那种一切都很顺利,谁都可以得到的工作和结果,我相信研究价值一定不高。”李开复说,另外,一个人如果打算一辈子从事研究工作,那么从他在读博士学位期间所形成的做事习惯、研究方法和思维方式,基本上就可以判断出他未来工作的轮廓。所以,你一定要做一个“有心人”,充分利用在校的时间,为自己的将来打好基础。

你找的导师,最好有“我不赞成你,但我一定支持你”的胸怀

“在学术界,人们普遍认为‘名师出高徒’。可见导师在你的成长道路上作用是多么的大。”李开复建议说,在确定自己要开始读博士之后,应该主动去寻找自己所研究的领域里最好的老师,甚至应该去求教于周围能找到的专家,看看大家对你想选择的导师有怎样的评价,更不要忘了常去求教“最博学的老师”——互联网。
李开复说,他还鼓励准博士生们直接发电子邮件去咨询一些世界公认的专家和教授。以他的经验,对于这样的邮件,他们中的大部分人都会很快给回复。
李开复听到过一些博士生抱怨说,在3年的学习生涯中没有得到导师充分的指导。他把自己听到的案例归纳出了几类准博士们要慎重选择的导师。
有一类导师,有很多的项目,学生跟着这样的老师,3年的工夫大概都在替老师打工赚钱。这样的导师暂且看到他长处的一面,可能增加了学生的动手能力,但博士找工作,招聘的企业看的还是你作为博士的突破和研究能力,而不是你做过多少项目。
李开复说,这类导师中,有一种最恶劣的是,看到一些能干的学生能为自己做点事,即便到了毕业的时间也不让学生毕业,还要让学生多打几年工。所以在选导师之前,一定要多方打听导师的人品如何。
还有一类导师也被李开复认为是要当心的,这类导师虽然很安心做研究,但他几乎两耳不闻窗外事,研究思路和方向都是很落伍的,而且他给你选定的方向有可能早就被证明是过时的。李开复说,有的导师可能上了年纪,近年来也没有太多的研究成果,但这个老师人品不错,能允许和鼓励学生不同常规的想法,并且从方法论上能指导学生,这样的导师应该是可以选择的。 李开复多次在各种演讲和文章中提到他当年读博士时的导师。他说,虽然读博士期间,他的导师确实没有教给他有关他专业的知识,但是他能给学生大方向的指导,而且能毫不吝啬地与学生分享他在学术上的经营和他在学术界的各种资源。
李开复说,博士生导师或许就是那种没有太多时间给你,也不会给你太多具体而细节的指导,但他却有“我不赞成你,但我一定支持你”的胸怀。

戴上博士帽不等于就能一步跨进挣钱多的地方

有了博士的头衔不一定就等于增加了你找工作的砝码。李开复说,从他在微软和GOOGLE公司的招聘经历和他所了解的一些著名跨国公司在华招聘的情况来看,大家招聘博士的范围都会巧合地限定在国内排行前十几名的大学中。
李开复解释,一般大公司、尤其是IT类的企业在挑选本科生或者硕士研究生时,尺度是比较松的,即便有的硕士没有太多学术上的造诣,但只要拿出做过的像样的项目,一般也是会被认可的,但对博士就不同了。
李开复说,他在招聘博士时会仔细阅读应聘者的博士论文,因为对博士的水平评判就全靠这篇论文了,博士论文如果没有新意,或者观点方法陈旧,即使应聘者有再多的实践能力,做过再多的项目,也得不到认可。
正因为一些大公司在招聘时反而对博士的水平更加挑剔,所以李开复说,千万不要以为戴上博士帽就能找到好工作。

做个快乐的人最重要

最近李开复写了一篇文章,提到在21世纪企业喜欢什么样的人,其中他认为很关键的要素是,应聘的人是不是一个热爱工作、积极乐观的人。
李开复希望告诉远潇,即便现在有很多不如意和困惑,但还是要努力让自己成为一个快乐、积极的人。他希望把台湾企业家张忠谋的一个故事告诉远潇。
张忠谋是台基电的董事长,一次朋友请他题词,他给朋友写下了“常想一二”,朋友问他是什么意思。张忠谋说,“我们都说人生不如意之事十有八九,我要告诉你常想那剩下的一二比较如意的事情。”
张忠谋说,他从小就看了很多大人物的传记,发现了一个规律,凡是成功者都受苦受难,他们的生命几乎就是人生不如意事十有八九的真实写照。但是他发现这些人之所以能够成功,就是因为他们保持了正面的思考,通过“常想一二”,超越不愉快。苦难对他们来说反而成了生命中最好的养料,为他们未来的成功做了良好的铺垫。
李开复说,其实在21世纪,还有很多其他的理由要做一个乐观向上的人,因为21世纪有一个更实时善变的环境,我们尝试的事情会碰到很多很多的失败。

星期三, 十二月 27, 2006

好奇心、求知欲、追求完美、解决实际问题 - IT人必要的职业素养(转载)

让我提醒一下各位准备进入IT行业,或者在IT行业但是还没有真正融入的朋友,IT这个领域,不管你做什么,做起来真的很有挑战,也需要很大的勇气,这里 没有金饭碗、铁饭碗,如果你入这行纯粹为了更轻松的工作或者更高的收入,我只能说我个人极其不看好你的这个动机。没有合适的心态和必要的职业素养,你很难 成功或者满足。

首先需要好奇心,从计算机如何工作,到某个软件系统或框架是如何实现的,到具体业务领域为什么会有某项特定的需求,都需要 我们的好奇心,没有好奇心,就没有兴趣,没有兴趣,做出来的东西就必然缺少灵魂。如果你连基本的好奇心都没有了,我劝你还是早点关注一下其他更能够引起你 好奇和感兴趣的行业,否则要么你很失败,要么会做得很辛苦。

有了好奇心,接下来一定要有强烈的求知欲望,要有知甚解的精神。IT业是一个 瞬息万变的行业,当下如日中天的技术,到了明天、下周、下个月、明年,可能就回无人问津,对于和你的知识面,和你的公司所涉猎的行业相关的技术知识、领域 知识需要我们不断学习,不断充实自己,这个环节很难有什么捷径,如果有,也是通过一定的广度和深度来逐步达到举一反三的目的。曾经接触过不少“不求甚解” 的朋友,表面上他们能够应付相当的工作和压力,但是很难让他们理解和掌握更深层次的东西。如果你观察他们足够长的时间,你会发现他们为了掌握不断变化或者 不断发展的技术、框架、平台,或者适应某些看似极度不稳定的用户需求,由于没找到谱,其实也很累。

有了必要的好奇心,也有足够的动力去学 习新事物之后,我们需要有追求完美的工作态度。拿软件开发来说,我们产出的是软件,从某种意义上讲,是我们的孩子,应该给予足够的关爱和呵护,谁不希望自 己的孩子是天下最棒的?说到底软件这个东西从无到有,灵活性相当大,能够做到怎样优秀的程度,很多时候取决于我们自己。

最后是解决实际问 题。追求完美没有错,但是需要有个度,需要有的放矢,需要有一个更加全局的指导方针,那就是解决实际问题。不论你做的东西采用多么先进的技术,你用了多么 业界认可的管理方法,假如最后一些基本的客户需求无法达成,也是白搭。这是典型的“学院派”作风,我们在不断追求完美的同时,时刻都不能忘记我们存在的目 的:解决实际问题。

星期一, 十月 30, 2006

How to get hired by MSRA

MSRA=Microsft Research of Asia
招聘的4个标准:
4。Computer Science
Strong in algorithms and code
3。Research
High quality research along the trends of academy and industry, possess research potentials
2。Intelligence
creativity, quick out-of-the-box thinker, analytical
1。Personality
Well Communicate, high integrity, easy to work with, high enthusiasm.

星期一, 十月 23, 2006

帮丫头写的背包问题的分之界限求法

我对不起我的丫头,耽误这个程序有半个月了。
我把核心的代码贴出来,备用以后查看:
/**
* 计算给定节点的边界值
*
* @param node
*/
private void bound(NODE node) {
int n = obsForExe.size();
int deep = node.deep;
float weight = node.weigthAll;
float price = node.priceAll;
if (node.weigthAll > maxWeight) {
node.boundValue = 0;
} else {
while ((deep < n)
&& (weight + obsForExe.get(deep).weight <= maxWeight)) {
weight += obsForExe.get(deep).weight;
price += obsForExe.get(deep).price;
deep++;
}
if (deep < n) {
node.boundValue = price + (maxWeight - weight)
* obsForExe.get(deep).price
/ obsForExe.get(deep).weight;
} else {
node.boundValue = price;
}
}
}

/**
* 执行分支算法
*
* @return
*/
public float knapsack() {
obsForExe = new Vector(obs);
Collections.sort(obsForExe, new ComparatorByV());
int size = obsForExe.size();
PriorityQueue quene = new PriorityQueue(5,
new ComparatorByB());

NODE xnode = new NODE();
xnode.inPackage = new boolean[size];
xnode.deep = 0;
xnode.weigthAll = 0;
xnode.priceAll = 0;
while (xnode.deep < size) {
NODE ynode = new NODE(xnode);
ynode.inPackage[ynode.deep] = true;
ynode.weigthAll += obsForExe.get(ynode.deep).weight;
ynode.priceAll += obsForExe.get(ynode.deep).price;
ynode.deep++;
bound(ynode);
quene.add(ynode);

NODE znode = new NODE(xnode);
znode.deep++;
bound(znode);
quene.add(znode);

xnode = (NODE) quene.poll();
}
for (int i = 0; i < size; i++) {
if (xnode.inPackage[i])
result.add(obsForExe.get(i));
}
return xnode.priceAll;
}