我们称之为工作经验的东西

前几天有博文视点的编辑让我帮忙给某牛人写的一本新书的样章提提意见。看了大纲和样章,又去作者的blog看了看。在膜拜大牛的同时又不觉有些感慨。“果然还是学生啊”,我想。

然后我又转念一想:我居然会这样想!

一直以来我都以出国读书,做学术为目标,现在看着这些东西,就好像看着以前的我自己。回顾这工作的一年里,感觉自己确实学到了不少东西,又或者说并不是学到了什么,而是印证了一些早就知道的东西。前天7月13号是我刚好入职一年的日子,之前写了一长篇不怎么淡定的工作体会,但是却没有冷静地总结和记录一下这一年的收获。趁着世界杯结束,工作也稍微闲下来一点,总结一下吧。

而总结下来其实很简单:精确,精益求精,时刻准备好迎接挑战。

做事要精确。用数据说话,这是很多公司都会教给你的东西。人在一起工作,不像在学校里搞科研,自己一个人凭着猜想搞,直到最后要发表点什么了,才想起来做个实验跑点数据出来补在paper的末尾。而在国内,这些数据有时候都是伪造的。但工作不同,工作中免不了合作,虽说是共同利益,但也免不了会有意见不统一的时候,而这个时候就需要说服别人。如何说服别人是一门艺术,但我想首先引用一段《软件随想录》里面我很认同的话:

老实说,只要有两个以上的人待在一起,就会有政治。这很自然。我说"不搞政治"的真正的意思是"不搞恶性的政治"。程序员早就练出了对公正有非常良好的判断力。代码要么能运行,要么不能。坐在那里争论代码是否有问题,这是毫无意义的,因为你可以运行代码,答案自然就有了。代码的世界是非常公正的,也是非常严格有序的。许许多多的人选择编程,首要的原因就是,他们宁愿将自己的时间花在一个公平有序的地方,一个严格的能者上庸者下的地方,一个只要你是对的就能赢得任何争论的地方。


在程序员的世界里,说服别人最有力的办法就是使用数据。

而当初的我是不知道的。记得某一次跟PM讨论一个产品特性的时候,我向他表达了我对于该特性将使得用户的浏览器cookie体积变大的担忧。“我能理解……”但他接着问:“你能知道cookie会变得有多大么?”我顿时语塞,坑坑巴巴在纸上算了半天,然后跟人解释,结果最后的结论是:这事没有那么严重。

是的,表示自己知道这件事很容易,但如何评估他的影响,如何精确地做出权衡之后的选择却不是很容易。也可能是我读书时学校里的老师都太好糊弄了吧,虽然知道这个道理,但却一直没怎么实践过。自此之后,我才慢慢地就培养起了一种习惯。凡事先拿出数据,讨论之前就想想别人可能问什么问题。就好像备战一样,只有准备充分,你才能得到自己想要的东西。又或者说:在你拥有足够说服人的数据之前,不要开口

做事要精益求精。这一年里,我受到的最深刻的打击就是:原来我在学生阶段什么挑战都没有遇到过。

一个东西,光做出来只能叫实验品,做好了才能叫做产品。为什么有的软件免费都没有人用,而有的软件可以卖钱,抛开商业模式不谈,区别基本上都在于质量。在学校里做的事情,往往只要求能运行,能展示,对于稳定性,可扩展性都没有要求,遇到实现不了的东西完全可以绕过,反正最后要的不过是论文上的一小段描述性文字和几行数据而已。但产品不一样,光做出来不行,还得够稳定,能扩展,还有那些你能提出一万条反对意见但是就是绕不开的客户需求,而挑战就在这里。

在学生时代,我也是个代码爱好者,可我的大多数代码都是一次性代码。一方面是因为自己写的程序既没有前期需求文档也没有后期的QA,写到哪里算哪里;另一方面,当时确实是有太多的时间可供挥霍。例如我在本科和研究生时期就分别拿perl写了两套不同的在线足球经理游戏,而这些代码现在看来,说好听了就是玩具,说难听了就是垃圾……

有时候盯着自己写的自认为完美的代码看是很无聊且很让人昏昏欲睡的,直到QA报告说程序在测试中崩溃了或者结果完全不对了,你才能打起精神来一行行地检查,最终发现原因是一个粗心的错误或是一个未处理的分支。这个时侯你才恍然大悟,仿佛眼前的代码立即变得漏洞百出,一伸手就能自己又揪出好几个bug,拍着脑袋说:唉,怎么能犯这种错误。

