身为一名程序员,为什麽我老是活得比狗还累?

vgtr 9年前
 

最近是真的累了。不知不觉之间,已经两三个星期没有健身,感觉身体很难受,接下来的日子必须强制自己按时健身,按时休息,不然真的是不知道哪天就挂了。

过去一年多,我仗著自己年轻的身体,对电脑的热情,在工作上多使用蛮力,仿佛一个使用朴素演算法实现的程式,吭赤吭赤跑个不停。一开始,朴素演算法还能在指定的工作时间内完成任务;后来任务越来越多,工作时间之内肯定没法完成,我开始窃取时间,以更长的时间换取任务的完成。我知道这不是一种科学的工作方式,但是在那种时间压力、任务压力之下,也是无可奈何。

无论如何窃取时间,一天总归只有 24 小时。无论如何使用蛮力,也做不到不休不眠。迟早有一天,任务会多到让人感觉厌倦,只是没有想到,这种情况来的这麽快。

这种厌倦感已经没法抑制了,小学妹说我最近很萎靡,前辈也说我看起来很憔悴。有一次吃完饭回去的路上,前辈不经意间问道,为什麽我们干活干的这麽累。也许是职位的不同,作为主管,前辈需要更多优秀的工程师,更多优秀的应届生和实习生。当时我只是苦笑,回答不上来。

后来想想,是啊,为很麽我们干活干的这麽累?前几天去舟山的路上,我看完了久负盛名的Rework,中译本名叫《重来》(台湾中译本为《工作大解放》)。自恋一点,我也是一个优秀而高效的研发工程师,为什麽却被工作打败了?为什麽我们一群在「顶级」网路企业工作的优秀工程师,才服务了区区几万用户就已经累成狗,人家 37signals 几十个人就服务了几百万的用户?

先给自己打脸。

沉迷工作是企业文化中广受讚颂的一种「优良做派」。我们知道工作狂热衷于通宵达旦、加班加点,甚至在办公室打地铺。这些人以累死在项目中为荣,对他们来说,再大的工作量也不在话下。

工作狂的行为不但没有必要,而且愚蠢至极。过多的工作并不带把你对项目更关注,也不代表你做了更多贡献,这仅仅意味著你干了更多活而已……

工作狂的存在使那些不以加班为乐的员工感到无所适从。在工作狂扎堆的企业环境裡,就连「按时上下班」都让人觉得是一种无理的要求了……

工作狂不是英雄,他们没有力挽狂澜,不过是浪费时间而已。真正的英雄早已想出办法、搞定一切,然后回家了。

Jason Fried《重来》 卸负篇-工作狂

时间

关于码农的工作时间,有一个臭名昭著的说法是「弹性工作制」。虽然没有硬性的时间规定,但是也有一个约定的时间是 9 点上班 6 点下班,至于传说中的「把活干完之后没人管你干啥」永远只是传说。换个说法,就是上班时间可以比 9 点晚一些,下班时间一般不早于 6 点。在这九个小时中,排除中午吃饭和休息的一两小时,还剩七八小时。可是这裡面能让我们投入脑力劳动的时间有多少呢?可怜的不足 3 小时。其余的时间总被各种乱七八糟的事情打断,这个 IM 响个不停,那个邮件收个不停,还有人动不动弄出各种高端大气活动、培训来消费这所剩无几的工作时间。于是乎上班时间干不了多少活,好不容易等到别人都下班回家了,总算进入了 coding 时间。之前我总是说,6 点之后有 5 个小时的编程时间,就是这麽回事。

如果是一个普通的职业,普通的职位,自然是上班干活,下班走人。可是我们干的不是一般的职业,我们是码农啊。之前我实习的时候就听同事讲过一句精闢的话:「干别的职业请假了就没事了,当码农的请假回来了事还是你的,还得加班干活追赶请假落下的进度」。也许是出于这个原因,我很少请假。

所以说,别的职业时间被浪费就浪费,被占用就被占用,反正下班走人。可是我们是码农诶,弹性工作制诶,所以我们白天上班陪别人玩,晚上加班干活。

如果你总是为了工作而熬夜或者牺牲周末时光,其实并不是因为你有很多工作要做,而是因为你的工作状态不佳。而工作状态不佳就是由打岔引起的……

在这个时段内,封锁即时聊天工具,挂掉电话,关闭邮箱,叫停会议。唯一能做的就是闭嘴、干活。你会惊讶于自己居然能干这麽多活……

你的生活被各种干扰包围著,只有你自己才能去发起反击。

Jason Fried《重来》 效率篇-打岔是效率的敌人

有时真是羡慕那些真正的顶级网路企业的工程师,据说他们一个维运工程师可以维运上万台伺服器,这才是搞技术的,这才是效率,比我们不知道高到哪裡去。

我能做些什麽呢?尝试在固定时间段关闭即时通讯,关闭信箱,在上班时间给自己留出工作时间。反正也不会错过什麽重要的事情,如果伺服器挂了,没几分钟就收到简讯了,如果老板找不到人直接就电话了,至于好事,能有啥好事?

效率

马云那句「梦想还是要有的,万一实现了呢」随著阿里赴美上市传遍大江南北,于是平时听老板们演讲时总能听到的是「我们要给XX赋能,让他们效率更高,能够给消费者提供更好的服务,帮助他们实现梦想」之类的。

