这篇文章从我2014.6.20从百度离职以来已经拖了20天了,足见我的拖延症已病入膏肓。本来打算今晨起来看德国打巴西的球赛,结果睡前忘了把手机取消静音没听到闹铃等到自然醒已经4:40了,一看比分就震惊了,完全就是微信表情包里那个震惊的表情,连忙发微信给罗2没回我估计这家伙已经洗洗睡了,赶紧倒头继续睡。
可是北京的天亮的早,窗外已是明亮如昼,睡意就像巴西的战斗力和求胜欲一样消失得无影无踪,脑子又停不下来,不断地在那里翻箱倒柜想人想事,索性起床打开电脑开始码字,把这篇实习感想给写出来,不负半年时光。
一般我向人介绍我在百度的工作有三种方式:对于像我老爸老妈这样的人,我就简单粗暴地用三个字概括“玩电脑”;对于一般的不懂技术但知道百度的人,我依然用三个字概括“写代码”(用码农高傲的自嘲方式);对于和我一样懂技术搞IT搞CS的人,我会说我在百度是做“前端工程师”。
Front End Vs Back End
很多人对web前端的的理解就是个“画网页的”,就像初高中网页制作课程里教的用front page或者Dreamweaver来制作网页,我还很清楚地记得初中里用Front Page做关于杭州西湖十景的网页,那种web1.0的印象完全就来自于那西湖十景的网页。当然咯,作为一个高霸上的前端工程师,虽然我们的工作确实就是“画页面”或者说“切图”的,在我们自己眼中前端可是个狂拽酷炫叼炸天的东西。随口说出IE6、7、8、9、10、11的各种bug和特性;一看到一个页面首先不是看它的内容而是肉眼看它的网页结构,这边忘了清除浮动,那边左对齐少了10像素,看到一个酷炫的动画或者页面就忍不住打开控制台偷看下人家的代码,顺便吐槽下控制台中打印出的各种bug(#个人认为前端是最容易学的技术,因为所有实现技术都是可见的);如果你觉得上面的还是很Low,那么用JS写抢票插件、刷课机、爬虫、页游、钓鱼木马,跨域攻击、甚至是后端的基于NodeJS的开发,通过对程序设计语言的设计和改进,现在几乎没有JS做不到的事情了。
前端工程师这一职位基本只出现在新兴的互联网公司里,在传统的软件公司几乎没有这一说法。国内的前端界也涌现出越来越多的人才和高手,Github上的开源库里也有不少国内开发者贡献了很多高质量的repo或者code。但是奇怪的是,虽然行业里大家普遍认识到前端的重要性,但是无论是薪酬还是同行评级上前端总是排在后端的后面,仿佛生来就是矮人一等。比如百度的年终考核评优,基本都是后端同学占优的情况,用句俗语讲,都是同一个爹妈生的,差别咋就这么大呢。
关键还是个产出的问题。毕竟在人家眼中的前端就是个“画网页的”,除了把设计师的PS设计图转化为实际的网页你其他的产出基本为零,而后端同学则每天接触着各种后端框架、数据库、hadoop、性能优化等东西,一方面对业务的掌握理解肯定比前端同学深刻,另一方面在工作汇报时也有很多点可以说,相反的,有些前端同学在诸如半年工作汇报时只能说我上半年切了XX个页面。。这自然而然地造成了经理在评价时的“偏心”。
当然前端还是有很多其他产出的。比如我们组的SJ同学一直在研究“浏览器指纹”的事,即提取不同浏览器的特征来在前端识别当前用户所使用的浏览器版本来提高用户识别率,最后他的工作也被其他部门的同事使用了,受到了广大人民群众的一致好评;再比如其他组的YB和LL同学,都是上海研发中心的前端高T(好像是T7,T是百度这边的技术等级,一般新手是T3,T7在上海也没多少),他们做我们整个联盟的前端框架设计和开发工具edp的设计,产出就这些,没有业务相关的东西,但却是至关重要、不可替代的工作。
做前端有个比较讨厌的地方就是你的工作环境基本只限于北上广这种互联网公司密集地,在二三线城市对于前端的需求还未形成规模,所以像LL同学想回老家发展,但老家那对前端需求不大,只好乖乖地留在上海买房买车做个新上海人。
高效的办公和合理的项目管理
在百度感受比较大的一点就是作为国内甚至世界上数一数二的互联网公司,拥有数不胜数的用户产品和商业产品,总员工数超过两万,如何在拥有这么多员工的情况下高效地开展项目是一个很大的问题。而这半年来我的项目感受是通过实践敏捷开发的思想这里的工作效率还是挺高的。产品经理(PM)写市场需求文档(MRD),设计师(UE)根据MRD设计出网页页面,后端同学(RD)同学根据MRD来进行后端业务逻辑啊的编码,前端同学(FE)根据MRD和UE图来实现前端的业务逻辑,并实现和后端数据服务的通信,项目经理(PM)统领整个项目,组织会议,排定项目工序和时间,和项目设计到的其他组和部门沟通,为团队成员争取需要用到的资源。
由于PM同学和UE同学大部分是在北京的Office工作,沟通不便,开会都需要电话会议,平时有什么直接联系也要打电话和内部IM沟通。但这丝毫不影响这个团队的进度,通过公司内部一系列标准化的流程,像评审、站会、提测、CodeReview等,你只需要在每个需要你来完成的节点上高效地完成你的工作即可,其他的部分交给流程去处理即可。
其实这就是个职能高度细分的结果。在小公司或者创业公司,往往一个人身兼数职,俗话说“不懂运维和设计的RD不是好PM”,或者是现在很火的一个词叫“全栈工程师”(Full Stack Engineer)。这个实践的好固然是极好的,哪个老板不希望雇佣一个十八般武艺精通的员工,但是另一方面如果只是做到各方面都略懂,可能在某些情况下其实是个鸡肋,关机时刻顶不住,扛不了。职能细分的优点在于每个人都高度专注于项目的某一块,在其位,谋其政,常年的经验积累很容易让人成为这一领域的专家。另一方面从心理学角度讲,一个人的精力是有限的,同时做好几件事的效率难免会打折扣。就像我们要花一百个圆和一百个正方形,你是让一个人左手画圆右手画方做一百次还是让他先画一百个园再画一百个方,从时间和完成质量上来说我想大部分情况下我们都会选择后者。
KPI考核制度的囹圄
KPI一词是我在百度第一次听到或者之前听过但没重视过。KPI全称是Key Performance Indicator, 中文意是企业关键绩效指标,用来对员工的工作进行考核。就像学校里用GPA来衡量学生在校期间的表现,企业也需要一套对员工来考核制度以便在员工升值、加薪、奖金等关键利益问题上有一个工人的标准来评判。
但就像我们在学校里看到的那样,GPA固然成了奖学金评定、升学录取资格排名的关键因素,但它的存在也让有些同学很“学霸”,让有些同学变得很圆滑势力,忘记了原本求学追求知识的目的。KPI也不例外。一个部分内部也有很多小Team,比如之前说的PM,UE,FE,RD等,每个Team的KPI都是不一样的,这就造成了实践工作中KPI至上的思想,也就是我是为了完成我的KPI指标而去工作的,和我KPI无关的工作我大可不必参与和关心。
这就造成了整个团队的方向不一致性问题。以物理学中一个经典问题为例:多个外力作用于一个小球,只有当这些外力的方向完全相同时合力的大小为最大,小球的加速度也最大。KPI的存在让整个团队的外力始终无法一致,团队的效率当然也无法达到最大。
我亲身经历的一件事就是北京的UE团队和上海这边的FE团队关系在一段时间内搞得很差,原因很简单,两边的目标是不一致的,所以难免会出现工作上的延迟(为了去做另外一件目标内的事),当这种差错一增多,双方的怨气自然就起来了。
所以说KPI不是万能的,厂长(李彦宏)在内部大会上也表示要去KPI化,但是另一方面没有KPI是万万不能的。东郭先生总是有的,如果没有一个考核机制能将实干派和东郭先生区别开来,那么最后就是人民公社的下场,所谓的“吃资本主义大锅饭“。
这让我注意到企业管理真是一门很大的学问。小公司大家彼此知己知彼可能好些,大公司两万多个人,如何合理地设计一个考核制度,让人才浮出来,淘汰不适合公司发展的员工,如何在量化指标和感性管理间平衡。真是三百六十行,行行有学问啊!
狼性文化的再思考
狼性文化不是百度首创,国内很多互联网公司渐渐地都在倡导。按照厂长的话来说,狼性文化有三点含义”敏锐的嗅觉、不屈不挠奋不顾身的进攻精神,群体奋斗“,把“狼性”文化的对立面定义为“小资”,认为“有良好背景,流利英语,稳定的收入,信奉工作只是人生的一部分,不思进取,追求个人生活的舒适才是全部”的人就是“小资”。
如果从一个公司领导者来说(不管是传统的企业家、资本家还是现在的互联网公司CEO),最大化每个员工的工作产出就意味着公司整体收入的最大化。大公司人浮于事的现象在所难免,每个人在公司其实就是个螺丝钉(创业公司招贤纳士时一个常用的口号就是:在这里,你绝不个螺丝钉),作为一枚螺丝钉,可能不会去想自己什么时候当上VP,而会更多地想如何干完手头的工作,下班后和同事、朋友、家人去哪吃喝玩乐。
狼性文化从好的立意来理解是一种“居安思危”的实践,是调动员工生产积极性的手段,从坏的立意来讲其实是压榨劳动人员剩余价值。。
但是管理层忽略了一点就是一种文化的形成不是领导人喊几句口号就万事大吉了的,真正的文化的实践者还是公司的每一个员工。对于一个职场人士来说,更关心地是自己的薪酬、与同事的关系、部门乃至公司的发展前景,工作其实就是个养家糊口的事。有多少人把自己的工作当成一种事业去看待、去实践,至少我所见的寥寥无几。
所以我发现百度(甚至是互联网圈)里技术人员的流动性相当大,有些刚进来做了一个月都不到转头去了另一家公司,有些做了几年但由于去年年终奖金拿得少转头就跳槽了,有些确实呆了很久了薪酬待遇都不错但觉得呆腻了或者需要更多的挑战也相继跳槽去了其他公司。总之,有句行内话就是涨薪的最好办法就是跳槽。
匆匆而过的半年
很多公司招Intern只招六个月以上的,起初我还不怎么理解,等到快结束时自己回想确实有些道理。走之前的几天堃总一直对我说舍不得你啊,已经上手了正要贡献生产力时却得走了。六个月足以让人充分地融入一个公司的文化、一个部门的工作流程、一个项目的开发中去。这六个多月里我负责开发了不少模块,也Ci了很多代码,bug也改了不少,总之能达到一个入职员工的生产力水平。
这半年的时间除了写代码还干了些啥呢?参加了公司的hackathon比赛,参加了拔河比赛,和同事们出去聚餐,吃遍上海的小龙虾,带同事们去复旦的食堂吃饭,和其他部门的PM们聊天,聊他们的产品和我的看法,本来还打算写公司内网的专栏,后来一想万一丢大了可不好就放弃了。
最重要的一件事是:想清楚了自己将来到底想要做什么。