现代计算机的运算能力已经让重编译和执行变得简单,编译器或解释器的排查功能也非常的智能化,所以比起曾经在纸上写程序的前人们,我们不自觉地就会粗心很多,而这样其实是有问题的。如果一个产品需要通过不断地在运行中发现问题然后修改,那么损失的不仅仅是时间,还有别人对你的信心。就好像某水果公司,可能就缺乏一个足够精益求精的设计设和一个足够负责任的QA,否则怎么能新产品刚开始卖就发现手机信号会被手掌屏蔽这样的笑话级bug。

要时刻准备好挑战。计算机互联网行业其实是一个很不稳定的行业,在100次请求每秒的情况下工作得很好的服务器可能在1000次请求每秒的时候就挂掉了,现在看来完全合理的逻辑可能三个月后就变成了bug。同时,一串看起来跟你不怎么相关的邮件讨论,可能几天后就变成了一个指派给你的产品需求。所以说有些时候我们说关注big picture并不是说让你一个小工去帮头头们想事,而是为每一个有可能需要你面对的新的挑战做好准备。

有闲时看看也许跟你的任务不相关的内容,尽量搞清楚每一封发给你的邮件说了回什么事。只有这样你才能慢慢地了解你所在的这个经济实体的运行状况与盈利模式,从而明白自己做些什么以及怎么做才能为公司同时也为自己创造最大的价值。

===============下面是扯淡的分割线=======================

说完做事,说说自己生活上的一些改变。

最大的改变就是球踢得少了。公司倒是组织了不少活动,羽毛球,瑜伽班……但是必然都是那种对人数和场地要求都不那么严格的活动。别说足球,可能就连篮球赛都组织不起来了。我曾经在午餐的时候跟老板开玩笑说,咱们公司成功做大的标志,就是咱公司内部能组织起一支足球队。这件事情可能大公司好点吧,但是确实是所有人在工作之后就不再有那种不管日暴雨淋都能拉一帮人去踢大场的动力和激情了,这可以说是我工作之后最大的遗憾,也是最舍不得学校的地方。

钱挣得有过去的十倍多,但是却没有那种什么都不缺的感觉了。在学校的时候感觉自己除了钱,什么都不缺,工作之后就会感觉自己什么都缺,包括钱……

突然发现自己的时间少了,也许占用自己时间的不仅仅是工作,还有上下班的路程。但总之就是你没有时间发呆,没有时间灌水,甚至都没有时间学你很有兴趣的新技术了,这是一个很可怕的事情。

于是做计划变得很重要,如果每次你闲下来都要先花半小时想清楚下面干什么,那你基本上不可能完成任何事情。这个时候,你就需要把大的计划划分成小小的片段,每次做一点点,然后还要有办法不断地提醒自己去做。最简单的方法莫过于贴在电脑上的便签条了。

当然也有一些我觉得不错的应用和工具可以推荐。最近试用了了一下Gmail的task list功能,从用户体验来说,觉得非常合适,一条条编写自己想要做的事情,一回车就新开一条,其实有时候日程不是那么重要,要的就是有东西能时时提醒你得做点什么。很惊异自己为什么没有早点发现它。以前还曾经用google doc来记录自己的读书列表,现在直接也用它了。比起桌面的便签应用,他可以让我在多个地方同时使用,而比起其他的网络应用,它就在我查email的页面里面,又方便得多。

还有一个值得推荐应用就是ReadItLater。这个应用说来功能特别简单,就跟它的名称一样,让你read it later。因为每天我都要从rss reader或者别人的分享里阅读很多东西,有些技术资料或者有意思的东西来不及读完,或者需要较长的时间消化就可以把它加入到ReadItLater的list里,这样我在上班的时候发现有意思的东西都可以记下来,下班了或者是闲了的时候,直接打开这个list就能找到感兴趣的东西来读。读完之后打个勾它就从list里面消失了,以后还能在已读存档里面找到,非常的方便。这样也算是对自己的阅读时间做了一个动态的规划,使得我不必因为害怕以后找不到了就在每次偶然发现什么好东西时都停下来当时消化,极大程度地保证了自己工作的连续性和计划性,同时也省下了无聊时四处瞎转悠找资料看的时间。

这个应用有Firefox插件,安装之后在你访问google reader时还能直接在每个feed条目上生成一个小箭头图标,让你一键保存到read it later list里面去。另外还有Iphone,Android,Blackberry,Palm等平台的移动应用,可以让你随时随地阅读。(Symbian S60V3用户再次怨念地飘过……)

好吧,好像就这么多了。发现自己代码写多了,码字的时候也有了是不是回去校对修改的习惯,但往往把字句都改得不通顺了,可能学理科太多年了,那种写流畅文章的本事已经不复存在了吧。

本文网址:http://blog.perlfect.me/2010/07/15/a-little-bit-work-experience.html

comments powered by Disqus