如何提升工作效率
一骑红尘妃子笑,无人知是荔枝来。
前几天,在一次会议上,有同学问我:如何才能提升工作效率? 和以往的答疑环节不同,我这次没有给出明确的、马上可行的方法,相反,我仅仅是给出了自己对“如何提升工作效率”的思考。对当时的内容进行了梳理、丰富和扩展,就形成了这篇文章。
日光之下,并无新事
已有的事,后必再有;已行的事,后必再行。日光之下,并无新事。
《圣经·传道书》1:9
单纯就工作效率提升这件事而言,确实也并不是一件新鲜的事情。有太多的书籍在解答这个问题,比如:
高效能人士的七个习惯
卓有成效的管理者
番茄工作法图解
……
我们也确实可以通过实践这些书籍中的具体方法来提升自己的工作效率。但是,当我们接下来继续思考如下的问题时,我们又将如何展开呢:
我们如何进一步提升工作效率?
提升效率的大方向是什么?
大卫·克里斯蒂安的“大历史”理论指出:可以依据整个人类的发展历史对未来即将发生的一切做出合理的判断,用长远的、比较的思维来看待问题。
人类改造自然的社会活动已经进行了几千年,同时我们的工作也是一种人类改造自然的活动,因此我们也可以运用“大历史”理论来思考如何提升工作效率这一问题?
大历史理论
关于大历史理论的具体内容,可以参考大卫·克里斯蒂安的著作《起源-万物大历史》。
大历史可以为我们理解自宇宙大爆炸至今的一切历史提供框架。
通常,在学校里,科学和历史是分开教授的,有专门的物理课,也有专门的讲述文明起源的课程。
但是,大历史打破了这一界限。
每当我学到新知识,不论是生物学、历史学,还是其他任何一门学科,我总是会努力将它放置在大历史的框架中。
再也没有其他其他课程会对我看待世界的方式产生如此之大的影响。
——比尔·盖茨
在漫长的历史长河中,人类共经历了:旧石器时代、新石器时代、青铜器时代、铁器时代、蒸汽机时代、电力时代,然后到达了目前的信息时代。
回顾历史的长河,我们发现,人类的发展也是工具进化的历程。每一次工具的升级换代,都影响着人类社会的发展方向和人们的生活方式。各行各业在每一次工具层级提升后发生着巨大的变化,人类生活的舒适程度也随着工具层级的不断提升而改善。
当年,唐玄宗为了博得美人一笑,千里快骑送荔枝,才有了“一骑红尘妃子笑,无人知是荔枝来”的典故。然而,现在,在交通工具,物流技术等高速发达的今天,吃上新鲜的荔枝已经不是什么难事了。
因此,从大历史理论方面来看,我认为,提升工作效率的本质是“提升工作中所使用的工具的层级”。这里我说的“工具”泛指我们工作中使用的各类技术、平台、工具、脚本……
提升工具的层级
从历史的进程看,工具的水平反应生产力水平,是生产力水平的重要标志。因此要从根本上提升工作效率,首要的还是要提升工作中所使用的工具的层级。
工具层级不但影响我们的工作效率,有时候甚至会决定我们是否可以完成某项工作。正所谓:没有金刚钻,拦不了瓷器活,说的就是这个道理。
想象一下,如果现在让我们用如下图所示的“打孔卡”[1]来编写程序,我们多长时间能写出一个可以输出hello world
的程序呢?而现在,借助更富有表现性的语言和更高级的工具,我们可以在几秒内就实现这个功能,不是吗?
工具与具体场景相结合
如我解佛所说义,无有定法,名阿耨多罗三藐三菩提;亦无有定法,如来可说。
——《金刚经》
法无定法,一切事物都依赖于一定的因缘或条件才能存在,本身没有任何质的规定性。由此观之,一切的技术和工具,都需要依赖一定的场景才能存在,脱离场景的技术和工具也不能发挥应有的作用。同时,法无定法还提醒我们:自己的觉悟无法移植给别人,觉悟需要要靠自证、自修、自观来体验。
在工作中,经常会遇到脱离具体场景而执着于引入最高层级的工具的情况,我称这种行为为:惟工具论。
在《Monolith to Microservices》一书的第2.1节中,作者提到:不了解目标还会让我们面临陷入货物崇拜的风险,此时我们就会假设:“如果微服务对 Netflix 有好处,那么微服务对我们也有好处!”
以出行效率为例,一般情况下,汽车的出行效率比自行车要高。但是对于早高峰堵车时的短程行程而言,自行车的效率要远远高于汽车。
再以代码版本管理系统而言,目前 Git 已经成为目前最流行的代码版本管理工具。但是,我们是否有思考过:
Git 是否适用于我们?
如果让我们为公司选择一款 SCM(Source Code Management)工具,我们会如何选择?我们会选择 Git 吗?
从Google 和 Facebook 为什么不用 git 管理源码?这篇文章中,我们也能发现,虽然 Git 非常优秀,但是在某些场景下,Git 还是有其固有的问题。从我的使用经验而言,Git 无法只pull
代码库的其中部分 path 特性经常让我心有烦恼,而 Subversion 就可以很好的解决这个问题。如果我们的核心点是要保证同一个代码仓库的不同部分分属不同角色(不同角色具有不同权限)来管理时,我们还会选择 Git 吗?
因此,在具体工具的使用中,不能惟工具论,需要结合具体的场景,结合我们自己的目标来使用工具。否则,工具不但无法提升效率,反而会成为制约效率的因素。
没有工具是银弹
在所有恐怖民间传说的妖怪中,最可怕的是人狼,因为它们可以完全出乎意料地从熟悉的面孔变成可怕的怪物。为了对付人狼,我们在寻找可以消灭它们的银弹。
大家熟悉的软件项目具有一些人狼的特性(至少在非技术经理看来),常常看似简单明了的东西,却有可能变成一个落后进度、超出预算、存在大量缺陷的怪物。
因此,我们听到了近乎绝望的寻求银弹的呼唤,寻求一种可以使软件成本像计算机硬件成本一样降低的尚方宝剑。
但是,我们看看近十年来的情况,没有银弹的踪迹。没有任何技术或管理上的进展,能够独立地许诺在生产率、可靠性或简洁性上取得数量级的提高。
——《人月神话》第 16 章
从历史的经验看,没有任何一种技术革新能够百分百的解决所有问题,没有任何一种技术革新能够在没有任何成本的前提下解决所有问题,也没有任何一种技术革新能够在不引入新问题的条件下解决所有问题。正如 Sam Newman 在《Monolith to Microservices》一书中说的那样:
正如我的老同事、老朋友、微服务专家 James Lewis 所说:“Microservices buy you options”。
buy
这个词告诫我们,没有任何一种技术革新是免费的,我们都必须付出一定的成本才能换取到技术革新带来的便利。
但是,实际上,根据我在工作中的观察,大多数人在引入新技术,新工具的时候,都只想捞取新技术的成
果,而不想为之付出汗水。
我们还总是误解“自由软件”的含义。实际上,“自由软件”是关乎自由的问题,与价格无关,软件如何定价并不影响它是否被归类为自由软件。在英文中,我们使用 Free Software,Free 一词既有自由,也有免费的意思。而 Free Software 中的 Free 是指“自由言论”中的自由,而非“免费”。[3]
我们免费从“自由软件”获得其便利,但却不想花时间来贡献自己的想法,导致我们所使用的版本和“社区”版本之间的差距越来越大,进而导致无法持续获取新技术的便利。甚至有时候,当发展到一定阶段,最初为了解决问题而引入的“自由软件”,反而成了影响效率的主要因素。
我们免费引入革新技术,但是却不想花费时间来提升自己的能力、维护新技术。当在使用新技术遇到些许问题的时候,我们的肌肉记忆就开始发挥主导作用,进而开始打退堂鼓,导致在技术革新上出现“反反复复”的情况。我所经历的不同团队对待自动化测试的态度,都有力的证明了这一点。
我们总想着只要引入某种新技术,我们所面临的问题就一下都解决了。我们总想着寻找一种“银弹”来解决我们的问题。从大历史理论的观点来看,这怎么可能会实现呢?
世界上,大江大河,大多弯弯曲曲,即使所处平原之处的河流,也保持蜿蜒之态。
刘禹锡说:“九曲黄河万里沙,浪淘风簸自天涯。”
马克思说:社会发展是前进性和曲折性的统一,事物的发展不是直线式前进而是螺旋式上升的,是一个否定之否定的过程。
因此,我们必须认识到,短期看,新技术会解决我们当前的问题,但是新技术必然会引入新的问题,我们需要与时俱进,在新的场景下不断解决新技术带来的问题。这有这样,才能不断的提升工作效率。
我们不能因为堵车,就回退到自行车的时代;我们不能因为有假币,就回退到物物交换的时代;……
天人合一
虽然工具是生产力的标志,但是人是生产力的主体,是首要的生产力,是生产力的主导因素。因此,在提升工具层级的同时,我们不能忽视“人”在效率提升中的重要作用。
为了最大可能的提升效率,我们需要分析清楚:
人擅长处理什么工作?
工具、技术、平台擅长处理什么工作?
人和工具如何有效结合?
这里,我称这种,人和工具的关系为“天人合一”,只要当人的效能和工具的效能紧密配合在一起的时候,我们的工作效率才能得到最大程度的提升。在这个过程中,我们要发挥自我的思维优势,结合具体的场景,把各种工具有效的整合在一起,形成一套完整的工具体系,这有这样,才能提升我们的工作效率。
在我们解决视频质量评估的整个工作中,我们就利用“天人合一”的思路,把shell
、c++
、python
等语言有机的整合在一起,不同语言在系统的不同部分发挥各自的优势,既能保证执行效率,又能保证开发效率……
工具的三个思维层次
参禅之初,看山是山,看水是水;
禅有悟时,看山不是山,看水不是水;
禅中彻悟,看山仍是山,看水仍是水。
——青原行思禅师
记得大学的时候,我们的《设计模式》老师说:设计模式有三个层次:
不懂设计模式,所以没法使用设计模式;
了解设计模式,哪里都想用设计模式,处处是模式,处处是反模式;
透彻设计模式,代码看似没用设计模式,却处处体现设计模式的思想;
所以,在效率提升的过程中,对待工具也需要达到:看山仍是山,看水仍是水的境界。
参考文献
[1]. 上世纪的老程序员是如何编程的
[2]. Google 和 Facebook 为什么不用 git 管理源码?
[3]. 什么是自由软件?
[4]. 为什么河流都是弯弯曲曲的?
版权声明: 本文为 InfoQ 作者【wangwei1237】的原创文章。
原文链接:【http://xie.infoq.cn/article/c11c21c805ef76d0b5f0ee78d】。文章转载请联系作者。
评论