阿里巴巴正是透过帮客户赚钱,帮客户成长,最终才使自己赚取合理利润的,这也正是阿里巴巴能取得今天成绩的文化实质。在赚钱这一点上后天下之乐而乐是合理的,然而在帮助合作伙伴提升效率上,是否还能后天下之乐而乐,就值得商榷了。如果我们自己都在以一种低效的方式工作,怎麽能够做到帮助客户,帮助合作伙伴提升效率?

一直以来,我总是感觉单兵作战,比如我在做自己的业馀专案,或者为某个开源软体贡献程式的时候,效率最高。一方面可能是我能够随心使用业界各种帮助提升效率的工具,另一方面是程式本身来源于我自身真实的需求。

涉及到工作效率上,一方面是要想方设法提高自身的效率,另一方面是要防止自己的效率被外在因素降低。最高效的程式就是不执行任何程式的程式,同理,那些可做可不做的事情,每少做一件,效率就提高一点。

低头拉车,抬头看路。

一头栽进去,埋头干你自己认为应该干的事情,这很简单。而要从中抬头起来问问自己为什麽要这麽做,则难得多。你需要问自己几个重要的事情,以确定你是否在做真正有意义的事情:

为什麽要这麽做?你在解决什麽问题?这真的有用吗?你加上去的东西有价值吗?这种改变真的会起作用吗?这种方法更简单吗?有其他更值得做的事情吗?这样做值吗?

有时候放弃其实是一步好棋,即使你已经为之投入很多努力,也不要继续把大好的时间浪费在不值得做的事情上。

Jason Fried《重来》 效率篇-退出的理由

之前前辈跟我说过,接需求的时候先多想几个为什麽,不能随随便便来一个接一个。回想自己这一年来,还真是没做到,没做好。

工具

还没有到美国去当码农的经历,身不能至,心嚮往之。嚮往的理由之一,就是真正的科技型企业,是会对身在其中的技术人员产生技能加成的,让技术人员能做到之前做不到的事情。

公司有平台、有工具,也有流程、有包袱。前者帮助开发者提高生产力,后者帮助开发者降低生产力。很开心看到最近技术部的研发流程向著轻量化的方向迈进,果然是新 Boss 新气像的节奏。

说到平台和工具,不得不赞的就是阿里系技术栈中各种狂拽酷炫屌炸天的 Java Middleware。如果有一天我不想再做业务系统了,那麽Middleware也许是我的一个选择(当然我更想做的是当独立开发者用自己的作品养家糊口,然后心情好的时候为自由软件贡献程式)。然后除了Middleware,我们似乎就没有什麽比较通用的拿得出手的工具了,每个应用自己写自己的后台,自己做自己的工具。

说到平台和工具,不得不说的就是各种基础设施了,从程式仓库、集成系统,到知识库、文档库都不像是一个世界级的网路企业该有的样子,反而像是一个传统的国内软体企业。面对这样的基础设施,真的是连骂都懒得骂了,有这点骂的功夫,还不如想想怎麽把自己从刀耕火种中解救出来,然后开始行动。

其实有些地方企业没做好反而对员工来说是个机会,就像每出现一个看起来有前途的新语言新平台,一帮码农就蜂拥而至,仿佛开荒一般的贡献各种基础类库,然后成为新平台上的元老级开发者。

很多时候我们为开源专案贡献程式,一是希望世界因为我们的贡献变得美好一点,二是可以和来自不同地区的同行交流,高手过招(Github 是目前全球最大的男性同性交友平台),三是可以使用各种最新科技高效的做一些有意思的事情。

之前看过一篇文章,说的是《为什麽优秀开发者进入 Google 后就不参与开源了》,文中列举了几个原因,其中一个就是 「Google 的开发环境太好了」。虽然现在的 Google 已经不是当年的样子,但是至少它曾经是技术人员的理想环境。

开发者和公司之间的关系其实很微妙的,双方都希望对方先付出,自己后回报。开发者希望公司提供良好的工作环境,完善的基础设施,然后自己开始创造价值;公司则希望开发者先创造价值。这是一种博弈,也是自由市场的自由选择。

当我们不够强的时候,只好自己动手丰衣足食。虽然不可能让自己的工作环境变得向曾经的 Google 一样,但是能够向这样的目标前进一星半点,总归是好的。

挖坑

伯乐在线有一篇源自 Quora 的文章,《工程师如何做到『编程速度又快,Bug 数量又少』?》,把菜鸟工程师贬的体无完肤。工作一年来,回头看看,当年的我也给自己埋了不少雷,挖了不少坑;现在的我是不是在为将来的我埋雷挖坑,我自己都不知道。

其实我们在写程式的时候,是不会故意埋雷的,只不过受限于当时的能力、视野和经验,也就能够做到那种地步。只要我们还在不断练习,不断进步,回头看当初的程式,都会被当年的自己蠢哭。

有些坑因为没时间填,程式又还能工作,渐渐的变成了陈年老坑,随著时间的推移就越来越没法填了。接手的同事一看,这麽大一个坑,修养不好的当面就开骂了,修养稍好的恐怕也免不了心谤腹非。

少挖坑,多填自己的坑,也许我们的工作能因此变得更简单。少了陈年老坑的束缚,也许我就能做更多的事情,而不会像现在这麽累。