2008年6月18日星期三

华硕员工长篇记实:天堂向左,华硕往右

华硕员工长篇记实:天堂向左,华硕往右

要离开ASUS的同仁依照惯例都会留下些支言片语,这也是华硕独特的企业文化. 我也在想是否依照惯例留下点什么,让后人能够探索前辈们的历史,又怕影响还在ASUS工作的同仁们的心情,但毕竟在这里工作了17个月之久,不留下点什么,总觉得有些遗憾。下面的文章送给我在ASUS认识的朋友们,并纪念我在华硕的第一份工作。
第一章 实习报到
2003年华硕从武汉又招募的一群大学实习生到其苏州的生产基地报到了,在招聘会上被华硕招募的美女所吸引,梦想着华硕苏州工厂里面应该遍地都是美女,然后又联想到西施也是苏州的,于是推理出苏州起码也是个美女遍地的园林城市了,于是毫不犹豫的就签了卖身契,可惜当时不知道历史是不会重演的,不然打死我也不会推出如此荒谬的结论。
坐了20多个小时的火车,出了苏州站后才明白历史是不会重演的,西施是没有了,但东施还是满街跑的,心里面也只有安慰自己华硕工厂的美女应该会多一些,到了工厂后才知道原来那些美女大多都是人事的,也有其它厂的助理,华硕贫瘠的土壤是生长不出美女的,但恶劣的环境却很适合一些长得很有创意的恐龙生存。
明白被华硕的“虚假广告”给骗了,虽然很失望,但想到来华硕是工作第一,大丈夫应以事业为重,也只有接受来到侏罗纪公园这个KB的现实了,也入乡随俗的降低了心中苏州美女的标准,心里面更是不断的安慰自己,丑女和美女是没有区别的,前者是恐龙,后者是进化后的恐龙。
在刚出火车站时大家还是很小心的,小心到连两个健壮的大男生都不由自主的手牵手荡来荡去的怕走丢了,可惜没有数码相机,不然拍下来传到mop上怎么也可以被顶成一篇经典贴了。
报到后就开始分寝室,感觉又像回到大学刚报到的时候了,辛辛苦苦把房间打扫干净了,床铺也铺好了,却发现自己进错了寝室,怎一个郁闷了得。三天的新人训让我们开始接触华硕的企业文化和各项规章制度了, 不知道底细的我们对教育班长充满着敬畏,以为他们都是职务很高的人,分到部门后才知道原来很多教育班长不过是从生产线上抽出来无关紧要的人而已,当时心里面就一个字"KAO"。
第二章 实习时光
新人训终于结束了,我也被助理领到我该去的部门,见到了当初面试我的主管蔡经理。本以为新人到部门后会下基层到车间去实习,结果我们却被经理单独留下来培训,每天给我们讲课。4月后的天气是炎热的,但坐在办公室里面吹空调却很惬意,每天听课,没课就看部门文件,对于这种坐着都有工资拿的实习让我不由得发出还是资本主义好的感慨!
当然不是所有的人都是这么幸运的,分到生技部的本科生们每天都被驱使做些拿螺丝,取扳手之类打杂的工作,终于让一个实习生发出悲哀的怒吼:"难道老子大学毕业是来给你们拿螺丝,扳手的?"。对于这种说完后就跑路的大学实习生,我们应该予以最强烈的谴责,因为他那句不负责任的话造成余下的大学实习生们被生技部副理发配到冲制自动化线苦干了1个多月。当然DT的大学实习生们也好不到哪里去,每天都上流水线当作业员,当时大家都以为是在锻炼自己,可惜到最后才知道当时由于SARS泛滥,实在招不到OP,只有拿大学实习生充数了。
对中午那顿工作餐,大家的怨言还是颇多的,很难吃,而且即使你不吃,也不会把那顿饭折现打到你工资卡里面的。当厂长知道我们对中午伙食很不满意后,给我们一个"泪流满面"的故事,说他问一个OP中午的饭好不好吃,那个OP竟然泪流满面说他从来没有吃过这么好吃的午饭!!!(KAO! 这故事TMD可能吗? 难道华硕还有去非洲招过OP?)。当时这个故事让在场的大学实习生们惭愧不已,鼻子酸酸的,就差泪流满面了,可后来才知道每个厂的厂长都对刚来的大学实习生说过同样的故事!
第三章 返校答辩
实习的日子是短暂而幸福的,终于要回学校参加论文答辩了。虽然SARS流行,但是还是阻挡不住我回去的步伐,当然我也打着SARS流行回去要被隔离15天的幌子,多请了15天的假。收拾好东西,揣着一个月的实习工资,坐上回武汉的火车,心里怎一个爽字了得。
SARS流行,学校都被封锁了不让出去,呆在学校的日子过得极为糜烂,考上研究生和找到工作的同学无忧无虑,过着猪一样的生活; 没有找到工作的同学每天都要躲开巡逻队翻墙出去,顶着炎炎烈日满街乞求工作,过着狗一样的生活,而那些没考上研究生又找不到工作的同学,则是过着猪狗不如的生活。
恢复到"九三学社"的作息时间让我凌晨三点睡觉,早上九点起床。早上九点起来后就联网几局SC活动活动手脚,然后就开始径行CS对决了,玩到中午去食堂打饭,回寝室一边吃一边看碟。下午看完碟就继续修练CS和SC。晚饭是来不及吃的,一般都是CS对决到九点后躲过巡视的人翻墙出去吃夜宵,顺便租碟回来,吃饱喝足后已近11点了,然后再躲过巡夜的人翻墙进来。进来后又开始看碟,到凌晨1点后,再对决几局CS和SC,熬到3点了,大家也筋疲力尽了,终于可以睡觉了!
学校的日子是快乐的,一个多月就看坏了4个DVD光驱,好在当时各IT公司都在做活动,光驱1个月内包换,不然就我们那样折腾,是光驱都会受不了的。但隔壁寝室的BenQ DVD看烂碟频率远高过我们寝室的ASUS DVD,但他们只换过1次,而我们换过4次,害得我每次看DVD时,就被寝室那个买ASUS光驱的老兄唠叨,说我心太黑,刚到华硕实习竟然就开始昧着良心给ASUS做虚假广告了,让他吃了大亏,而我也只有缩着脑袋小心翼翼的说我TMD也不知道华硕的质量是吹出来的,我也是受害者呀!
第四章 正式上班
早上被喧闹声吵醒了, 到寝室外看到系里面的领导亲自过来赶我们搬出学校,才知道已经到了离校的最后一天了,收拾好计算机,网线,找到扔在角落里的学位证书和毕业证书,拍掉上面的灰尘,扛着行李离开了生活了四年的大学。回到家正准备继续睡觉时才想起离到公司报导的时间只有2天了,慌忙之下立刻打电话订火车票,然后又打点行李,告别刚见过面的父母直奔火车站。
来到公司门口,看到一大群华硕员工拿着苍蝇拍子在拍苍蝇,让我大吃一惊,到部门后才知道谢伟琦副总要求所有的BU都要上缴苍蝇, 而且列入主管的考核中,逼得各BU主管停线抽人出去打苍蝇,然后还要安排人去数打到的苍蝇。一时间苍蝇飞到华硕门口都要绕道走,不少苍蝇都在华硕员工的追杀下,疲于奔命,活活累死。更为夸张的是,此事竟然促使附近村民在华硕门口销售苍蝇,最贵时可以卖到1毛钱一只,比开三轮车赚钱多了! 此类事情我真是前所未闻,看来只有在谢伟琦领导下的华硕才会发生。
第五章 接手装配
本以为来到部门后会继续上课,但实习的幸福时光已经一去不复返了,实习时候给你讲课,是为了正式报到时更好的用你。就在自己还不知道自己今后的何去何从时,突然得知楼上装配的组长,分组长,线长纷纷跑路。一时间,课长Alex忙得焦头烂眉,万般无奈下,他起用了刚来上班的我做装配的组长,而我也成为自2002年以来,短短一年半内走马上任的凯硕装配课第7任大组长了。相比其它回公司后还在DT生产线继续当作业员的本科生们,我算得上是一个奇迹了,为此周龙还专门为我取了个日本名字------"牛X轰轰"来纪念我的升迁。
组长听起来是挺响亮的,可惜没有给我加工资,而具体的工作让我逐步认识到组长其本质上也就是个高级OP而已,完全没有必要浪费个本科生扔在那里。当组长的第一天就因为入库的人手不够,结果还要我亲自拉油压车入库,后来生产线上的人手不够了,结果我又被线长借去帮忙锁螺丝,一天下来,我终于明白了组长的工作内涵,就TMD是一救火队员,到处救急。就在开始当组长的那一个星期里,我终于明白了华硕经营理念中第一句话"培育,珍惜,关怀员工,让华硕人尽情地发挥最高潜力。"的真实涵义,那就是"把女的当男的使,把男的当畜生使"。
组长的工作是痛苦的,我坚持了2个月后终于坚持不住了,重压之下,我把这个看似风光的职务交给了由资深分组长升为组长的凤娟同志,并语重心长的告诉她"party就把这个光荣而又艰巨的任务交给你了,你一定不要辜负party和人民的希望,把装配搞好"。本以为在我深情的劝导下,凤娟同志会感动得热泪盈眶,然后毫不犹豫接替我做下去,结果不到一个月,她竟然一声不吭地就跑路了! 我还没有体验够在野party的幸福生活,又在Alex的利诱下,含泪重新上台执政了,成为自2002年以来上任的装配第9任大组长了。
可怜的凤娟同志在华硕干了4年了,好不容易升到组长了,工资却只加了10块大洋,发工资前,凤娟还兴奋的说升职了要请大家吃顿饭,我还激动得考虑是去新城花园,还是去吴宫喜来登,可惜工资单拿到手后,只有请喝可乐了,更郁闷的是加的工资还无法满足给6个干部买瓶饮料喝。饱受耻辱的凤娟选择了离职,后来厂长想体现一下他很关怀老员工,在凤娟离职的一个月后还专门打电话到装配问凤娟为什么要离职,我也只有含糊其词的说凤娟大概是年级大了,只有回家结婚去了。
第六章 生管好友
虽然当时我做组长没有多少经验,而读IE出身却在做生管的小马哥更是没有任何生管经验. 两个没有工作经验的大本生碰到一起,自然惺惺相惜,不久就成为好友,但好友归好友,乱安排排程,我也会发飙的。他发出来的生产排程里面竟会同时出现装配调休无生产和装配有生产两种排程,让人不知道是该安排调休还是安排生产,看到这份排程后,让Alex和我都同时抓狂。
当然小马哥在出货的重压下还有过让人更抓狂的安排,人力安排不过来,小马哥就到DT借用DELL的一条生产线人力过来帮忙生产,但是DT的作业员就没有受过相关的正规训练,IE彭为民教育训练时又教错了一个安装动作,而OQC的新人做首件检验时又没有查出来,等我发现这个问题时,已经做出来30台MA3要全部重工,彭为民也只有很郁闷的把那30台MA3拖到角落里自己一个人重工掉了。
更KB的还在后面,EPSON的产品要求很严格,而小马哥竟然敢安排没有任何生产经验的DT OP做EPSON的机种,吓得负责这个机种的OEM工程师Ricky守在装配生产线不敢离开半步,但当Ricky发现锁螺丝站的作业员竟然没有见过电动起子,不知道该如何使用时,立刻吐血倒地,成为自EPSON机种正式生产以来挂掉的又一个4职等的工程师。DT的OP们一天生产了5个栈板,却漏贴了一张Label,结果我还要安排夜班抽出人力全部Sorting重工,让吐血不止的Ricky又继续狂喷血.
虽然小马哥刚开始生管做得不好,但我还是予以理解和支持的,起码他会听从我的安排,让我没有钱用的时候安排周末加班。等到小马哥熟悉作业,做得游刃有余时,他却被调到安排冲制生产了,而他的继任者虽有工作经验,却只会开工单,连库存有无料件都不管,还要制造单位去催物控备料,甚至逊到要我们去问系统组装部明天生产什么机种,然后告诉她,她再来安排装配生产对应的机箱。遇到这种生管我每天也只有吐血了,可惜吐出来的血不能做为无偿献血使用,不然我吐出来的血足够可以让我一辈子都可以无偿用血了.
第七章 Moses风云
在凯硕机壳生产史上不得不提到的机种------Moses开始生产了,这个机种给凯硕带来了难以想象的波折和动荡,并直接导致凯硕走了一个副总,二个经理,并有大批高级工程师离职。
Moses的历程极为不顺利,一直delay,等到工程部的经理Bob要开始进行T0试模时,离出货已经没有几天了,于是工程的阿虎领着一帮工程的兄弟开始做T0的东西了。可惜T0的产品竟然会出货! 尺寸跑掉得严重,楼上装配时极为困难,拉钉孔位不准,组装后断差太大,所有的问题都没有办法解决,但是T阶段的量却越来越大,从最初T0的200台到移模厂外生产的最后一次T11的1820台,这些问题都没有解决过。
而QA的课长Miles卡着标准不放,断差在0.3mm以内的就pass,0.31mm的就NG,每次看着QC拿厚薄规量断差,发现超过标准1条就判退,让工程经理Bob,阿虎和我都抓狂不已, 其实这也不能怪QA工程师, 毕竟大学刚毕业, 前任Moses QA胡永泉没有管控好又没有带好她, 使得新来的QA工程师只能服从Miles. 其实在胡永泉就曾经私底下把断差放宽到0.5mm, 甚至0.6mm出货, 也没有客诉回来过. 相反客诉的问题都是USB接口失效, 电源不工作这类功能性Bug, 外观性的断差客户就根本没有在意过.
机壳与面板的断差太大, 只有用锤子将断差敲小. 那时装配的IE彭为民测量的产量是每天800台, 但是由于断差太大, 拉钉孔位不准, 每天加班到晚班来也就只能敲出来200来台. 我要求IE改工时, 彭为民也十分委屈的说异常不能考虑在工时里面, 而刚出道的小马哥硬是严格按照IE的产能做排程, 而且时间卡得很好, 通常是今天做第二天就要出货的东西, 让我有种要跳楼的冲动, 也让Bob每次看到生产排程就抓狂.
实在生产不出来就只有加班, 于是我也在这个时候创造了自己月加班和连续加班的最高纪录, 一个月累计加班200多个小时, 还有连续加班56个小时. 当时在重机场上夜班的李锋伟经常看到我吃半夜餐,总会装作非常惊讶的问我是不是也在上夜班,得到我回答是上白中夜连班时, 他立刻劝我千万不能要钱不要命了.
凌晨2,3点才能下班回寝室,而且人也是日见消瘦,让寝室的人都以为我在华硕有了一份兼职--------午夜牛郎,纷纷向我请教这份兼职的薪水如何? 服务对象的身材相貌如何? 还招不招人? 如何报名? 还嚷着要我发工资的时候请客。让我痛骂他们有异性没人性,要他们好好反省,兄弟们的反省果然够深刻,第二天晚上我下班回来后,就给了我一个药房的地址,说凭华硕的识别证去买伟哥可以打九折,没等我说话,兄弟们又嚷看你这么拼命,反正也是命不久矣,不如趁现在还活着,干脆立个遗嘱好让他们瓜分我留在寝室的东西!
第八章 工程阿虎
阿虎是工程部的牛人,作为凯硕工程部的高级工程师,机械出身的阿虎不光机械强,连编写程序都很强,他用VB编写的全尺寸量测系统至今还在凯硕量测中心使用,放眼整个凯硕工程部,就再也没有比他更牛的人物了。
可惜他命不好,大学毕业了好多年,工作经验丰富,但从永业跳槽到华硕的工资却没有一个应届本科生高,遇到负责Moses这个机种。Moses设计本身的尺寸有问题,而RD却不肯承认,加上永业的面板又缩水,结果装配组装就很困难,可怜的阿虎在内外压迫下,只有抓一批刚到工程报导的毕业生去我装配生产线去打铁。但原始的手工打造势必不符合生产力的发展方向,所以Moses在经历十余次生产后终于移模到永业生产了,得到移模的消息后,生管,QA,装配一片欢呼,而工程部的经理Bob却随着Moses的移模,跑路了。
Bob跑路后,虎哥在凯硕工程的命运发生了翻天覆地的变化,被打入冷宫直到合同期满离开华硕,都没有再被重用过,而将虎哥打入冷宫的就是凯硕一个彪乎乎的人物--------Howard。
Howard是凯硕Staff们公认的最阴霾的台湾人,他以前是在DT当经理,当时在DT实习的本科生们就见识过他的厉害,在本科生们刚到DT实习时,他问那些本科生,有谁是为了钱来华硕工作的,凡是举手的本科生们后来都被他用各种手段逼走了。和我一起来华硕的周龙则是被他用更残酷的手段逼走的,周龙从实习到正式报到就一直被发配在生产线做作业员,每天饱受那些OP出身的带线干部们的驱使,看着他们的脸色小心翼翼的过着猪狗不如的生活。随着时间的流逝,比他后来的本科生们都分到DT各部门了,而他还在生产线上当OP,终于,周龙忍不住问Howard有没有他的职务安排,苏声和冷冷的对他说:"小伙子,你很年轻,但我们合不来,这里没你的位置,不愿意做OP,可以走人"。饱受羞辱的周龙只有交离职报告,南下投奔FOXCONN去了,半年时间里就做到了组长,工资也涨到华硕的两倍了。至那时起认识他的大本生就私底下称他为飙驴了.
飙驴要调到凯硕工程部当经理的消息传出来后,7号楼DT的本科生们一片欢呼,甚至还开了2箱啤酒庆祝。而凯硕工程的本科生们则是神情黯然. 飙驴到凯硕工程后果然掀起一阵阵血雨腥风, 他积极响应并残酷的执行施主的金企鹅计划, 收外线密码, 并计算机使用, 一时间工程陷入白色KB中. 眼看情况不妙的工程老竿子吴启干, 魏学良立刻选择跑路. 而林岚跑路时, 飙驴则毫不客气地告诉她:"你走得快, 我找替代你的人更快". 而负责EPSON机种的杨云芳则是收到飙驴的死命令:"给你三个月的时间找工作, 无伦找不找得到工作, 都不要来见我了".
不讨飙驴欢心的虎哥, 在工程当然没有什么好下场, 飙驴三句话决定了虎哥在工程的命运------"你不适合做工程", "以后不要发邮件了", "把你的个人信箱取消掉". 被打入冷宫的虎哥, 每天度日如年, 飙驴更是变本加利到连办公室都不让虎哥坐了, 可怜的虎哥每天只有在冲制现场看生产, 累了就到我装配办公区坐着休息, 和我探讨一下软件开发的心得. 那时候虎哥真是虎落平阳被驴欺. 连他的课长都看不过去了, 劝他调到DT做机构工程, 但虎哥想到合同马上就要到期, 没有答应.
终于, 虎哥熬到了合同期满的那一天, 扬眉吐气的发出了离别邮件, 离开了给他太多痛苦回忆的凯硕工程部, 到另外一家公司做工程课长去了!
第九章 罢工风云
谢老大一直很有雄心壮志, 力图将华硕的管理转变为FOXCONN似的军事化管理. 只是他忽略了一个非常现实的状况, 那就是FOXCONN的管理虽然很严格, 严格到就如同百战不败的军队一样有纪律性, 可那是靠高工资支撑起来的纪律. 在FOXCONN, 对一个STAFF而言, 每年二次的调薪机会对大家而言是透明公正的. 一年18个月的工资对每个STAFF都有致命的吸引力. 相比ASUS这边, 大本生的起步价就不到人家的8折, 而且年终奖最高也不过是一个月工资, 华硕起步就输给人家了, 却还大言不惭的说要跟竞争, 不知道华硕的高层有没有想到过, 从华硕离职出去的精英大都去了FOXCONN, 调转枪头开始不遗余力的对付华硕了。
ASUS给员工如此低的工资, 却要求员工给予很大的付出, 又要马儿跑, 又不让马儿吃草, 谁愿意如此呢? 更何况苏州这里已经不再是万恶的旧社会了, 谢伟琦却以为高压可以解决一切问题. 而防盗计划以及施主要求施行的金企鹅计划又让ASUS同仁头上的紧箍咒紧了又紧. 恶劣的工资待遇, 冷酷无人性的管理, 三座大山的压迫让表面平静的ASUS激流暗涌, 罢工的环境已经酝酿成了, 然而没有人性的华硕高层在实施金企鹅计划时竟然想到将午饭的档次下降, 降低夜班津贴, 取消三班制的休息时间, 终于导致了员工的极力反弹!
主管会议的邮件泄漏出来后, 让员工有种被愚弄的感觉, 长久以来压抑在心理面的愤怒终于爆发了, 于是公用邮箱里面拉援罢工的邮件飞来飞去, 虽然各部门的经理纷纷出来安慰人心, 但伙食变差却是不争的事实. 待到一位STAFF的离职邮件----<<再见, 我亲爱的朋友们......>>发出来后, 这种在私底下的动作终于浮上水面了. 而大家也终于开始预备在周六罢工, 还邀请南京零距离的记者来采访, 以抗议ASUS非人的环境.
老实说, 我历来都是唯恐天下不乱之人, 一旦得知有罢工行动, 这种看热闹的事情我当然不会错过, 于是那个周六我一改往常周末加班中午才去刷卡上班吃饭的习惯, 很早就起床刷卡来到公司, 就等待一旦罢工开始, 我离开趁乱下班去石路逛街, 然后再回来刷下班卡. 可惜, 那些第一批提为副课的走狗都在各自岗位上坚守, 控制着情况, 让我没有得到一点有关罢工的讯息, 没有办法去支持, 连声援都做不到, 只好非常郁闷地呆到刷下班卡.不过, 罢工风云的作用是明显的, 那就是谢伟琦被施主调回台湾了, 大家头上的一座压迫大山终于消失了, 于是那些跩得像二五八万的第一批干训的副课也知道要收敛一些了, 也没有以前那么狂妄了, 脱掉了让人看得很反感的干训服, 而谢伟琦一手组建的纠察队也解散了. 疯狗终于不乱咬人了. 走在培训中心的感觉怎一个爽字了得.
第十章 首批副课
谢伟琦在大陆时模仿FOXCONN搞了一期干训班,也就是培养一些很听话,而且执行力强到变态的人成为了副课. 可惜第一批刚训练完后, 他就因为罢工事件而被迫调回台湾了,谢伟琦式的干训也被取消掉了。后来挑选干训的干部时,就再没有选那些只有BT的执行力而没有人性的人了。不过那是后话,不提了。
凯硕清洗涂装课与装配课合并成为涂装组立课后, 一位从DT调过来的副课----Judy大人开始正式统治凯硕的涂装组立课了. 对于这位女强人, 凯硕的干部刚开始都还是比较敬佩的, 毕竟能够在这里熬了四,五年还没有自杀, 也没有精神崩溃, 而且竟然还从一个OP熬成了副课确实有过人之处. 当然也有人私下告诉我这种没有受过高等教育的人离开华硕是找不到高工资的工作, 也就只能在华硕工厂这种没有技术含量的地方混. 当然她心情不好时还可以训训手下的大本生,耍耍威风,又何必要离开呢.
Judy大人的到来,却成为凯硕干部的恶梦,也正所谓一朝天子一朝臣,连制造的经理都被Moses搞得黯然跑路,Judy大人也当然要开始逐步排挤凯硕的干部,安插系统的干部了。只是她的手脚太明显了,一碗水端不平,下面做事情的凯硕干部难免会有怨恨。
一开始就是涂装的二当家郭志辉和Judy大人发生冲突, 起因很简单: 涂装的一个OP休息时间在车间吃东西被Judy大人抓住, 结果要被记过, 而从系统调过来的干部在办公室里面吃东西却没有任何处罚! 郭志辉据理抗争也没有任何结果. 如果仅仅这件事情也就算了, 二当家郭志辉去助理那里领东西,被告之没有,碰了一鼻子灰,但是系统的干部去却马上领到。唉,环境恶劣到连助理都开始见风使舵了.
不久,老板在早会上说过厕所太脏,结果命令到达涂装组立后,Judy大人变成说厕所之所以太脏,是因为干部没有做到督导责任,要求所有的组长管理一个厕所,每天带人打扫,她负责监督。可是厕所分配上,凯硕干部却要看管使用最频繁的厕所,更为悲惨的是我一个大男生竟然分配管女厕所。唉,人在屋檐下不得不低头,咱忍吧! 可是Judy大人似乎好象很喜欢上厕所,经常叫嚣着凯硕干部看管的厕所太脏。万般无奈下,我和胡卫兵只有每天停线带人去扫厕所,停线造成的产量损失只有加班来赶,但是这种加班却没有加班费。一时间,下面的人怨声载道,眼看就要压不住了,我和胡卫兵只有绞尽脑汁想各种方法,如上厕所的人要交识别证,完事后有专人检查,如果没有弄脏厕所, 就还回识别证,不然就扣下来打扫。
可惜, 太浪费人力了, 本来在白色KB统治之下的涂装组立离职人员就如潮水般汹涌, 仅有的人力连开线都保证不了, 哪有办法抽出人看厕所. 当然重压之下必有变通之方法, 我和胡卫兵每到休息时间就站在厕所门口不让人用厕所, 于是OP们只有非常郁闷的从2楼冲到1楼上厕所, 然后再冲回来上线. 仅有的10分钟休息时间都用来跑步上厕所了, 哪有休息时间呀, 不过唯一的好处就是让OP锻炼了身体. 那段时间我和胡卫兵下班时心惊胆寒, 反复易容确保没有人能认出我们后才敢下班, 就怕出了2号门后被一群憋得得尿道炎的蒙面人砍!根据Judy大人极其BT的执行力, 我猜想到我离职那天, 看厕所这个任务都不会取消, 但是二当家郭志辉认为最多1个月, 唯有胡卫兵认为不超过2周. 为此大家还赌了5瓶可乐. 当然姜还是老的辣, 果然不到2周这个BT的命令在楼下冲制干部的一片反对声中取消了, 因为他们每天排队上厕所都快憋到得尿道炎了. 虽然姜还是老的辣, 但脸皮毕竟还是我年轻人的厚. 我不光赖掉了打赌输的可乐, 而且每到周二,周四趁胡卫兵午睡的时候就偷喝他的饮料. 结果胡卫兵午睡起来后想喝饮料却总发现饮料总是不翼而飞, 满办公室都找不到, 却只能发现喝完后剩下的饮料盒, 而这时我已经睡得口水流一地了.
第十一章 赶尽杀绝
鲁迅告诉我们"不在沉默中爆发就在沉默中灭亡"。面对Judy大人咄咄逼人的气势,让涂装组立课仅存的凯硕干部们不寒而颤. 与其在沉默中被人干掉,不如爆发,更何况"死国可乎"! 只可惜,我醒悟得太晚了,手下凯硕出身的带线干部被Judy大人更换得一乾二净, 接下来她更为残酷的手段就是把那些干部换下来踢到其它制程作OP,逼得别人只有离职走人。我突然发现在不知不觉中我已经成为装配名义上的组长了,每天除了签报废单,回8D,挨训时还想得到用我垫背外,其余就再也没有什么用处了。
那段时间,李锋伟就一见到我就拍拍我的肩膀提醒我要小心,弄得我莫名其妙,还以为这位老大突然对男人也感兴趣了。伟哥看我似乎完全没有明白自己危险的处境,只有点破告诉我Judy大人在老板面前告了我的状,说我刚愎自用,不服从管教,不适合做组长............. 最后李锋伟提醒了一下还是早做打算吧!
"狡兔死, 走狗烹; 飞鸟尽, 弓箭藏"这句古语我不是不懂, 只是没有想到"刀枪入库, 马放南山"的命运会出现在我的身上。Judy大人刚调到凯硕时一切都不太懂,全部靠凯硕干部教,可惜没想到她刚站稳就开始大规模清洗凯硕干部了。回到办公室,发现二当家郭志辉正在酝酿写离职邮件,胡卫兵也在私下上网找工作,打简历,准备找工作了。IE的两个弟兄一个为调5#厂塑料部而到处奔走,另一个则准备找工作了。
从李锋伟那里得知我最有可能调到楼下做冲制的IE后,我也开始为我的后路做准备了。先去拜访和我同样从武汉来华硕报到,又住在我隔壁的关二哥,了解楼下冲制的情况如何,得知下调IE还是给我很大台阶让我下的,虽然IE的兄弟也是人满为患。
既然要调到IE,当然要学会测工时。当IE彭为民带我到我的装配生产线去测工时,发现我测量工时的时作业员的速度明显快过他测量工时的时候,他非常高兴的拍着我的肩膀说"恭喜你,你可以从我这里毕业了",然后又用非常郁闷的口气感叹到"想不到我大学读了四年的IE, 竟然还没有你强",我也只有安慰他说"那是因为这些作业员还不知道我就快要不是他们的组长了"。
该来的那天终究会来到,Judy大人开始找我谈话了,说楼下的IE很缺人,老板要我调到楼下去支持,然后还感慨说怎么我比她还先知道要调到IE,我心里暗骂,但却只有打着哈哈说听楼下助理传的一个周五的下午,找了楼下的IE帮忙,黯然的把计算机搬到了楼下,从此离开了工作了9个月之久的装配了。
到了楼下,刚打开邮件,就看到二当家郭志辉发出来的离职邮件。一个月后,胡卫兵打着婚假的幌子到新公司上班去了,黯然到连离职都没有告诉兄弟们一声! 不久,宋立兵也如愿以偿的调到5#厂塑料部作IE了,而最后一个兄弟彭为民也被踢到DT作IE去了。至此,凯硕的干部彻底退出了涂装组立的历史舞台!
第十二章 最后时光
来到冲制IE后. 和关二哥做做移线, 顺便听他介绍楼下冲制的情况, 然后帮他做做SOP, 测测工时. 不久我终于能单独负责TR2和MA3了, 可惜刚准备大干一场, TR2和MA3就不生产了, 最后一次生产的近万台产品就积压在清洗线旁等着生锈. 热情被浇灭的我每天都没有事情做了, 按时上下班, 晚上就去关二哥或彭为民寝室看DVD, 日子过得很悠闲, 体重也直线上升. 白天上班也就是对着计算机发呆. 不过在发呆的这段时光里, 我竟然把在大学里一直没有时间研究的东西看完了, 但我却悲哀的发现曾引以自豪的英语已退步了好多!
发呆的时间是美好而短暂的,可是没有加班,仅凭那一点点财政收入是无法在苏州生活的,一时间生活陷入困苦中,这个时候关二哥特照顾的拍着肩膀对我说"等我调到5#厂威硕后,我负责的EPSON机种全部交给你做,这样你就有理由混加班费了"。听到这句话,我脱口而"关二哥, 你怎么还不调走呀?", 结果就为这句话,关二哥拿着EPSON的LinkBar追杀我跑了两条街,要不是我急中生智狂喊"嫂子救命呀!"没准还真能被他砍死后扔运河里!
不知不觉中, 新来的大本生来报到上班了,作为老员工的我也开始带新人了。想想当年带过自己的大本生们都已经离开了华硕, 我想也到了该我离开的时候了. 17个月了, 唯一的改变就是自己的态度变得越来越强硬, 硬得让人以为我每天上班前都吃了半斤伟哥. 好心人都纷纷劝我有生理疾陷就要赶紧去看医生, 千万不要胡乱吃伟哥, 会伤身体的, 然后还压低声音告诉我有认识的医生, 建议我去看, 随手还给了我一张名片, 特地嘱咐我说只要你对医生说你是华硕的, 医药费可以打八折, 反正医生也知道华硕员工没多少油水可以刮.
每天坐厂车总是看到3号门前的空地上聚满了前来报到的新员工,一个个目光呆滞, 等着被挑选,让我联想到了农市场上挑选牲畜的场面,当然每个月的12号在华硕3号门排队办离职手续的人却能够一直排到林枫苑的601车站.
终于到了该我退出华硕历史舞台的时候了,拿着离职单找老板签字,老板和颜悦色的告诉我这次给我涨了工资,劝我不要离开,然后还诱惑我说以后的工资涨幅会很大。听到这句话,心里就一阵悲哀,TMD,华硕先前干什么去了? 为什么以前干得辛苦的时候华硕没有想到给我加工资,如今人要走了,才想起来用加工资来留人。可是华硕又知不知道我去FOXCONN面试时,对方毫不犹豫地开出了一年18个月的工资,每个月3500大洋, 而且还特别强调加班费另外算,可华硕却还是天真的以为加个四五百大洋就可以把人留住.
虽然老板万般不愿意,但离职单还是被签掉了,我也能够如愿以偿的从华硕毕业了。但这次毕业心里面却没有大学毕业时那么踏实了,把识别证,厂服交给助理,办理完移交手续后,就等着9月12日去3号门办离职了,心里轻松了很多,终于可以告别一段不堪回首的经历了!

