做软件这行,加班就是家常便饭。做了这么多年程序员,我还真没听哪个说公司不加班的,碰见好的不时、偶尔加班,差的就是无尽的加。加班是那么的邪恶、令人作呕,但又无法抗拒,它仿佛就像嫖客患上梅毒——摆脱不了的,只不过早晚的事。有什么办法,谁叫你选择做程序员的,既然做了代码工人,那就萎缩地任命吧,别想逃避,除非你不想要这个饭碗。
我们为什么会加班?这是每个做程序员的都会提的问题。其实加班很多都是源于工期与任务的不匹配,软件这个特殊的行业,本身存在太多虚拟的东西。我们的设计,构造在哪里?在代码里;代码又在哪里?在人的脑袋里;在脑袋里的是什么?是你的想象、臆造。
客户永远看不见软件实施过程中的生产环节,因为软件不像生产磨具、牛奶那样存在一个可视、直观的作业流水线,软件的创作流水线很多就是存在于程序员的大脑中,客户唯一可以直观看见的东西就是计划文档,进度报告,实施过程描述等。看着这些图表勾勒、文字描述,客户是无法想象出工期结束你到底能交付什么样的东西?你做的东西是否就是他所想要的?生产中你是否存在偷工减料?等等诸如此类的各种想法,他不想看你给他的需求分析,软件设计,系统流程,当前更不想去看你用ABC拼凑出的code。在这样的无奈中,如果你与客户建立了良好的相信度,那还好办,若不是,那他当然只有担忧了,因为谁都不愿意花了票子,买个假货、次品。他现在可以相信的就是你的诚信,你唾液横飞吹嘘出来的那些成功案例。
我经历的项目里,很多工期都是定在3-4月间,唯一做个一个1年多的地税项目,那都是老板的强大背景,不然是不可能的。客户付钱越多,担心的越大,它害怕自己的票子白白流失,如果真的是那样,他的日子就不好过了,弄不好有可能要掉脑袋的。因为客户不可视的生产过程,加上对创建方的综合实力忧虑,他当然会在招标期间缩减整个项目的周期。这样他可以减少太多无助的等待,越早看见你的产出,才能及早地辨别出软件的吻合程度,对于不佳地方也能更快地指出。
客户预定的工期缩减,必然造成承建公司加大人力成本的投入,那你的老板最终可获得的最大利润必然减少。老板们都是金钱的“嗜血鬼”,他才不会傻乎乎地听你使唤,投入更多资源。他会装糊涂不知,直接告诉你,“时间就是这么多,合同都签订了,没法改。如果你不能按时完成,不是时间的不足,而是你的能力所致,水平有限“。最终结果就是项目经理(或项目负责人)们为了表现自己的非同一般,必定调整那些合理的开发计划。
为了能按时交工,schedule中的工期被缩减,每个step中的任务量,被迭代、整合,每个执行任务的source依旧是那些。面对这样的plan,傻子都看得出来,一天8小时的工作时间如何能完成,一周5天的工作日如何够用。加班吧,项目经理被老板的幕后推手拽出来了(我曾经就是扮演这样的角色),他开始用自己虚伪的言论蛊惑你,“兄弟们,这段时间大伙辛苦点,好好干,等熬过这段,项目成功了,那我们日子就好过了,年轻轻的,这点苦算什么啊,想当年。。。。。”,再听下去,应该有人跳起来抽他巴掌啦,还是不说了。说白了,项目经理这是在告诉你这班你是加定了,就像大街上的妓女一样,你想要,爷们儿要上,你不想要,爷们儿也要来。付了钱,卖了身,你还能选吗?
鲁迅说,“时间就像海绵里的水,只要愿挤,总会有的”,现代达人们,将其杜撰为“时间如女人的乳沟,只要你挤,都会有的”。有了这些神助的言论,老板们当然不会放过,这样他们压榨员工剩余价值就有凭据了嘛。加班吧,免费加,干好拉,我请大伙吃饭,要是不干的,卷铺盖,走人。
我们为什么需要加班,因为这班就是给人加的,你是人吗?我是,那就是加吧,甭废话!!
(注:本人文章均为原创,转载请注明出处!20100615写于深圳。)