我是一只IT小小鸟-连载4
0赞三、辜新星 时刻调整方向:找到人生的蓝海
我想知道流星的美丽是否值得去寻求
于是我心狂奔羽化成黑夜的彩虹
蜕变成月光的清风幸福了我很久
-- 郑钧《流星》
引子:骑单车的故事
小时候看过一个关于单车的故事:爸爸教儿子骑单车,儿子总也学不会。爸爸看出了问题所在,于是在再一次示范后让儿子看身后弯弯曲曲的车轮印,并语重心长地说:我儿,虽然你看见别人骑车时车头很直,但那也是因为他在时刻调整方向,才能顺利前进啊!
故事里的儿子有没有学会骑车我不得而知,但这个故事一直都能让我在回顾自己的成长历程时想起,显然是个好故事。
本科四年定调:大一有点瞎忙,而后自己做主
大一我是社团狂
2002 年,我考入北京大学计算机系。能进入梦寐以求的大学,学习我当时觉得最酷的专业,自然非常高兴。进入北大后,我就一心追逐起自己梦想中的大学生活:加入了校团委社团文体部,跟着一帮虽然只比我高一两届但说话做事明显成熟很多的师兄师姐们,忙着认识各个学院的朋友,忙着办各种文艺晚会,忙着管理北大超过100个学生社团;拿了把吉他就拉人组成表演团体,参加了北大校内最火的新生文艺汇演,在北大百周年讲堂的舞台上过了一把主唱瘾;成为了学院团校的积极分子,每期不落地参加所有的活动;还担任了团支部的职务。我非常清楚地记得,大一期间,我每周光各种例会就有三个半。然而,大一也是学习压力最大的时期,不仅各种基础课程数量多、难度大,而且几乎所有的新生都要面临转变学习方式以适应大学学习的问题。所以,我当时的生活特别紧张,任何时候的感受都是一个字:忙。
很快,瞎忙的结果就白纸黑字地送到我的面前,我的"高等数学"期中考试只考了不到80分。一纸惊醒梦中人,我突然意识到,我曾经梦想的自由自在的大学生活,也不是那么无拘无束,至少还有分数这样的硬指标在衡量着我的前进或退步,提醒我不要迷失方向。在初高中,我从老师、父母那里听到了太多次一个美丽的"传说":现在努力学习吧,过了高考,一切就都解脱了,大学将是你自由发展的天堂。现在看来,事实要让很多将这"传说"当作最后一根稻草的高中生失望了。
大学的确提供了非常丰富的能力培养机会和广阔的个人发展空间,但归根结底,学习和进步才是大学的主题,荒废其中任何一个都不能让大学生活过得充实而完整。
好学长赐我财富
既然已经觉醒,那就改变吧。我开始把大量精力投入到课程学习上:像高中一样进行课前预习,增加了课后自习的时间,每天都在三教或图书馆待到关门。但是,我仍然感觉时间不够用,学习的时候总感觉各种事情纷至沓来、压迫我的大脑,巴不得能并行作业同时完成若干件任务。我很困惑,跟一个同样做学生会工作的师兄聊天诉苦,谈我面临的问题。他很干脆地给了一个建议:做好短期时间规划。具体而言,要把每天把要做的事情分成A、B、C、D四类:
A--紧迫且重要;B--重要不紧迫;C--紧迫不重要;D--不重要不紧迫。
然后按顺序为每件事情安排一段专属的处理时间。关键的是,一定要在专属时间内专心致志地做好当前的事情,不受其他任务的干扰,这样才能提高效率。
这是我从学长那儿获得的第一笔真正意义上的财富,立刻从善如流,受益匪浅。大学期间,我每年都能获得奖学金,并且因为良好的学生工作表现,获得了北京市三好学生、北京大学优秀学生干部等荣誉。
理解专业,痛并快乐着
最早接触计算机是在小学毕业的暑假,被家人送到市科委的计算机培训班。说是计算机培训,其实就是一帮小孩在386 的电脑上学五笔,用当时算是先进的Windows 3.1操作系统。即便如此,计算机也让我大开眼界。当时我最喜欢的当属最流行的指法练习软件TT和Windows 自带的扫雷游戏,看着不断掉下的单词块被击碎或是鼠标轻轻一点就消去一大片方格,心里总会大呼过瘾。等到初中毕业有了自己的奔腾Ⅱ电脑,就不满足于玩玩游戏了,开始各种折腾。那时候最喜欢做的是优化系统性能,各种电脑相关报刊上的系统优化方法是我的最爱,从调整虚拟内存、优化注册表到更新驱动、刷BIOS,危险的、不危险的全都要亲自动手尝试一下,仿佛不调整系统就慢得难以忍受一样。那时候我对计算机专业的认识基本上可以归纳为三条:用Visual Studio写程序,学习Windows系统(尤其是注册表),DIY攒机。甚至在大一回答一份关于课程设置的调查问卷时,我到现在还清楚地记得我在建议一栏里写上了:开设Photoshop课程--真土啊!囧
转变的过程漫长而艰难。当大一下学期开始增强对编程的要求时,我缺乏编程基础的弱点就明显暴露出来。加上身边还有不少熟悉编程语言甚至有过计算机竞赛经验的同学,我跟他们的差距就越发明显:常常自己调试半天找不出Bug所在,而有经验的同学一眼就能告诉我答案。有差距,就要追。怎么追--
买书,编程的,大部头,很多。从编程语言到编程风格,再到数据结构和算法,几乎每本书我都是从头到尾抱着仔细读完的。
坚持在读书的时候把代码一行行亲手敲出来并编译通过。这种学习方法很需要毅力,毕竟当你看着书上的代码觉得很容易懂的时候往往懒于动手,但也只有动手才能发现各种问题,比如用C++写class总是忘了最后的分号,缩进不一致导致少写一边大括号,等等。
提前做知识储备。在学习编程技术的时候,我还提前了解了一些编译器和计算机体系结构的知识,对于我理解程序的运行和性能的瓶颈有了很大帮助。
贵人指路,事半功倍。CSDN、Joel On Software等网站上的程序员,他们在博客上无私分享的心得和在论坛提供的及时帮助不仅让我获得了知识,也给了我极大的鼓励,让我能坚持艰苦的学习。
我和侯捷老师的忘年交
尤其让我难忘并受益颇深的是台湾的侯捷老师。当我大二开始学习Windows编程时,无意中访问到了侯老师的网站,在这里,我非常惊异地发现,侯老师公布了他的畅销书《深入浅出MFC(第二版)》的PDF全文。当时我知道国外有些作者如Bruce Eckel,会把自己的书的电子版无偿地提供给所有需要的人下载,但是在国内,尤其这样一本如此出名的畅销书,我还是第一次看到作者将全文贡献出来。我立即下载了这本书,开始随着侯老师的笔触进入Windows编程的世界,并大胆地给侯老师发了一封电子邮件表示感谢。没想到侯老师很快给了我回信,向我询问大陆尤其是北大的计算机教育方式,并且鼓励我踏踏实实地打好基础,而不要被层出不穷的新技术遮蔽了视线。我很难想象这样一位翻译、写作的名家在工作繁忙之中能抽空回信,而且态度谦和平易,心里受到了极大的鼓舞。后来,我跟侯老师聊了我的困惑,包括如何学习计算机,以及如何取舍出国和保研,侯老师则侃侃而谈,以自己的亲身经历给出了建议。再后来,侯老师与我在北京见了几次面,为计算机系的同学开了一次讲座,还饶有兴趣地"旁听"了一节"数据结构"课程,我也协助侯老师翻译了《C++ Primer》等书籍。不管是什么形式的交流,侯老师总像个稍微年长的朋友,风趣平和,并且十分乐意把自己的感悟和经验与人分享,这种宝贵的态度正是我以侯老师为目标需要继续学习的地方。
生活需要忘年交
袁岳
我把年龄相差12~15岁以上并成为朋友的人称为忘年交,基本上指的是与不是同一时代的人交往做朋友。我把与年长于己者交往称为上行忘年交,与年幼于己者交往称为下行忘年交。
忘年交的价值我称之为"纵向经验突破"。我们一般人多与同年横向交流经验(通常那是最为人乐于或者自然接受的一种模式),而与上辈和下辈之间缺乏自然、平等、放松、随意的交流。这是代际的自然差别效应,同时也导致了代际分隔与冲突。忘年交则在心理上接受与自己有显著年龄差异者为平等的交往对象,从而改变了双方间经验、信息、知识的差距,增大了交流的信息量并提高了双方对彼此意见的认可度,因而显著地减少了矛盾。除此之外,忘年交还增加了对交往对象产生代际文化影响的可能性,冲淡了代沟色彩。
忘年交提出了一个跨代学习模式的问题。忘年交的数量与水平,在一定程度上的确是个人纵向学习能力的一个重要标志,也是个人亲和性与表现魅力的重要指标。
求职之路定调:结合兴趣,目标明确,准备充分,一举中的
再来谈谈我的求职过程。从第一次面试,到选定工作Offer,前后只有短短四个多月的时间。但是为了得到自己喜欢的工作,我从确立兴趣方向、进行各种准备到应对面试、最后选择职业发展道路,付出的时间和精力比这要多出许多。
确立求职目标:IT业的产品经理和管理咨询业的分析师
整个求职过程中,我一共只投了十家公司:谷歌(产品经理)、微软(项目经理)和百度(工程师),六家管理咨询公司及中国移动(产品设计岗)。在年后才拿到最终Offer的同学中,这算是非常少了,主要原因是我在求职季节到来之前就立下了明确的求职目标,即IT业的产品经理和管理咨询业的分析师,并且针对这个目标进行了充分准备。
为求职目标做好各种准备
针对不同的职位,我分别做了不同的准备。
1. 针对技术职位
1) 越早准备越好。我在面试的半年前就开始做知识回顾和储备。
2) 复习基础知识,主要包括:算法、数据结构、操作系统、体系结构等。此外,对于互联网公司离不开的网络以及分布式系统的相关知识,我也会特别关注。
3) 复习的方法。
a. 回顾基本理论;
b. 动手写代码,尤其是基本的数据结构和相关算法,一定要动手写出来并编译通过。原因是,一来面试常常会面试到基本数据结构的细节,或者从基本数据结构出发,要求做出改进以满足一些特殊条件;二来即使如删除链表头节点这样简单得不能再简单的操作,如果不熟悉,在实现上也容易发生错误。
推荐阅读:《编程之美--微软技术面试心得》。如果能把这本书里一些题目的来龙去脉搞清楚,面试数据结构和算法方面的题目时会有更强的底气。
c. 要关心实际系统。《程序员》杂志和CSDN网站经常会有实际的大型网站架构分析文章,关注这样的实际系统能够加深对分布式大型系统的理解,对于面试很有帮助。听说博文视点会组织出版系列大型网站架构分析方面的图书,值得关注。
2. 针对产品经理职位
相对技术类"靠硬本事吃饭"的职位,产品经理的评估指标更加软性一些,相对也不容易特别有针对性地准备。我做的准备主要包括:了解IT产品经理的工作,增强对产品和行业的了解,锻炼逻辑思维能力,提升英语听力与口语水平。
去微软实习,切身了解IT产品经理的工作,确定自己的选择。
当我开始考虑自己适合做程序员、产品经理,还是项目经理时,我对PM的了解还仅限于师兄们口口相传的一些"轶事"。为此我申请了微软Office 部门的项目经理实习,亲身体验了PM的工作。与工程师的工作相比,PM的工作需要面对更多的不确定性和模糊性,如何将模糊而不确定的事情制定成明确的目标,这是PM工作中最具有挑战性和最有趣的地方。我的工作是协助提高一个SDK产品的可用性,首先需要决定如何度量和测定可用性。为了解决这个问题,我查阅了大量的资料,并和微软的多位专家进行了多次沟通和交流,最后成功地完成了任务。在这个过程中,我曾因为完全没有头绪而压抑苦恼,但找到合适的解决方案给我带来的快乐和成就感更大,让我在工程师和PM职位之间做出了明确的选择。
自己给自己一次次出题模拟面试,增强对产品和行业的了解。
申请产品经理的职位自然要对产品和行业非常了解,为此我很早就开始广泛地关注和尝试新的互联网产品。我关心的产品不仅包括谷歌、雅虎等互联网巨头的大部分服务,还从TechCrunch、Wired等网站上了解到硅谷最新的产品和服务。当然,了解只是第一步,之后我会花更多的精力来思考很多问题,比如:这个新产品解决了什么问题,这个问题以前是否存在,是对所有人都存在还是只针对部分用户,如何发现这个问题,还有什么问题没有解决,等等。这样的思考过程有时候很艰难,但是每一次思考都是对自己的磨练,也相当于一次模拟面试。
通过准备咨询业的案例面试训练逻辑思维,尤其是结构化思维。
逻辑思维的训练是在准备咨询业的案例面试中获得的副产品。咨询行业是以观察和推理来得出问题解决方案的行业,对逻辑严密性要求很高,多了解一些相关的知识和方法,能够帮助我们训练思维和表达。例如,咨询行业常用的框架,如4C、4P等,有助于我们形成结构化的思维模式;而根据其更重要的分析原则,如MECE(不重复,不遗漏),则能让我们脱离框架的机械化思路,根据实际问题进行有条不紊、逻辑严密的分析和论述。
坚持长期训练,坚持有针对性的训练,闯过英语关。
对于外企中需要与人大量沟通的职位,英语太重要了。没有顺畅的理解和较为流利的表达,很难想象我能顺利通过七轮以英语为母语的考官的面试。英语的训练是个长期的过程,但如果找一个水平较高的语伴坚持完全用英语交流,加上有针对性的练习(比如,用英语回答我上面提到的关于产品的问题),在较短时间内达到英语面试要求的水平是很有可能的。
简历不是写出来的,是改出来的
好的简历:形式上美观大方,清晰明了;内容上充实有料,主次分明,针对性强。
1. 如何解决形式问题
使用合适的模板。模板只有一份,但是,针对不同的职位及个人经历,应该对模板进行适当地修改,使之适合目标职位的具体要求。比如:
1) 针对IT职位,可以将"工作经验"换成"实习经历"或"项目经历"。
2) 将"个人信息"换成"职业技能",填写自己熟悉的计算机语言和获得的认证,等等。
3) 要申请外企经管类的职位,"课外活动"或"交流活动"则是必不可少的要点。
另外,每个人的情况不同,要根据自己的经历和特点来修改简历模板。例如,学术上成果比较多的,可以单独加一项"专利论文",而获奖学金奖励多的,也可以单列出来以突出。
2. 如何解决内容问题
简历更重要的是内容。
1) 内容要能体现求职者的能力和经历,满足目标职位的需要。这就要求我们仔细地挖掘相关的经历,并加以适当的总结和提升,最后用书面化的语言表达出来。
2) 内容应该能反映出作者训练有素的逻辑思维。注意:一段经历需要有三到四个要点来支持,重要的就在于如何选择几个要点的内容,以及如何对它们进行排序。一般而言,可以选择如下两种策略:
a. 第一种,首先简明扼要地说明是一段什么经历,然后用一到两个要点来说明自己(注意!不是项目组)具体完成了哪些工作,最后一个要点说明工作效果或自己的收获。
b. 第二种,对于事情多且杂的经历,应该选取最具有代表性的事务,按照其重要性递减的次序分别描述出来。
即使针对同一类型的职位,我的简历前后经过不下数十次修改,小到把中文逗号改为英文逗号,大到增删一段个人经历,目的只是为了使得简历更加符合雇主的需要,顺利通过求职第一关。
我的面试故事
第一回 面试百度︱研发工程师
9月底,我的第一次面试是应聘百度Web新产品部门的工程师。
当天共面试了两轮,一周后加一轮经理面之后就顺利拿到了Offer。百度的技术面试一向难度不小,但幸运的是,一面的面试官虽然年轻,却很有面试经验。他从几个简单的问题开始入手,逐渐加大问题难度,给了我充分的时间来给大脑热身。
【剧透与面经】
该部门的面试题特点:跟实际系统结合得很紧,分布式系统的题目很多。由于热身充分,等到真正的难题出现的时候,我已经能够放松紧张的神经,全力思考问题的各种解决方案,评估方案的优劣,并试图优化方案,比较顺利地解决了大部分问题--这也告诉我们,遇上一个有经验的面试官是多么的重要。成功的面试是考官和被面试者双方共同的成功!面试官也很满意,咨询我的意见后,直接叫来另一位工程师进行第二次面试。
值得一提的是最后的经理面,提的第一个问题竟然是:"你在前面面试中有哪题没回答上来,回去后是否思考了,答案是怎样?"这题看似没有问新的问题,但它直接考察了求职者是否具有积极学习和孜孜求解的态度,如果抱着考完拉倒的心态,估计很难让这位经理满意。
技术面试中很难保证不碰到难题,在不能立即回答出最优答案的时候,需要使用一些面试技巧来应对。我的经验是分四步走,即理解题目、原始算法、优化算法、复杂度/ 性能分析。首先要确认问题的细节,通过跟面试官的沟通来彻底理解题目要求和限制条件等。然后,在最短的时间内提出自己的原始算法,并进行计算复杂度分析,如果是系统设计,则进行系统性能以及优缺点分析。一般来说,原始算法很容易想到,但几乎不是考官需要考察的最优解。因此,应该利用理解题目和描述原始算法的时间,脑子里积极开动脑筋,通过联想类似的系统或问题的解决思路,快速形成优化算法的基本思路。在提出优化算法之后,还应进行复杂度和性能评估。
第二回 微软︱项目经理
11月下旬,我参加了微软MBDC部门Office组的项目经理面试。由于在微软做过项目经理实习生,因此我熟悉公司对PM的要求,因此面试得比较顺利,一个下午连续接受四位项目经理的面试,大约耗时五小时。
【剧透与面经】
面试主要围绕着产品设计和项目管理展开,考察应聘者是否具备开阔的思路、对产品开发流程是否理解及对产品进度是否能够掌控。例如,有一位面试官问到了如何对待产品Bug的问题。这个问题考察你是否理解Bug解决的代价、可能带来的风险,以及在不同的产品开发阶段应对Bug的不同方式。如果简单地回答解决Bug,那说明对产品开发的经验和理解太过欠缺,也说明思考问题不够全面,不适合这个职位。就我看来,这些要求,恰恰体现了微软作为全世界软件(狭义的软件,区别于互联网等)业老大所最擅长和最看重的特质:稳定压倒一切。
第三回 谷歌︱助理产品经理
从去年10月份到今年1月份的四个月期间,我参加了谷歌助理产品经理的职位申请。产品经理是谷歌一个非常特殊的角色,一个产品除了开发和测试之外的事情,基本都由产品经理主导。其中最重要也是最令人激动的是产品功能设计,也就是说,你对产品功能的任何合理的想法,都可以在产品经理这个平台上得到实现,最终被全球数以亿计的网民使用,改变他们的生活!这样的影响力是吸引我的最主要原因。另外,足够大的学习平台、世界水准的开发团队和优良的工作环境与待遇,也使我心向往之。
【剧透与面经】
助理产品经理是面向工作经验两年以下的产品经理申请者的一个为期两年的培训生计划,工作内容与产品经理基本一样。也由于产品经理的重要性,谷歌这个职位的招聘流程非常之长,先后面试过我的人一共超过10人次,面试官涵盖了从普通产品经理到负责搜索产品与用户体验的全球副总裁,所以,需要得到自上而下各个层级的同事的认可,才能拿到这个工作机会。
在面试过程中,面试官既考查了产品具体特性、设计能力及对技术的了解,也看重创造性、个性,以及对产品和行业的理解。既有比较细节的产品设计问题,又有一些与产品设计、与互联网、与软件甚至与IT业都完全无关的问题,但这些开放性问题却能考察求职者的个性、逻辑思维与表达、创新性,以及对互联网领域的理解。
兴趣是我全身心工作的基础
对不少人来说,第一份工作可能就决定了以后的职业发展道路和生活方式。因此,选择目标职位和Offer其实比面试更为重要。
对比工程师和PM实习经历,我发现了自己的如下特点:
喜欢做较高层的思考胜于具体实现,相对于很多技术天才关心"怎么做"并从中获得极大满足,带给我更多快乐是"做什么"的问题;
对IT新产品、新特性有着莫大的兴趣;
常常换位思考,试图从管理层、开发者和用户等不同角度来看待一个产品;
在技术工程师中具有沟通优势,在管理人员中具有技术优势。
这样,我发现了自己的兴趣和"比较优势"--也就是我的蓝海,同时也就明确了自己的求职目标。这些结论若非通过亲身体验,是很难从别人口中得到的。另外,不同公司的PM职位性质和内容都不尽相同,因此我会通过搜索引擎详细地了解我关心的公司对PM的要求,并从中选择自己最适合的职位。
选择Offer的时候,在管理咨询师和产品经理之间,我考虑的因素主要包括以下(按重要性降序):
个人兴趣;
学习发展机会;
平台及其影响力;
生活方式和待遇。
第一重要的是兴趣,对我来说,兴趣是我全身心工作的基础,也是成功的必要条件。
我很看重薪水和生活方式,但我没有把它放在第二重要的位置上,因为我更看重的是五年后、十年后的薪水,而不是起薪。有一位师兄跟我说过,对于事业起步的年轻人而言,决定未来薪水的,就是你能在这份工作中学到什么,以及拥有这份工作后你能积累什么作为以后的资本。我非常认同这样的见解。因此,我把学习和发展的机会放在了仅次于个人兴趣的位置上。
企业是个人发展的最主要平台。平台的好坏不仅由其大小决定,也在于个人是否适合平台的整体文化和氛围。即使在同一行业中,不同公司的文化差异也是很大的。谷歌相对宽松的氛围和鼓励创新的文化正是我所追求的,我相信这样的文化能够有助于我发挥潜能。
结语:骑单车快乐向前
回顾自己大学本科和研究生的七年,不同的阶段有着不同的目标。不管是学习基础、钻研技术还是找工作,当自己的方向与目标存在偏差,或者向着目标前进的速度不理想时,我总会想方设法地拷问自身,从朋友身上获得经验,对自己做出调整,然后避开弯路,更加接近自己的目标。工作之后是一个新的起点,有着新的目标,我希望自己能够继续适应新的环境,也希望所有看到这个故事的朋友都能在学习、生活中不断地校正自己的方向,骑上单车快乐地向前。