2008年6月10日星期二

高并发高流量网站架构

高并发高流量网站架构
(http://blog.csdn.net/mac_cm)
Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。但Web2.0以用户为导向的理念,使得新生的网站有了新的特点——高并发,高流量,数据量大,逻辑复杂等,对网站建设也提出了新的要求。
本文围绕高并发高流量的网站架构设计问题,主要研究讨论了以下内容:
首先在整个网络的高度讨论了使用镜像网站,CDN内容分发网络等技术对负载均衡带来的便利及各自的优缺点比较。然后在局域网层次对第四层交换技术,包括硬件解决方案F5和软件解决方案LVS,进行了简单的讨论。接下来在单服务器层次,本文着重讨论了单台服务器的Socket优化,硬盘级缓存技术,内存级缓存技术,CPU与IO平衡技术(即以运算为主的程序与以数据读写为主的程序搭配部署),读写分离技术等。在应用层,本文介绍了一些大型网站常用的技术,以及选择使用该技术的理由。最后,在架构的高度讨论了网站扩容,容错等问题。
本文以理论与实践相结合的形式,结合作者实际工作中得到的经验,具有较广泛的适用性。1 引言1.1 互联网的发展最近十年间,互联网已经从一个单纯的用于科研的,用来传递静态文档的美国内部网络,发展成了一个应用于各行各业的,传送着海量多媒体及动态信息的全球网络。从规模上看,互联网在主机数、带宽、上网人数等方面几乎一直保持着指数增长的趋势,2006年7月,互联网上共有主机439,286,364台,WWW 站点数量达到 96,854,877个 [1]。全球上网人口在2004 年达到 7 亿 2900万 [2],中国的上网人数在 2006 年 12 月达到了约 1亿3700 万[3]。另一方面,互联网所传递的内容也发生了巨大的变化,早期互联网以静态、文本的公共信息为主要内容,而目前的互联网则传递着大量的动态、多媒体及人性化的信息,人们不仅可以通过 互联网阅读到动态生成的信息,而且可以通过它使用电子商务、即时通信、网上游戏等交互性很强的服务。因此,可以说互联网已经不再仅仅是一个信息共享网络,而已经成为了一个无所不在的交互式服务的平台。
1.2 互联网网站建设的新趋势互联网不断扩大的规模,日益增长的用户群,以及web2.0[4]的兴起,对互联网网站建设提出了新的要求:
高性能和高可扩展性。2000 年 5 月,访问量排名世界第一(统计数据来源[5])的Yahoo [6]声称其日页浏览数达到 6 亿 2500 万,即每秒约 30,000 次HTTP 请求(按每个页面浏览平均产生 4 次请求计算) 。这样大规模的访问量对服务的性能提出了非常高的要求。更为重要的是, 互联网受众的广泛性,使得成功的互联网服务的访问量增长潜力和速度非常大,因此服务系统必须具有非常好的可扩展性,以应付将来可能的服务增长。
支持高度并发的访问。高度并发的访问对服务的存储与并发能力提出了很高的要求,当前主流的超标量和超流水线处理器能处理的并发请求数是有限的,因为随着并发数的上升,进程调度的开销会很快上升。互联网广域网的本质决定了其访问的延迟时间较长,因此一个请求完成时间也较长,按从请求产生到页面下载完成 3 秒计算, Yahoo 在 2000 年 5 月时平均有 90,000 个并发请求。而且对于较复杂的服务,服务器往往要维护用户会话的信息,例如一个互联网网站如果每天有 100 万次用户会话,每次 20分钟的话,那平均同时就会有约 14000 个并发会话。
高可用性。互联网服务的全球性决定了其每天 24 小时都会有用户访问,因此任何服务的停止都会对用户造成影响。而对于电子商务等应用,暂时的服务中止则意味着客户的永久失去及大量的经济损失,例如ebay.com[7]1999 年 6 月的一次 22小时的网站不可访问,对此网站的 380万用户的忠诚度造成巨大影响,使得 Ebay 公司不得不支付了近500万美元用于补偿客户的损失,而该公司的市值同期下降了 40 亿美元[8]。因此,关键互联网应用的可用性要求非常高。
1.3 新浪播客的简介以YouTube[9]为代表的微视频分享网站近来方兴未艾,仅2006年一年,国内就出现近百家仿YouTube的微视频分享网站[10],试图复制YouTube的成功模式。此类网站可以说是Web2.0概念下的代表网站,具有Web2.0网站所有典型特征:高并发,高流量,数据量大,逻辑复杂,用户分散等等。新浪[11]作为国内最大的门户网站,在2005年成功运作新浪博客的基础上,于2006年底推出了新浪播客服务。新浪播客作为国内门户网站中第一个微视频分享服务的网站,依靠新浪网站及新浪博客的巨大人气资源,在推出后不到半年的时间内,取得了巨大的成功:同类网站中上传视频数量第一、流量增长最快、用户数最多[12],所有这些成绩的取得的背后,是巨大的硬件投入,良好的架构支撑和灵活的应用层软件设计。2.1 镜像网站技术镜像网站是指将一个完全相同的站点放到几个服务器上,分别有自己的URL,这些服务器上的网站互相称为镜像网站[13]。镜像网站和主站并没有太大差别,或者可以视为主站的拷贝。镜像网站的好处是:如果不能对主站作正常访问(如服务器故障,网络故障或者网速太慢等),仍能通过镜像服务器获得服务。不便之处是:更新网站内容的时候,需要同时更新多个服务器;需要用户记忆超过一个网址,或需要用户选择访问多个镜像网站中的一个,而用户选择的,不一定是最优的。在用户选择的过程中,缺乏必要的可控性。
在互联网发展的初期,互联网上的网站内容很少,而且大都是静态内容,更新频率底。但因为服务器运算能力低,带宽小,网速慢,热门网站的访问压力还是很大。镜像网站技术在这种情况下作为一种有效解决方案,被广泛采用。随着互联网的发展,越来越多的网站使用服务器端脚本动态生成内容,同步更新越来越困难,对可控性要求越来越高,镜像技术因为不能满足这类网站的需要,渐渐的淡出了人们的视线。但有一些大型的软件下载站,因为符合镜像网站的条件——下载的内容是静态的,更新频率较低,对带宽,速度要求又比较高,如国外的SourceForge (http://www.SourceForge.net,著名开源软件托管网站),Fedora(http://fedoraproject.org,RedHat赞助的Linux发行版),国内的华军软件园(http://www.onlinedown.net),天空软件站(http://www.skycn.com)等,还在使用这项技术(图1)。
图1 上图:天空软件站首页的镜像选择页面
下图:SourceForge下载时的镜像选择页面
在网站建设的过程中,可以根据实际情况,将静态内容作一些镜像,以加快访问速度,提升用户体验。
2.2 CDN内容分发网络 CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的互联网中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,分散服务器的压力,解决互联网拥挤的状况,提高用户访问网站的响应速度。从而解决由于网络带宽小、用户访问量大、网点分布不均等原因所造成的用户访问网站响应速度慢的问题[14]。
CDN与镜像网站技术的不同之处在于网站代替用户去选择最优的内容服务器,增强了可控制性。CDN其实是夹在网页浏览者和被访问的服务器中间的一层镜像或者说缓存,浏览者访问时点击的还是服务器原来的URL地址,但是看到的内容其实是对浏览者来说最优的一台镜像服务器上的页面缓存内容。这是通过调整服务器的域名解析来实现的。使用CDN技术的域名解析服务器需要维护一个镜像服务器列表和一份来访IP到镜像服务器的对应表。当一个用户的请求到来的时候,根据用户的IP,查询对应表,得到最优的镜像服务器的IP地址,返回给用户。这里的最优,需要综合考虑服务器的处理能力,带宽,离访问者的距离远近等因素。当某个地方的镜像网站流量过大,带宽消耗过快,或者出现服务器,网络等故障的时候,可以很方便的设置将用户的访问转到另外一个地方(图2)。这样就增强了可控制性。
图2 CDN原理示意图
CDN网络加速技术也有它的局限性。首先,因为内容更新的时候,需要同步更新多台镜像服务器,所以它也只适用于内容更新不太频繁,或者对实时性要求不是很高的网站;其次,DNS解析有缓存,当某一个镜像网站的访问需要转移时,主DNS服务器更改了IP解析结果,但各地的DNS服务器缓存更新会滞后一段时间,这段时间内用户的访问仍然会指向该服务器,可控制性依然有不足。
目前,国内访问量较高的大型网站如新浪、网易等的资讯频道,均使用CDN网络加速技术(图3),虽然网站的访问量巨大,但无论在什么地方访问,速度都会很快。但论坛,邮箱等更新频繁,实时性要求高的频道,则不适合使用这种技术。
图3 新浪网使用ChinaCache CDN服务。
ChinaCache的服务节点全球超过130个,
其中中国节点超过80个,
覆盖全国主要6大网络的主要省份[15]。
2.3 应用层分布式设计新浪播客为了获得CDN网络加速的优点,又必须避免CDN的不足,在应用层软件设计上,采取了一个替代的办法。新浪播客提供了一个供播放器查询视频文件地址的接口。当用户打开视频播放页面的时候,播放器首先连接查询接口,通过接口获得视频文件所在的最优的镜像服务器地址,然后再到该服务器去下载视频文件。这样,用一次额外的查询获得了全部的控制性,而这次查询的通讯流量非常小,几乎可以忽略不计。CDN中由域名解析获得的灵活性也保留了下来:由接口程序维护镜像网站列表及来访IP到镜像网站的对应表即可。镜像网站中不需要镜像所有的内容,而是只镜像更新速度较慢的视频文件。这是完全可以承受的。
2.4 网络层架构小结从整个互联网络的高度来看网站架构,努力的方向是明确的:让用户就近取得内容,但又要在速度和可控制性之间作一个平衡。对于更新比较频繁内容,由于难以保持镜像网站之间的同步,则需要使用其他的辅助技术。 3 交换层架构3.1 第四层交换简介按照OSI[16]七层模型,第四层是传输层。传输层负责端到端通信,在IP协议栈中是TCP和UDP所在的协议层。TCP和UDP数据包中包含端口号(port number),它们可以唯一区分每个数据包所属的协议和应用程序。接收端计算机的操作系统根据端口号确定所收到的IP包类型,并把它交给合适的高层程序。IP地址和端口号的组合通常称作“插口(Socket)”。
第四层交换的一个简单定义是:它是一种传输功能,它决定传输不仅仅依据MAC地址(第二层网桥)或源/目标IP地址(第三层路由),而且依据IP地址与TCP/UDP (第四层) 应用端口号的组合(Socket)[17]。第四层交换功能就像是虚拟IP,指向实际的服务器。它传输的数据支持多种协议,有HTTP、FTP、NFS、Telnet等。
以HTTP协议为例,在第四层交换中为每个服务器组设立一个虚拟IP(Virtue IP,VIP),每组服务器支持某一个或几个域名。在域名服务器(DNS)中存储服务器组的VIP,而不是某一台服务器的真实地址。
当用户请求页面时,一个带有目标服务器组的VIP连接请求发送给第四层交换机。第四层交换机使用某种选择策略,在组中选取最优的服务器,将数据包中的目标VIP地址用实际服务器的IP地址取代,并将连接请求传给该服务器。第四层交换一般都实现了会话保持功能,即同一会话的所有的包由第四层交换机进行映射后,在用户和同一服务器间进行传输[18]。
第四层交换按实现分类,分为硬件实现和软件实现。
3.2 硬件实现第四层交换的硬件实现一般都由专业的硬件厂商作为商业解决方案提供。常见的有Alteon[19],F5[20]等。这些产品非常昂贵,但是能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了[21]。鉴于条件关系,这里不展开讨论。
3.3 软件实现第四层交换也可以通过软件实现,不过性能比专业硬件稍差,但是满足一定量的压力还是可以达到的,而且软件实现配置起来更灵活。 软件四层交换常用的有Linux上的LVS(Linux Virtual Server),它提供了基于心跳(heart beat)的实时灾难应对解决方案,提高了系统的鲁棒性,同时提供了灵活的VIP配置和管理功能,可以同时满足多种应用需求[22]。4 服务器优化4.1 服务器整体性能考虑对于价值昂贵的服务器来说,怎样配置才能发挥它的最大功效,又不至于影响正常的服务,这是在设计网站架构的时候必须要考虑的。常见的影响服务器的处理速度的因素有:网络连接,硬盘读写,内存空间,CPU速度。如果服务器的某一个部件满负荷运转仍然低于需要,而其他部件仍有能力剩余,我们将之称为性能瓶颈。服务器想要发挥最大的功效,关键的是消除瓶颈,让所有的部件都被充分的利用起来。
4.2 Socket优化以标准的 GNU/Linux 为例。GNU/Linux 发行版试图对各种部署情况都进行优化,这意味着对具体服务器的执行环境来说,标准的发行版可能并不是最优化的[23]。GNU/Linux 提供了很多可调节的内核参数,可以使用这些参数为服务器进行动态配置,包括影响 Socket 性能的一些重要的选项。这些选项包含在 /proc 虚拟文件系统中。这个文件系统中的每个文件都表示一个或多个参数,它们可以通过 cat 工具进行读取,或使用 echo 命令进行修改。这里仅列出一些影响TCP/IP 栈性能的可调节内核参数[24]:
/proc/sys/net/ipv4/tcp_window_scaling “1”(1表示启用该选项,0表示关闭,下同) 启用 RFC[25] 1323[26] 定义的 window scaling;要支持超过 64KB 的窗口,必须启用该值。
/proc/sys/net/ipv4/tcp_sack “1”启用有选择的应答(Selective Acknowledgment),通过有选择地应答乱序接收到的报文来提高性能(这样可以让发送者只发送丢失的报文段);对于广域网通信来说,这个选项应该启用,但是这也会增加对 CPU 的占用。
/proc/sys/net/ipv4/tcp_timestamps “1” 以一种比重发超时更精确的方法(参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。
/proc/sys/net/ipv4/tcp_mem “24576 32768 49152” 确定 TCP 栈应该如何反映内存使用;每个值的单位都是内存页(通常是 4KB)。第一个值是内存使用的下限。第二个值是内存压力模式开始对缓冲区使用应用压力的上限。第三个值是内存上限。超过这个上限时可以将报文丢弃,从而减少对内存的使用。
/proc/sys/net/ipv4/tcp_wmem “4096 16384 131072” 为自动调优定义每个 socket 使用的内存。第一个值是为 socket 的发送缓冲区分配的最少字节数。第二个值是默认值(该值会被 wmem_default 覆盖),缓冲区在系统负载不重的情况下可以增长到这个值。第三个值是发送缓冲区空间的最大字节数(该值会被 wmem_max 覆盖)。
/proc/sys/net/ipv4/tcp_westwood “1” 启用发送者端的拥塞控制算法,它可以维护对吞吐量的评估,并试图对带宽的整体利用情况进行优化;对于 WAN 通信来说应该启用这个选项。
与其他调优努力一样,最好的方法实际上就是不断进行实验。具体应用程序的行为、处理器的速度以及可用内存的多少都会影响到这些参数对性能作用的效果。在某些情况中,一些认为有益的操作可能恰恰是有害的(反之亦然)。因此,需要逐一试验各个选项,然后检查每个选项的结果,最后得出最适合具体机器的一套参数。
如果重启了 GNU/Linux 系统,设置的内核参数都会恢复成默认值。为了将所设置的值作为这些参数的默认值,可以使用 /etc/rc.local 文件,在系统每次启动时自动将这些参数配置成所需要的值。
在检测每个选项的更改带来的效果的时候,GNU/Linux上有一些非常强大的工具可以使用:
ping 这是用于检查主机的可用性的最常用的工具,也可以用于计算网络带宽延时。
traceroute 打印连接到特定网络主机所经过的一系列路由器和网关的路径(路由),从而确定每个 hop 之间的延时。
netstat 确定有关网络子系统、协议和连接的各种统计信息。
tcpdump 显示一个或多个连接的协议级的报文跟踪信息,其中包括时间信息,可以使用这些信息来研究不同协议的报文时间。
Ethereal 以一个易于使用的图形化界面提供 tcpump (报文跟踪)的信息,支持报文过滤功能。
iperf 测量 TCP 和 UDP 的网络性能;测量最大带宽,并汇报延时和数据报的丢失情况。
4.3 硬盘级缓存硬盘级别的缓存是指将需要动态生成的内容暂时缓存在硬盘上,在一个可接受的延迟时间范围内,同样的请求不再动态生成,以达到节约系统资源,提高网站承受能力的目的。Linux环境下硬盘级缓存一般使用Squid[27]。
Squid是一个高性能的代理缓存服务器。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。它接受来自客户端对目标对象的请求并适当地处理这些请求。比如说,用户通过浏览器想下载(即浏览)一个web页面,浏览器请求Squid为它取得这个页面。Squid随之连接到页面所在的原始服务器并向服务器发出取得该页面的请求。取得页面后,Squid再将页面返回给用户端浏览器,并且同时在Squid本地缓存目录里保存一份副本。当下一次有用户需要同一页面时,Squid可以简单地从缓存中读取它的副本,直接返回给用户,而不用再次请求原始服务器。当前的Squid可以处理HTTP, FTP, GOPHER, SSL和WAIS等协议。
Squid默认通过检测HTTP协议头的Expires和 Cache-Control字段来决定缓存的时间。在实际应用中,可以显式的在服务器端脚本中输出HTTP头,也可以通过配置apache的mod_expires模块,让apache自动的给每一个网页加上过期时间。对于静态内容,如图片,视频文件,供下载的软件等,还可以针对文件类型(扩展名),用 Squid 的 refresh_pattern 来指定缓存时间。
Squid 运行的时候,默认会在硬盘上建两层hash目录,用来存储缓存的Object。它还会在内存中建立一个Hash Table,用来记录硬盘中Object分布的情况。如果Squid配置成为一个Squid集群中的一个的话,它还会建立一个 Digest Table(摘要表),用来存储其它 Squid 上的Object摘要。当用户端想要的资料本地硬盘上没有时,可以很快的知道应该去集群中的哪一台机器获得。在硬盘空间快要达到配置限额的时候,可以配置使用某种策略(默认使用LRU:Least Recently Used-最近最少用)删除一些Object,从而腾出空间[28][29]。
集群中的Squid Server 之间可以有两种关系:第一种关系是:Child 和 Parent。当 Child Squid Server 没有资料时,会直接向 Parent Squid Server 要资料,然后一直等,直到 Parent 给它资料为止。 第二种关系是:Sibling 和 Sibling。当 Squid Server 没有资料时,会先向 Sibling 的 Squid Server 要资料,如果 Sibling 没资料,就跳过它向 Parent 要或直接上原始网站去拿。
默认配置的Squid,没有经过任何优化的时候,一般可以达到 50% 的命中率[30](图4)。如果需要,还可以通过参数优化,拆分业务,优化文件系统等办法,使得Squid达到 90% 以上的缓存命中率。 Squid处理TCP连接消耗的服务器资源比真正的HTTP服务器要小的多,当Squid分担了大部分连接,网站的承压能力就大大增强了。
4 某网站使用MRTG工具检测到的Squid命中率
蓝线表示Squid的流量,绿色部分表示Apache流量
4.4 内存级缓存内存级别的缓存是指将需要动态生成的内容暂时缓存在内存里,在一个可接受的延迟时间范围内,同样的请求不再动态生成,而是直接从内存中读取。Linux环境下内存级缓存Memcached[31]是一个不错的选择。
Memcached是danga.com(运营Live Journal[32]的技术团队)开发的一套非常优秀的分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。和 Squid 的前端缓存加速不同,它是通过基于内存的对象缓存来减少数据库查询的方式改善网站的性能,而其中最吸引人的一个特性就是支持分布式部署;也就是说可以在一群机器上建立一堆 Memcached 服务,每个服务可以根据具体服务器的硬件配置使用不同大小的内存块,这样,理论上可以建立一个无限大的基于内存的缓存系统。
Memcached 是以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,客户端可以由各种语言编写,目前已知的客户端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等[附录1]。客户端首先与 Memcached 服务建立连接,然后存取对象。每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存的时候还可以设置有效期。保存在 Memcached 中的对象实际上是放置在内存中的,而不是在硬盘上。Memcached 进程运行之后,会预申请一块较大的内存空间,自己进行管理,用完之后再申请一块,而不是每次需要的时候去向操作系统申请。Memcached将对象保存在一个巨大的Hash表中,它还使用NewHash算法来管理Hash表,从而获得进一步的性能提升。所以当分配给Memcached的内存足够大的时候,Memcached的时间消耗基本上只是网络Socket连接了[33]。
Memcached也有它的不足。首先它的数据是保存在内存当中的,一旦服务进程重启(进程意外被关掉,机器重启等),数据会全部丢失。其次Memcached以root权限运行,而且Memcached本身没有任何权限管理和认证功能,安全性不足。第一条是Memcached作为内存缓存服务使用无法避免的,当然,如果内存中的数据需要保存,可以采取更改Memcached的源代码,增加定期写入硬盘的功能。对于第二条,我们可以将Memcached服务绑定在内网IP上,通过Linux防火墙进行防护。
4.5 CPU与IO均衡在一个网站提供的所有功能中,有的功能可能需要消耗大量的服务器端IO资源,像下载,视频播放等,而有的功能则可能需要消耗大量的服务器CPU资源,像视频格式转换,LOG统计等。在一个服务器集群中,当我们发现某些机器上CPU和IO的利用率相差很大的时候,例如CPU负载很高而IO负责很低,我们可以考虑将该服务器上的某些耗CPU资源的进程换成耗IO的进程,以达到均衡的目的。均衡每一台机器的CPU和IO消耗,不仅可以获得更充分的服务器资源利用,而且还能够支持暂时的过载,遇到突发事件,访问流量剧增的时候, 实现得体的性能下降(Graceful performance degradation)[34],而不是立即崩溃。
4.6 读写分离如果网站的硬盘读写性能是整个网站性能提升的一个瓶颈的话,可以考虑将硬盘的读,写功能分开,分别进行优化。在专门用来写的硬盘上,我们可以在Linux下使用软件RAID-0(磁盘冗余阵列0级)[35]。RAID-0在获得硬盘IO提升的同时,也会增加整个文件系统的故障率——它等于RAID中所有驱动器的故障率之和。如果需要保持或提高硬盘的容错能力,就需要实现软件RAID-1,4或5,它们能在某一个(甚至几个)磁盘驱动器故障之后仍然保持整个文件系统的正常运行[36],但文件读写效率不如RAID-0。而专门用来读的硬盘,则不用如此麻烦,可以使用普通的服务器硬盘,以降低开销。
一般的文件系统,会综合考虑各种大小和格式的文件的读,写效率,因而对特定的文件读或写的效率不是最优。如果有必要,可以通过选择文件系统,以及修改文件系统的配置参数来达到对特定文件的读或写的效率最大化。比如说,如果文件系统中需要存储大量的小文件,则可以使用ReiserFS[37]来替代Linux操作系统默认的ext3系统,因为ReiserFS是基于平衡树的文件系统结构,尤其对于大量文件的巨型文件系统,搜索速度要比使用局部的二分查找法的ext3快。 ReiserFS里的目录是完全动态分配的,因此不存在ext3中常见的无法回收巨型目录占用的磁盘空间的情况。ReiserFS里小文件(<>Squid->Apache的一条处理链,Lighttpd在最前面,专门处理静态内容的请求,把动态内容请求通过Proxy模块转发给Squid,如果Squid中有该请求的内容且没有过期,则直接返回给Lighttpd。新请求或者过期的页面请求交由Apache中的脚本程序来处理。经过Lighttpd和Squid的两级过滤,Apache需要处理的请求大大减少,减少了Web应用程序的压力。同时这样的构架,便于把不同的处理分散到多台计算机上进行,由Lighttpd在前面统一分发。
在这种架构下,每一级都是可以进行单独优化的,比如Lighttpd可以采用异步IO方式,Squid可以启用内存来缓存,Apache可以启用MPM(Multi -Processing Modules,多道处理模块)等,并且每一级都可以使用多台机器来均衡负载,伸缩性好。
著名视频分享网站YouTube就是选择使用Lighttpd作为网站的前台服务器程序。
5.2 数据库选择MySQL[43]是一个快速的、多线程、多用户和健壮的SQL数据库服务器,支持关键任务、重负载系统的使用,是最受欢迎的开源数据库管理系统,是Linux下网站开发的首选。它由MySQL AB开发、发布和提供支持。
MySQL数据库能为网站提供:
高性能。MySQL支持海量,快速的数据库存储和读取。还可以通过使用64位处理器来获取额外的一些性能,因为MySQL在内部里很多时候都使用64位的整数处理。
易用性。MySQL的核心是一个小而快速的数据库。它的快速连接,快速存取和安全可靠的特性使MySQL非常适合在互联网站上使用。
开放性。MySQL提供多种后台存储引擎的选择,如MyISAM, Heap, InnoDB,Berkeley Db等。缺省格式为MyISAM。 MyISAM 存储引擎与磁盘兼容的非常好[44]。
支持企业级应用。MySQL有一个用于记录数据改变的二进制日志。因为它是二进制的,这一日志能够快速地将数据的更改从一台机器复制(replication)到另一台机器上。即使服务器崩溃,这一二进制日志也能够保持完整。这一特性通常被用来搭建数据库集群,以支持更大的流量访问要求[30](图5)。
图5 MySQL主辅库模式集群示意
MySQL也有一些它自身的缺陷,如缺乏图形界面,缺乏存储过程, 还不支持触发器,参照完整性,子查询和数据表视图等,但这些功能都在开发者的TO-DO列表当中。这就是开源的力量:你永远可以期待更好。
国外的Yahoo!,国内的新浪,搜狐等很多大型商业网站都使用MySQL 作为后台数据库。对于一般的网站系统,无论从成本还是性能上考虑,MySQL应该是最佳的选择。
5.3 服务器端脚本解析器的选择目前最常见的服务器端脚本有三种:ASP(Active Server Pages),JSP(Java Server Pages),PHP (Hypertext Preprocessor)[45][46]。
ASP全名Active Server Pages,以及它的升级ASP.NET,是微软公司出品的一个WEB服务器端的开发环境,利用它可以产生和运行动态的、交互的、高性能的WEB服务应用程序。ASP采用脚本语言VBScript(C#)作为自己的开发语言。 但因为只能运行在Windows环境下,这里我们不讨论它。
PHP是一种跨平台的服务器端的嵌入式脚本语言。它大量地借用C,Java和Perl语言的语法, 并耦合PHP自己的特性,使WEB开发者能够快速地写出动态生成页面。它支持目前绝大多数数据库。PHP也是开源的,它的发行遵从GPL开源协议,你可以从 PHP官方站点(http://www.php.net)自由下载到它的二进制安装文件及全部的源代码。如果在Linux平台上与MySQL搭配使用,PHP是最佳的选择。
JSP是Sun公司推出的新一代站点开发语言,是Java语言除Java应用程序和Java Applet之外的第三个应用。Jsp可以在Serverlet和JavaBean的支持下,完成功能强大的站点程序。 作为采用Java技术家族的一部分,以及Java 2(企业版体系结构)的一个组成部分,JSP技术拥有Java技术带来的所有优点,包括优秀的跨平台性,高度可重用的组件设计,健壮性和安全性等,能够支持高度复杂的基于Web的应用。
除了这三种常见的脚本之外,在Linux下我们其实还有很多其他的选择:Python(Google使用),Perl等,如果作为CGI调用,那么可选择范围就更广了。使用这些不太常见的脚本语言的好处是,它们对于某些特殊的应用有别的脚本所不具有的优势;不好的地方是,这些脚本语言在国内使用的人比较少,当碰到技术上的问题的时候,能找到的资料也较少。
5.4 可配置性在大型网站开发过程中,不管使用什么技术,网站的可配置性是必须的。在网站的后期运营过程中,肯定会有很多的需求变更。如果每一次的需求变更都会导致修改源代码,那么,这个网站的开发可以说是失败的。
首先,也是最重要的一点,功能和展示必须分开。PHP和JSP都支持模板技术,如PHP的Smarty,Phplib,JSP的JSTL(JSP Standard Tag Library)等。核心功能使用脚本语言编写,前台展示使用带特殊标签的HTML,不仅加快了开发速度,而且方便以后的维护和升级[47]。
其次,对于前台模板,一般还需要将页面的头,尾单独提取出来,页面的主体部分也按模块或者功能拆分。对CSS,JS等辅助性的代码,也建议以单独的文件形式存放。这样不仅方便管理,修改,而且还可以在用户访问的时候进行缓存,减少网络流量,减轻服务器压力。
再次,对于核心功能脚本,必须将与服务器相关的配置内容,如数据库连接配置,脚本头文件路径等,与代码分离开。尤其当网站使用集群技术,CDN加速等技术的时候,每一台服务器上的配置可能都会不一样。如果不使用配置文件,则需要同时维护几份不同的代码,很容易出错。
最后,应该尽量做到修改配置文件后能实时生效,避免修改配置文件之后需要重启服务程序的情况。
5.5 封装和中间层思想在功能块层次,如果使用JSP,基于纯面向对象语言Java的面向对象思想,类似数据库连接,会话管理等基本功能都已经封装成类了。如果使用PHP,则需要在脚本代码中显式的封装,将每一个功能块封装成一个函数,一个文件或者一个类。
在更高的层次,可以将网站分为表示层,逻辑层,持久层,分别进行封装,做到当某一层架构发生变化时,不会影响到其他层。比如新浪播客在一次升级的时候,将持久层的数据库由原来的集中式改为分布式架构,因为封装了数据库连接及所有操作[附录2],做到了不修改任何上层代码,平稳的实现了过渡。近来流行的MVC架构,将整个网站拆分成Model(模型/逻辑)、View(视图/界面)、Controller(控制/流程)三个部分,而且有很多优秀的代码框架可供选择使用, 像JSP的Structs,Spring,PHP的php.MVC, Studs 等。使用现成的代码框架,可以使网站开发事半功倍。6 扩容、容错处理6.1 扩容一个大型网站,在设计架构的时候,必须考虑到以后可能的容量扩充。新浪播客在设计时充分地考虑了这一点。对于视频分享类网站来说,视频存储空间消耗是巨大的。新浪播客在主存储服务器上,采用配置文件形式指定每一个存储盘柜上存储的视频文件的ID范围。当前台服务器需要读取一个视频的时候,首先通过询问主存储服务器上的接口获得该视频所在的盘柜及目录地址,然后再去该盘柜读取实际的视频文件。这样如果需要增加存储用的盘柜,只需要修改配置文件即可,前台程序丝毫不受影响。
新浪播客采用MySQL数据库集群,在逻辑层封装了所有的数据库连接及操作。当数据库存储架构发生改变的时候,如增加一台主库,将某些数据表独立成库,增加读取数据用的从库等,都只需要修改封装了的数据库操作类,上层代码不用修改。
新浪播客的前台页面服务器使用F5公司的硬件第四层交换机,网通,电信分别导向不同的虚拟IP,每一个虚拟IP后面又有多个服务器提供服务。当访问流量增大的时候,可以很方便往虚拟IP后面增加服务器,分担压力。
6.2 容错对于商业性网站来说,可用性是非常重要的。7*24的访问要求网站具有很强的容错能力。错误包括网络错误,服务器错误以及应用程序错误。
2006年12月27日台湾东部外海发生里氏7.6级地震,造成途径台湾海峡的多条海底电缆中断,导致许多国外网站,像MSN, NBA, Yahoo!(英文主站)等国内无法访问,但也有例外,以Google为代表的在国内建设有分布式数据节点的很多网站却仍然可以访问。虽然说地震造成断网是不可抗原因,但如果在这种情况下网站仍然可以访问,无疑能给网站用户留下深刻的印象。这件事情给大型商业网站留下的教训是:网站需要在用户主要分布区域保持数据存在,以防止可能的网络故障。
对于服务器错误,一般采取冗余设计的方法来避免。对于存储服务器(主要是负责写入的服务器),可以使用RAID(冗余磁盘阵列);对于数据库(主要是负责写入的主库),可以采用双主库设计[30];对于提供服务的前台,则可以使用第四层交换的集群,由多台服务器同时提供服务,不仅分担了流量压力,同时还可以互相作为备份。
在应用层程序中,也要考虑“用户友好”的出错设计。典型例子如HTTP 404 出错页面,程序内部错误处理,错误返回提示等,尽可能的做到人性化。7 总结及展望7.1 总结对于一个高并发高流量的网站来说,任何一个环节的瓶颈都会造成网站性能的下降,影响用户体验,进而造成巨大的经济损失。在全互联网层面,应该使用分布式设计,缩短网站与用户的网络距离,减少主干网上的流量,以及防止在网络意外情况下网站无法访问的问题。在局域网层面,应该使用服务器集群,一方面可以支撑更大的访问量,另一方面也作为冗余备份,防止服务器故障导致的网站无法访问。在单服务器层面,应该配置操作系统,文件系统及应用层软件,均衡各种资源的消耗,消除系统性能瓶颈,充分发挥服务器的潜能。在应用层,可以通过各种缓存来提升程序的效率,减少服务器资源消耗(图6)。另外,还需要合理设计应用层程序,为以后的需求变更,扩容做好准备。图6 典型高并发高流量网站的架构在每一个层次,都需要考虑容错的问题,严格消除单点故障,做到无论应用层程序错误,服务器软件错误,服务器硬件错误,还是网络错误,都不影响网站服务。
7.2展望当前Linux环境下有著名的LAMP(Linux+Apache+MySQL+PHP/PERL/PYTHON)网站建设方案,但只是针对一般的中小网站而言。对于高并发高流量的大型商业网站,还没有一个完整的,性价比高的解决方案。除去服务器,硬盘,带宽等硬件投资外,还需要花费大量的预算和时间精力在软件解决方案上。
随着互联网的持续发展,Web2.0的兴起,在可以预见的未来里,互联网的用户持续增多,提供用户参与的网站不断增加,用户参与的内容日益增长,越来越多的网站的并发量,访问量会达到一个新的高度,这就会促使越来越多的个人,公司以及研究机构来关注高并发高流量的网站架构问题。就像Web1.0成就了无数中小网站,成就了LAMP一样,Web2.0注定也会成就一个新的,高效的,成本较低的解决方案。这个方案应该包括透明的第三方CDN网络加速服务,价格低廉的第四层甚至更高层网络交换设备,优化了网络性能的操作系统,优化了读写性能,分布式,高可靠的文件系统,揉合了内存,硬盘等各个级别缓存的HTTP服务器,更为高效的服务器端脚本解析器,以及封装了大部分细节的应用层设计框架。
技术的进步永无止境。我们期待互联网更为美好的明天

深入理解敏捷开发的常见九大误区

(http://blog.csdn.net/mac_cm)
责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。敏捷相对以前的软件工程最大的革新之处在于把人的作用提高到了过程至上,正如敏捷宣言的第一条“个体和交互胜过过程和工具”所说的。
1、敏捷是“一个”过程
敏捷不是一个过程,是一类过程的统称,它们有一个共性,就是符合敏捷价值观,遵循敏捷的原则。
敏捷的价值观如下:
◆个体和交互 胜过 过程和工具
◆可以工作的软件 胜过 面面俱到的文档
◆客户合作 胜过 合同谈判
◆响应变化 胜过 遵循计划
由价值观引出的12条敏捷原则:
◆我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
◆即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
◆经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
◆在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
◆围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
◆在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈。
◆工作的软件是首要的进度度量标准。
◆敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
◆不断地关注优秀的技能和好的设计会增强敏捷能力。
◆简单是使未完成的工作最大化的艺术??是根本的。
◆最好的构架、需求和设计出自于自组织的团队。
◆每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。
建立敏捷联盟的17位大师所创立的敏捷方法包括:极限编程,Scrum,特征驱动开发,动态系统开发方法,自适应软件开发,水晶方法,实用编程方法。这些方法统称为敏捷方法。
其实每个人都可以从敏捷宣言和原则出发,明确问题,找出一些解决方法,形成自己的过程。我觉得国内的软件环境这么复杂,程序员的自主精神又这么强,敏捷方法应该是在中国首先提出才对,只是国人都有唯标准唯规范至上的心理定式,即使找出好办法,也觉得不规范,没有深入形成理论,无法提升高度,始终是跟着鬼子屁股后面走,我想这也是国外软件行业不成熟的表现之一吧!
2、敏捷仅仅是一个软件过程
如果仅仅从软件过程的角度去认识敏捷实施敏捷,效果不会太好。敏捷相对以前的软件工程最大的革新之处在于把人的作用提高到了过程至上,正如敏捷宣言的第一条“个体和交互胜过过程和工具”所说的。
涉及到人的问题,就已经不再是过程所能覆盖的了,就到了企业管理的层面上了,包括企业的价值观和文化。这也是敏捷在国内实施的最大障碍:
把客户当作合作伙伴而不是对手,从客户角度出发去想问题,充分的跟客户沟通,而不是出了问题推诿责任。目标是让软件实现客户的价值,而不是收钱就完事儿。
把人的能动性调动起来,给动力而不是给压力。
要实用而不是要规范。让开发人员理解并实施,体验到敏捷的好处,而不是盲目机械地实施规范。
没有绝对的权威,每个人都有可取之处。
3、迭代就是敏捷,UP属于敏捷。
看到这么多人都把UP归入敏捷,我都开始怀疑是不是自己搞错了。但是在我的印象中:
UP是重型的过程,虽然引入了迭代,但是其原则和价值观与敏捷是不同的。敏捷注重的是反馈,迭代周期尽量的短,重在客户的参与,通过客户的参与,获取持续的反馈,不断调整使整个项目走在正确的方向上。同时也给客户一个感受和思考的机会,因为对于大多数客户而言,目标是明确的(不排除有些客户目标也不明确),但是具体怎么做,开始时是没有想法的,只有看到具体的东西的时候,才知道“噢,原来可以这样,那我想把这里调整一下”。
4、敏捷是彻底革命的。
敏捷,特别是XP,让人有耳目一新的感觉,觉得以前的所有软件工程理论,设计方法都可以抛弃掉了,推翻一切,从头再来。抱着这种想法实施敏捷,那就错了,敏捷不是“石头里蹦出个孙大圣”,以前的软件过程中也有敏捷的影子,只是没有像敏捷一样上升到价值观和原则的高度,比如快速原型法。敏捷是在对已有的软件过程方法的改进,抛弃的是传统软件工程低效的外表,以往的软件过程中很多技巧都是很实用的。实施敏捷应该以现有的软件过程为基础,从敏捷宣言和原则出发,利用敏捷的方法来改善过程。
5、敏捷是反文档的。
文档只是为了达成目标的一种手段,如果这种手段是低效的,那就换一种手段。可是完全抛弃了文档,怎样解决沟通的问题?难道你想每次沟通都完全用手比划,用嘴说,跟不同的人重复表述同样的想法,那样更是低效的。
应该清楚文档的本质是把知识显性化。在一个项目中存在很多需要沟通的知识,知识具备两种形态,显性的和隐性的,传统的观念是尽量把隐性知识显性化,即文档化,而忽略了这其中的代价(特别是更新同步文档的代价)。
因此,在实施敏捷的时候,需要在团队内明确哪些知识是必须显性的,这些知识可以通过文档交流。哪些知识是可以隐性的,这些知识则完全可以通过口头的方式进行交流,以达到沟通的最佳效率。
文档不是目的,有效沟通才是目的。
6、为了敏捷而敏捷
“嗯,敏捷这么好,我们也敏捷吧”,可能很多人会有这种想法。忘了以前是在哪儿看的大师采访录:
Q:“我们现有的过程很好,不知道怎么用敏捷改进?”
A:“既然很好,那就不要用敏捷”。
做什么事情都要有明确目标的,敏捷虽好,得看你需不需要,能不能解决你现在头疼的问题,如果不是,那就不要给自己找麻烦了。
7、敏捷是CMM的反义词
在讨论中,很多人把CMM作为敏捷的反义词,我觉得这不是很合适。CMM只是一种衡量软件成熟度的标准,并非过程,和敏捷不是一类概念。如果要给敏捷找一个反义词,我觉得传统的瀑布式开发应该更合适一些。
并且,我认为,如果CMM还能继续流行下去的话,应该会有公司可以用敏捷改善的过程通过CMM认证。
8、敏捷是自由的,无约束的。
敏捷强调的是自组织团队,发挥人的能动性,以动力代替压力,让人有绝对自由的错觉。但是应该清楚,凡事都是要讲究一个平衡,人也是两面的,消极的一面和积极的一面同时并存,绝对的自由会放纵人消极的一面。敏捷并非是绝对自由,无约束的。作为管理者,有一个职责,就是引导团队成员用自己积极的一面去压制消极的一面,不能放任团队中出现搭便车的现象,否则将打击整个团队的士气。如果实在无效,那就只能将其排除出团队了,这个惩罚够有约束力吧?
9、重做就是重构
重做不等于重构,很多场合这两个概念是混淆的。但是在敏捷中,重构的一个特征是必须可控的。当对系统结构进行大的调整时,如果没有测试驱动辅助的话,那么可控性就会很差,这不能叫做重构。

2008年6月2日星期一

设计你的软件人生

设计你的软件人生

(http://blog.csdn.net/mac_cm)


站在全球软件行业的最前沿.黄皮肤黑眼睛的他们大都经历了同样的道路:海外求学、海外就业、加入微软。在2004微软中国技术大会上,在本报和微软合作举办的第三届软件人生座谈会上,来自微软总部的十八位华人顶尖技术高手汇聚一堂,共同品味软件人生的酸甜苦辣,探讨职业生涯的成功之道。
在全球最大的软件公司里,一名成功的程序员应该具备什么素质?怎样设计自己的职业生涯能达到人生的最高效率?在女性通往优秀程序员、优秀团队管理者的道路上有何障碍和优势?
从专注成就的顶尖技术高手到明星风采的专家,再到屈指可数的女性高管,他们的人生经历或许能给你带来些许感悟。
软件生涯,人品先行?
郭旭:最近我报刊登了一篇文章,对注重人品的招聘原则进行了评论。各位认为人品的好坏对工作到底有没有影响?为什么人品这么重要,什么品格是微软最赞扬、最提倡的品格。
朱敏:我不完全同意这个说法,人品是第一位的,但人品不是一次面试就能够判断的。最关键是团队机制能够让一个人成长,通过几年的工作培养人品和能力更重要。
郑全战:我认为人品挺重要的,例如这个人如果比较孤立,没有团队精神,将导致他不能很好地跟大家共事。
王志峰:在微软每次面试之前人力资源部都会给我们发一个E-mail,说这个过程需要看重这个人哪些方面,我从来没有收到哪个E-mail说是要注重人品。我感觉人品是职业道德问题,职业道德在美国社会已经被认为是最基本、最底层的要求。从人品角度来讲要看大的社会环境,人品是跟很多因素相关的,当企业管理者在发现员工缺乏职业道德的时候,要想一想企业是不是为之创造了好的环境。
毕德兰:人品是一个感觉。在面试时交谈五分钟就可以感觉到,然后可以用一些技巧来证实这些感觉是否正确。在国内国外都是同样的情形,有经验的面试人很快就可以看出来,不需要长时间的判断。在选择人的时候,技术上很多时候不可能找到一个完全想要的人,所以在技术上很多是大概差不多就可以了。人品很重要。
郭旭:哪些品质是必须得有、或者是最值得推崇的?
刘朝勇:我1997年加入微软公司,我觉得最重要的是要敬业,要敢于承担责任。另外是团队精神有时被高估了,以前在我们组有一个同事技术能力非常强,分配给他的活能够很快干完,虽然团队精神有所欠缺,但是我们还是非常尊重他。
吴峻:作为一个工程师,你面对问题,从哪个角度来考虑——是从客户利益出发,还是自我保护,我觉得这是人品具体的表现。一个人品比较好的工程师对工作很认真,对错误敢于承认,同时对责任不推卸,他和团队中其他人的合作就会非常容易。
李丹:要有应变能力、独立工作能力。我做面试时很喜欢问一个问题,你的老板叫你找一本书,明天早晨给他,你会怎么样去做?我看他能找出多少种方法,你每说出一种我都会否定,就看你有没有独立工作的能力。因为在微软工作没有人牵着你的手下一步该怎么做,独立工作能力是必需的。
毕德兰:最重要的是热爱和专注。我们是做IT的,如果他对于这份工作很热爱,那么从字里行间行为语言上都会完全表现出来。我希望一个人专注,专注的人不会随随便便会走歪道。
素质与角色
如何才能成就完美人生?不妨说说你的看法.
郭旭:能力跟角色定位很有关系。希望各位介绍一下你们自己是什么样的角色,需要怎样的个人素质?
吴家震:我主要做测试,做测试很重要的一点就是怎样从用户的角度来看产品。这是和大学或者研究院里教的很不一样的地方。我们大多数人是从程序、代码来看这个产品。这是我感受最深的一点。另外一点,就是怎么样把效率提高。你一定要追求最好的,如果你这一次追求了最好的,下一次就会更好。
郑全战:我以前做开发,现在做项目管理。大家过去理解,做开发不要求太多跟外界打交道的能力。但是从做项目管理的角度看,如果开发人员有更好的沟通能力,整体效率就会提高很多。
王克刚:微软是非常开放的,我很喜欢这个文化,能够让你避开短处,慢慢地长处就凸显出来了。如果你在一个部门里面不太合适,也可以到别的部门去,公司也鼓励你这样做。
李丹:我在做测试。在微软,鼓励大家选最有热情的领域去做,去了解各个岗位。人在岗位轮换中老接受挑战。做测试的人第一要有合作精神,第二要很有条理,另外需要很好的沟通能力:要跟项目经理沟通,跟各种环境沟通。而且你是代表公司在测试软件,要有敢于挑战设计的精神。
栾跃:在微软做项目经理要专门上一门课,叫怎样鼓动其他团队帮助你工作。要让那些人愿意死心塌地地为你做,这很不容易,是很大的挑战。
郭旭:创业者是软件人群体中非常大的一个部分。大家如何看待创业的问题?
栾跃:这是一个非常好的话题。我们讨论到目前为止,只是讨论怎么样成为一个好的雇员。还有一方面我们没有提到,甚至我认为是中国教育对下一代培养缺少的,就是创业。中国有多少大学毕业生大学还没有毕业就把一个很好的概念转化成商业概念?好像只有一个。不能等到大环境好了才开始教育,应该从现在开始教育。学校在培养下一代时不光要有好的人品、个性,要懂技术,还有很重要的一点,要把中国人创造智慧的才能从技术转换成为财富,这方面的培养应该是高等教育很重要的一部分。哪一天我们的技术能够创造中国的微软,创造出中国的雅虎?
郭旭:各位如果回来创业,成功率相对大,因为你们有人脉、有经验、有积累。鼓励刚刚毕业的学生出去创业是不是操之过急?
肖维:我们不是鼓励每个人都去创业,因为每个人的性格、能力都有不同。在设计人生时,应该考虑到自己是什么样的人,要扬长避短。如果你真的想创业,要意识到创业需要学习哪些能力。人的学习能力要很强,但是要意识到自己的不足。不是说所有的人都要去创新,但是中国IT行业要想健康发展,一定要有一批带头人。
李丹:不是说各样条件都具备了才能创业,一定是你有这种热情:克服一个个困难,把这个事情做成。在中国,很长一段时间还是培养高级打工仔的概念,认为读书越多越好。
郭旭:大家能不能告诉那些把人生目标定为以软件为职业的人,在求学过程中应该注意哪些东西,让他们少走一些弯路,更快地成长。
郑全战:在大学时一定要往前看,眼界要开阔一些。看一看哪些东西是前沿的,有可以突破的地方。对好学生来说应该做到一点,他可以看看中国微软研究院这边在做什么样的课题,你是不是可以跟他们联络,看看这方面的资料,特别是研究生。你也可以参与,我知道很多人给开复写信要资料。这种人往往能够跟上时代潮流,前沿科技能够很快了解到。
肖维:我比较赞赏以色列,这个国家本身资源不是很多,但是出了很多创新的小人物。有别人没有的东西,这样才会比较有前途。
王克刚:给想当好开发人员的大学生们提个建议:要把自己的追求弄清楚,到底在一生中要追求什么。假如不知道的话先把这个找到。如果一定要用软件来致富,先分析一下在这种环境下、这种法制下,你能不能成功了。
李丹:跟社会环境有关系,像美国那个环境比较好,主张的是人热爱什么一定要去做什么。在中国。从我小的时候就想什么东西能够赚钱,我们出去留学哪个专业会赚钱——从实用主义出发,而不是从个人的爱好出发。
定义成功
郭旭:今天的题目是设计软件人生,大家对成功的定义都不太一样。
李丹:我刚才想讲的是大环境问题。怎么样定义成功?我们老是说好像要开公司就成功了,或者是在大公司里面做到什么样的职位就成功了,这样的话太绝对了。要鼓励年轻的学生,让他们真的放开,不要为了社会舆论、社会的承认做什么东西,而是为了自己的理想、为了自己的热爱去做,这样做的话总会成功的。我也是走来走去,最后走到这个行业的。
毕德兰:我觉得大家都说得很好,但是我是比较无为的人,很多时候还是顺其自然,不给自己太多压力。做学生的时候,我觉得无忧无虑的很好。要设计,但是不要太强求。说实在的,两年前没想到一定非到中国来不可,但是一有这个机会,也很希望在中国这个产业上能够做点儿事,我就回来了,不一定说我非要怎么样,我觉得做人不要这么辛苦。
王克刚:我想苦不苦每个人都是不一样的,最根本的你要问你自己,如果一个钟头以后你就死了,在快死前你后悔了,后悔我没到中国来过,后悔没有开发软件,后悔我没有自由自在地生活过一段时间。那就好了,你想做这个就去做这个。
栾跃:最关键的还是心里的热爱,如果你的爱好是周游世界你就去做。微软很多人到最后自己把微软的职位辞掉,去中学当老师,或者开一个小作坊。也不是说在这个行业走到头了,而是他觉得这边没有热情了,就改一个路做其他的,也不见得很赚钱,就是喜欢。我有一个同事做得很好,突然间辞职了,想去做跟IT完全没有关系的急救员。他放弃了这么多,重新去学校学他想做的事情,做他想做的事情。这还是一个大环境不一样,中国和美国的文化还是有区别的。
栾跃:我有一个同事很特别,他就喜欢研究骨头,后来辞掉工作专门去研究骨头。所以做你喜欢做的事情,只要开心就好,不要给这个社会创造太多的失望者。
吴家震:绝大多数人其实并不知道将来做什么,当你大学、研究生院毕业之后很多人并不是很清楚。你看这个世界上特别成功的人、特别成功的大企业不是说设计出来的,这些人是当机会出来时可以抓住它,所以专业知识的积累、管理知识的积累都是一个从量变到质变的过程。一定要有一个催化事件,这是可遇不可求的东西。我们也有一个杰出工程师,他一生做了很多不一样的工作,他当过厨师,去采购玉米,去南非给人家烧过两年煤炭,20多岁,原来学的是林业,二十七八岁才学的计算机。他自己定的目标是:30岁之前不要有真正的工作。因为他当时不知道自己要做什么,他一直在寻找,找到之后把自己的全身心都放进去了。他30岁开始做计算机,现在50多岁。我觉得不要给学生、年轻人有很多的压力,只要是做自己高兴的事情就好。
栾跃:苹果公司的创始者写的自传,题目就是:整个旅程就是我最终的报酬,而不是我达到的目的地作为报酬。甚至很多美国年轻人宣扬一种论调,当我还不知道做什么事时就做各种各样的事,最后再定下来。但是我这边讲的不是告诉所有做软件的人,把这个世界玩够了以后再决定干什么。还有一个,真正的成功并不是随机发生的。大家知道微软的历史。大家道听途说就认为比尔·盖茨退出哈佛大学去写程序,然后就成功了。其实不是的。微软的启动历史是,比尔·盖茨在辞去大学之前,在1960年读了一本书,有比较成型的想法,但是他们一直等到1968年英特尔的新CPU出来,才决定放下手中一切工作开发这个软件,决定开公司。
关于年龄
郭旭:好多人说,做软件是吃青春饭,做几年之后就基本上改行了,做得好就改做管理,做得不好就做其他的。也有很多微软的程序员想一辈子都做编程。年龄、经验对程序员工作有没有帮助?
李丹:在微软也有很多很年轻的程序员,20出头。在软件行业一定要有开放心态,要锻炼自己的基础能力。不像一些传统的行业,要成为这方面的专家,要一辈子都干这一行。微软给我们提供一个大环境,例如做项目经理做厌了可以做开发。
肖维:我觉得这个问题有两个方面,一个是能力方面,一个50岁的人能不能编程?我认为是没有任何问题的。问题的另外一面你到50岁时,以你能够获得的酬劳,在中国还值不值得编程?我想三十几岁的人就面临这样的问题。在中国,很基本的程序员收入能不能让他在30岁或者是40岁甚至是50岁时还觉得满意?
栾跃:这是企业方面的问题,很多国内企业的领导都问,怎样才能保持员工的积极性?年纪大了,做到三四十岁觉得钱不够了就不愿意做了是常见的现象。
郭旭:但是对于企业来讲,要考虑运作的成本:同样雇一个能够实现我这个工作的人,老员工费用比较高,而一个大学生刚毕业几年,费用比较低,自然企业会雇新人。经验值能不能带来真正的价值?
栾跃:经验值应该可以带来价值。我今天课上就讲到了软件真正开发好的话,效率是很大的,关键就是怎么管理运作流程。经验多,在执行流程和规章制度、执行管理政策方面就可以起到正面作用。
肖维:如果真是很优秀的人,一个人可以比十个人更加有效率。我们组里现在有两个级别非常高的纯开发人员,级别和收入比我们的经理还高很多。他们写东西至少比别人要快两到三倍,经验是很重要的。
栾跃:技术人员首先要明确,做技术是不是你真正热爱的?如果并不是你的兴趣所在,只是为了赚钱,那还不如不要做了。如果你真正对软件开发热爱的话,完全可以在技术的道路上走下去,而并不是说我要赚多少钱。第二个层面,作为企业来讲,也应该为技术人员创造一个可以继续发展的前途,而不是说如果人家想赚更多的钱就非得停止技术来做管理。包括微软在内,很多比较先进的企业采取两个序列并列的方法,技术和管理两条线都可以上升到很高的职位。对那些很想做技术,也适合做技术,不想做管理的人,就让他由技术路线上升到很高的地位,赚很多钱,而且可以得到很多人的尊重。设计软件人生,很重要的一点是技术人员应该意识到自己的工作是崇高的,是很伟大的一份工作。如果没有这个热爱只是看着钱来的,还不如早点儿离开。
专注,成就顶尖高手
唐朝晖,微软总部商业智能部门Microsoft SQL Server的项目经理(a lead program manager)。1996在法国获得博士学位。在有关数据库的相关会议和期刊上发表过多篇论文,并合著了数据库的相关书籍。
戴着眼镜,一件简单的衬衫,外形敦厚的唐朝晖看起来像一个最普通的程序员。他说话速度很快,谈起太太总是一脸的骄傲。你无法从唐朝晖年轻而充满朝气的外表中看出,这是一位全球数据挖掘领域顶尖级专家。
从上世纪九十年代初开始做软件到现在,十多年已经过去了。唐朝晖觉得自己做得不错的一点是认可数据库领域的发展方向,并专注于此。他从硕士开始,到博士到以后的工作,都专注在数据库领域。“有的人做事情变换快,这样就很难积累,应该尽量做些垂直的东西。软件行业面很大,但是期间有很多垂直的东西,你可以积累,变成专家。”唐朝晖认为,选对方向有一定的偶然性,但是也有必然性。例如现在就业机会不错,每个人都面临职业选择,哪种机会对自己更有积累应该成为一个判断标准。
1996年博士毕业的唐朝晖就职于一家欧洲公司,后来因为太太的原因来到美国。五年前,他在一个学术会议上发表演讲,被猎头看上并挖来微软。唐朝晖认为,被看作是技术人员成长重要途径的发表文章和演讲,关键在于和人的交流,而不要关起们来写程序。
在微软的五年时间里,唐朝晖评价微软的升迁之道,认为抓住一个有潜力的产品很重要。
“微软的特点是有很多小的产品在做,每个人都很有机会随着产品成长起来。但是对于一些相对稳定的产品,机会就不如成长型产品。”
“在微软这段时间对我自己最有收获。因为我学到很多东西,有很多产品项目管理的经验。每天做的事情是新的。我心里很有成就感,因为我设计的东西影响这么大的市场,在我们这个专业领域里,我可能是屈指可数的几个专家之一。”
“至少在未来三年,我会坚持新版本的开发,但是之后的安排,完全取决于我的家人。我太太在美国做医生,也混得很好,她说,为什么要和你回国?你在家里带孩子也是可以的。所以五年以后我还没有想好,现在国内公司找我的特别多。说不定有一个很好的机会,说不定我太太愿意回国。我可能会做职业经理人,但是退出数据挖掘领域,机会成本比较大”
唐朝晖这次回国在北京和上海走访了很多软件公司,包括外资、合资以及人们自行创业的公司,甚至包括原来微软的同事创办的公司。唐朝晖总的感觉是开发人员的年龄普遍都很小,“在微软,大部分的开发人员是我这个年龄的人。我们有一个同事是韩国人,他原来是一个教授,后来不想做教授想编程序,就因为自己喜欢。他就是一个程序员,已经四十多岁了,我们都对他很尊重。” 35岁的唐朝晖在欧洲呆了十年,在美国呆了五年,“在我们那个年代,国内和国外差别很大,所以出国还是很有收获,但是现在国内很多公司的管理经验和国外差不多,所以在国内也很有收获。”
屈指可数的女性高管
棕色挑染短发,蓝色套服,右手习惯性地插在口袋里,这位款款行来的中年女性庄重沉静,让人很难和印象中身穿T恤、活泼开朗的微软人划上等号。
她是微软中国技术中心(CTC)的负责人毕德兰,1981年到美国,2003年回到中国。毕德兰在大洋彼岸工作已有二十余年,而其东方女性的温婉恬淡却依然不改,与人们印象中IT行业快节奏、重表现的行业特点格格不入。毕德兰是微软为数不多的女性高管之一,探索毕德兰的成长之路,或许你会对性格与职业的适应性有新的认识。
毕德兰1981年到美国,读完硕士以后在华盛顿州工作,七八年后搬到西雅图。期间做了十年技术,之后转做管理,亦有十余年。2003年7月,毕德兰和先生带着两个孩子从美国搬到北京,开始了她在北京的微软生涯。
毕德兰读书时自认不善于和人打交道,想一辈子做技术。刚进入微软时,技术功底扎实的毕德兰学习快,加上独身一人在美国所培养起来的独立精神,因此随着行业经验的增加,使得她非常有自己的独立想法。在互联网热潮时,微软很多人都跳槽去了互联网公司,职位晋升“这才轮到我”,毕德兰说,“我当时觉得自己肯定不行,老板说,那你先代理试试吧。”这一试一路坦途,成就了一名微软优秀的女性高管。“这都是机缘。实际上,一个女人结婚以后管先生,生了孩子以后管孩子,都是积累管理经验啊。”
在上升到中层管理职位后,先生的支持使得毕德兰从来没有面临过工作与家庭的平衡问题。在成为高层决策者后,毕德兰发现,在中层强调的是表现能力,到了高层,强调的是决策能力,是与人沟通的能力。
从来没有计划要做管理职位的毕德兰成为一名优秀的女性高管,而这份工作,也挖掘出毕德兰从来没有意识到的自身的潜力。毕德兰介绍,即便在美国,IT行业的女性也相对少——职级越高,女性越少。毕德兰把一个公司的员工分成高中低三个层次,其中,初级职位上女性不少,但是到了中层以后,很多女性因为家庭原因,放弃了在工作上的努力。另外,IT行业所谓的成功,都是要好强、独立、有思考能力,这与传统女性从小受到的家庭教育相悖,而当她看见自己前后左右都是男性的时候,也很容易产生放弃努力的想法。到了高层,也就是三十到四十岁,女性要继续努力就更难,“男人好像是酒,越陈越香;女人是醋,越老越酸”。
在座谈会上,毕德兰很少说话,“我在听,听完以后表达自己的意见。而且最后说可以博采众长啊。”不说话的毕德兰在一席热火朝天的讨论者间显得突出,“但是这并不意味着我没有激情,只是我和别人的表达方式不同而已。”
在强调沟通和自我表现的今天,毕德兰的这个特点并没有使她遭遇职业发展的瓶颈,“我幸运地遇到了一位好老板,我的老板不认为说话少是一个缺点。实际上,老板并不一定认为说话最多、最响的人最好。大家都争得面红耳赤时,实际上没有人在听你说什么,因为大家都在急着表达自己的观点。而且,说话少、但是有自己观点的人会使老板觉得成熟稳重,敢把责任交给你。比尔·盖茨就不会说话,但是大家都很尊重他。”
“年轻人要有自己的选择,而选择一位赏识自己的好老板可以把你带得很远。”恬淡温婉并不意味着懒散和慢节奏。“我很喜欢上班!在生完两个孩子之后,我都是一天都没有耽误就去上班了。因为我不想与技术脱节,想尽量早地工作,我喜欢在办公室。” 现在在北京的毕德兰白天工作,下班回家带孩子,孩子睡了以后再继续工作,所以经常凌晨两点还在网上,周末是她补充睡眠的重要时间。
比起空降兵,毕德兰更喜欢自己培养人,但是CTC还不能给她这样的空间,“在CTC没有这样做过,因为业务需求的紧迫性使得我们不能等上五年。”毕德兰对于跳槽太多的人,主要判断两点,一是他是否属于有信心有耐心的人,二是看他的职业生涯是否每一步都在做正确的决定。“每一步都是每个人自己的选择,你是否对自己有规划和判断都体现在这里”。毕德兰认为,履历表能够决定录用与否的50%以上,而剩下的面试,则主要是观察一些软性素质,“如果可以和我很舒服地吃一顿饭,那么这个人被聘用也就差不多了。所以我们一般都会安排一次午餐。”
毕德兰对于中美员工的差异感触很多。“美国的员工刚毕业就很有独立思考的能力;中国员工聪明听话,但是不善于独立思考,领导说怎样便怎样,这样使得领导的责任感很重。在美国,做一个决策前,我向大家咨询,美国员工就会不客气地提出很多不同意见;但是在中国,员工大部分没有意见,领导提出一个决策,他便去执行。因此在中国要做头脑风暴,很辛苦,大家都在等老板做决定。中国的员工对老板没有信任感,一切都在等你做决定。”
明星般的技术专家
9月17日下午,微软中国技术大会的第一天。在最大的分会场门口,一位身穿浅黄色微软衬衫、平头的年轻人背着一个硕大的书包,被人围得水泄不通:
“测试人员的绩效考核如何进行?”
“在微软,如果计划在4月30日要完成10个BUG,但实际才找到7个是要被老板骂的!”年轻人回答问题斩钉截铁。
“这个方法有问题!”提问人不接受。
“但非常有效!”年轻人不容置疑。
“每个项目都面临工期紧、人员不足的问题,怎么办?”
“要沟通!管理不完全是科学,更是艺术!”
“微软的测试都是一对一吗?我们公司是二十对一!”
“那把你的老板叫来听我的课,我把他臭骂一顿!”
这位明星般的技术专家是微软项目经理、中国事务办公室经理栾跃。
“栾跃你好!我是周业,非常感谢你对我的帮助!”一位年轻人挤到栾跃身边,感激地说。这是一年前在微软技术大会上听过栾跃讲课的创业者,他得到栾跃电子邮件地址后,给栾跃发去了寻求帮助的电子邮件,得到栾跃持续不断的支持和帮助。现在,他的项目越做越大,公司已经从十几个人发展到四十几个人。“祝贺你事业上的成功!”栾跃热切地鼓励他。
时间已经是下午3点了,栾跃还没有顾上吃午饭,今天的午饭估计是泡汤了,但是栾跃似乎很习惯这种生活。栾跃计划写一本关于软件工程管理的书,李开复博士为他写的序已经就绪,但是这本已经耗时两年的书还没有诞生。“写书很难,因为工作非常忙,只能用中午吃饭、晚上下班和周末的时间写。老婆抱怨说,你天天干嘛,搞到半夜12点。非常累,很辛苦。本来想今年8月交稿,不过现在还差一两章。”
栾跃还没有写完的一两章的内容是有关国内大学应如何培养技术人才的观点。栾跃认为,教育不仅是培养人编程序,更要智商和情商并重。栾跃非常赞同李开复博士关于人品的观点,开复老师专门面对大学生的网站就是栾跃帮助建的。
“中国技术人才的培养不仅是技术能力,还有与人交往的能力、领导者风范、做人的品德。不能只是为了挣钱不顾一切。在海外,普遍中国人在与人交往上能力要差一点。我发动他们改变自己,他们说:‘要我们去和美国人交往,去说服他们,这是我的短处。为什么要用我的短处去和别人的长处比?’改变,这是他们害怕的事情。中国人在海外普遍还是比较害羞。印度人就不一样,非常强硬,善于沟通。”
除了微软的项目经理,栾跃还担任一个职务是微软中国事务办公室经理,主要任务是洽谈执行与国内政府、企业的一些合作项目以及促进微软的一些项目到中国做外包。他刚刚完成“振兴东北,培训中国东北100位企业家”的一期活动,“我安排他们和星巴克的营销副总裁见面,是希望通过了解星巴克怎样把一杯咖啡卖到全世界,而认识到传统老工业如何走向新的发展,国外企业又是怎样让自己的品牌突破地域的限制,怎样利用懂别国文化的人去打开其市场,怎样利用全球资源去提高自己企业的效率。”
栾跃的工作中还有一个很重要的部分就是把微软做的一些项目拿到中国来,做外包。微软成立了一个推动中国软件外包的小组,任务不仅包括对中国企业的培训。由于很多美国媒体没有正确地宣传中国,因此很多微软高层还对中国有错误认识。栾跃希望能把尽量多的微软高层带到中国来,让他们看看中国的真实情况。
无论是与高层政府官员的接触,还是与同事的交流,栾跃都强调一点:管理是艺术,而不仅仅是科学。
“我们每周的例会都鼓励明星,批评工作不好的人。这牵涉到微软文化很重要的一点,即作为一个项目经理,你怎样去管理人家,尤其是在你对人家没有行政管理权利的时候。这件事情的原则重要的是与人交往的能力。例如,有的人,你要指出他的问题必须要关起门来谈,如果当众批评他就会认为你冒犯;有的人,你必须在大庭广众之下批评,不然他不买你的账。不同环境要采取不同处理办法,我也是干中学,学中干。在过去我是一个好好先生,别人说不行,我就算了。现在我也变坏了,别人如果不干活,我就告他的老板,他的老板就会去说他。”