Vincent 的个人资料HYC照片日志列表 工具 帮助

日志


5月26日

Is writing code the major activity in your daily job?

很快就有好几个新同事要到我们团队了。现在大家都很忙,只好我平时抽时间准备一些讨论很久要做的帮忙新同事熟悉公司开发环境的材料了。这样对大家都有好处,他们可以更快熟悉一些我们已经觉得是常识的东西,我们也可以节省很多时间在手头紧急的事情上。
 
刚才在做这个事情的时候,加入到了一个为开发人员提供培训消息的内部邮件列表去。它自动给我发了封欢迎邮件,里面提到它服务的是"developers, developer-testers, developer leads, and development managers -- essentially those who write code as the major activity in their job."。虽然这个组看起来很让我喜欢,但我很怀疑这句话的准确性。
 
在公司呆了这几年,基本上我没见到有dev manager写代码的。dev lead倒是要写些代码,但绝对不能是重要的模块。道理有很多了,我觉得最为重要的有两个。一是不同位置有不同关注。Leads要花很多精力在design/code review, schedule and resources allocation, communication and collaboration, people...一大堆事情。Manager就更多别的事情做了。所有做的这些事情目标只有一个,让整个团队可以更加高效准确的把任务完成。所以说各司其职的情况下,这些人实在不能保证有足够多的时间在写代码上,所以当然也不能去做重要的模块了。另一个原因也很简单,不能跟自己的employee竞争。Leads的任务是让每人都各施所长,要保证他们都有机会闪光。如果把最重要的抢去自己做了,剩下些鸡肋给别人,自己可能成为超人的同时,整个团队都会觉得没意思,productivity自然高不了。没人有机会证明自己很强,谁又会为你的团队干活呢。
 
看上去是不是好像做lead或者manager很有趣的样子?可是我越来越想做回一个developer了。并不是说我不喜欢现在这个工作,只是我觉得我还没有enjoy够写代码的乐趣。加入这个团队半年了,我才写了区区几百行代码,还比不上我刚到公司的时候为了赶deadline一个晚上写的多。虽然还是得学很多以前没接触过的技术,做很多design review, code review,但没有代码写还是觉得怅然若失。特别是我们现在同时要做好几个项目,而且都很小的样子;一个多月后队里更是要有五个新人加盟,我还得考虑安排每个人要做的事情,更加没机会写代码了。有所得必有所失,这就是机会的成本。
 
中国人历来讲学而优则仕。这也可能是我们这几个月来社会招聘困难的重要原因。在中国的大部分公司里,开发做得好,代码写得牛,自然都会跑到管理的路去了。不然跟朋友聚会,别人说哎呀,你做这些年了还是developer中关村挖沙阿?某某都director了。顿时就会被郁闷了。所以我们发现大部分的candidates都基本上把基础和coding都忘得差不多了,我们招聘自然难多了。而且我和几个朋友平时聊天时大家都感觉很多被录用的社会招聘来的developers,并不见得比校园招聘来的好用多少。究其原因,还是一个机会问题。这得看平时的工作内容能让我们得到多大的锻炼和进步了。另一个侧面也反映了走技术道路的难度。如果说平时大家做得东西都差不多,都是些技术含量不是特别高桂木规模和影响不是很大的事情,凭什么你能说明你比别人高了好几个级数?既然技术道路不好提升,就只能扎堆去学而优则仕了。所以要在技术上更上层楼,或者去一个大的且有稳定的business ownership有很多技术革新空间的团队比较合适。不过话又说回来,技术其实真的不是大部分团队成功的首要因素,虽然它极其重要。如果不能急用户所急,供用户所必须,不能很好把握市场变化,代码写得再好,设计做得再漂亮也是难逃被淘汰的结果。
 
罗罗嗦嗦了一大通,离题万里了。其实只是想发泄一下想写代码又没得写的郁闷罢了。还好,我们单位对技术道路和管理道路都是一样的重视的。说不好几个月后,等我们这个新团队运作得比较顺畅的时候,我也像志科一样,跑去做回一个developer,再狠狠写它几年代码,哈哈。
5月13日

日写代码三千行,不辞长做挖沙人

前天下午有幸面试了一位仁兄。这哥们号称在大三的时候,三个月里写了十万行C/C++代码。我大吃一惊,莫非老天见怜我们几个月来招人不易,特地送上一个cyt级数的神人?
 
几个月前大老板叫我统计一下读书期间写过的代码量,因为他要做一个关于中国学生的演讲。我实在是比较的菜,算来算去连课程大作业等都算上去了,从大二算起,六年时间也就写了约摸四万行C/C++。回想起来,已经是逃了无数课熬了好些深夜才有了那个我现在称之为Old Garbage的目录。和这位大哥比起来,简直是萤火虫拿去比皓月,不值一晒。代码写的最快的时候莫如大三的时候帮老陈做的第一个东西,VB的代码,即学即写,吭哧吭哧一个月写了快两万行代码。质量那是不能提,冗余重复代码到处都是,bug更是一大箩筐啊。中国牛人遍地,像我这样的平均偏低水平也只能这样了。然而据说微软程序员平均一年也就产出三千行左右代码而已。不过我现在知道其实在一个软件开发的工程中,编码的时间是不算长的,跟PM/Tester/Manager/Peers扯皮的时间倒是不短。没法拉,要做一个客户喜欢而不仅是自己喜欢的东西不容易。
 
似乎扯远了,回头看看十万行代码三个月意味什么。如果他已经是一个domain expert,三个月里每天都不休息都得每天写一千多行新代码。如果不是,翻看要求文档技术文档以及遇到什么难缠的bug看哪儿不顺眼要重构一把之类要花去的时间怎么也得最最起码也要两三个礼拜吧?十万行阿这可是。。。所以结论是一天得写超过一千五百行新代码。再看文件大小,算它平均一千行25K吧,十万行就是2M多。看个1M的小说就得花不少时间了,还只是看,别说写了。。。所以结论是这哥们如果改写小说,一定比黄易高产的多,呵呵。
 
其实,用代码量来衡量水平高低是一个危险的事情。有代码数量还得保证代码质量,这个道理其实挺浅显的,只是不知道为什么还是那么多人非得以短期写过多少万多少十万行代码为荣。有两件事情我印象比较深刻。第一件是在我刚来的时候我第一个老板对我说的,错误的人可能写大部分的代码,因为如果整个团队质量抓得不紧,质量比较差的人往往先完成了模块编写,不管有多少bug,他会闹着去写另一个模块。他告诫我不要成为这样的一个人。当然显而易见,按照公司现在的流程,这样的人也比较难找到,哈哈。第二件是发现公司居然有bug jail这么一件有趣的事情。如果一个developer手上有了一定数目的bug,可能5个可能10个可能更多,就得被关进bug jail里不允许写新的代码了。当然,实行起来还是可以比较灵活变通的。不过我后来发现除了些非常严格的团队,真正实施bug jail得团队也不多。
 
罗罗嗦嗦了一大通不知所云,字数不够以一篇小学作文结尾吧。小明早上上学看见一条特别可爱的狗,于是他叫唤道,狗狗过来有吃的。小狗却不为所动。小明继续叫唤,狗狗过来有吃的,狗狗过来有吃的。。。(省略一万字)最后狗狗过来咬了小明一口扬长而去。作文完毕,谢谢观赏。
5月10日

最愚蠢的莫过于生气愤怒与责怨

今天早上又为了一件小事情和女朋友吵架。她在绍兴买了两个镇纸,放在我的包里。我的包有几个口,她找了半天没搜出来。我感觉最难受最委屈的是她埋怨我不知道把它们放哪儿了,然而其实是她自己亲手放进我的包里的。我顿时觉得心头火起,一脚踹烂了储物小阁的门。然后把刮胡刀往洗手盆摔去。最终大家不欢而散。什么事情都没有解决,她还是埋怨我,我还是觉得冤枉委屈。
 
刮胡刀其实被摔到有一处卷了起来,然而我并没有发现。结果刮胡子的时候把脸上一块皮都刮掉了。。。
 
一扇小门一块脸皮,哈哈,当做是一个教训吧。我这段时间以来很容易发火,特别是对着我女朋友的时候。不知道这个是不是传说中的亚健康了。虽说我脾气历来很暴躁,但是以前读书的时候绝不会那么容易就暴怒。
 
所以匆匆写了这页谨记那块被刮掉的皮。时刻提醒自己,愤怒生气责怪等等根本就解决不了问题,只会让问题更加严重。以后我要是再控制不了自己的脾气,每发火一次,罚我一个礼拜蓬头垢脸不许刮胡子好了。