很好奇程序员这个群体这些年效率是变低了还高了,在社交媒体中,各种各样的段子会让你笑cry;各个兴趣圈都有一大堆内容帐号,其源源不断产生的内容可让你享受阅读的快感。这些快感会比写代码见效快。
但是完成一个模块的代码通常要一整天或者好几天时间,中间最好还不能间段,最终只有运行没有问题才会体验到愉悦;几年前也曾经实验过,让工程师在编写代码时候,如果被各种事情打断(比如产品汪来访),就在身边一张空白表格标注一下,结果一天被打断十几次是很正常的情况,而工程师被打断一次,通常需要5-20分钟才能恢复回原来任务正常的状况。
而社交媒体只需要一些碎片时间就可以达到高潮,等电梯不到一分钟的时间也会让你有机会对着手机傻笑,相较之下高低立判。而据说这种让大脑愉悦的神经元连接方式一旦新连上就非常稳固,最终会欲罢不能。当他在写代码的时候,大脑会下意识的切换任务去刷下微博及朋友圈以便得到放松及愉悦,而coding时被别的事情打断的创伤更是需要一些补偿来抚平。只要不是最后交付关头,这些效率的损耗无从统计,往往连自己也无法得知。
但在另外一方面,社交媒体促进资讯流动加快,在一定程度上促使行业中优秀软件的复用程度提高。几年前还记得NoSQL遍地开花,每个公司都有一个自己的PHP MVC框架。慢慢的跟社区版本一比较之后,百花齐放的现象就慢慢消停了。最近在看一些技术会议的slides,发现大部分内容已变成各种开源软件的选型技巧了,不知是否矫枉过正了。协作程度的提高,也可以视为软件已经逐渐迈向工业社会,有了真正意义的上下游,形成了分工与合作。从这个角度来讲,工程师只需要在自主研发还是拿来主义之间做个选择题,从整体的角度来说,研发效率就得到了提升,视野的提升弥补了coding下降带来的效率问题。
但这也带来一个群体智商下降的问题,大前研一在《低智商社会》中提到
这样导致的结果是,时下流行语中对社会问题所定义的“中低阶层”的范围在不断扩大。所谓的“中低阶层”,就是指身处其中的年轻人对工作和学习都缺乏兴趣,而这种兴趣的缺乏加剧了中产阶级社会的崩溃。
随着信息化社会的高度发展,人们对手机和互联网的依赖度越来越高。在这种情况下,年轻人的思考能力和交流能力面临日趋下降的危险。甚至有种说法称,当代年轻人只关心自己周围3米以内的事情。
当然,“智商衰退”并不仅仅发生在孩子和年轻人身上,连大人们也在做着令人难以置信的事情。比如说,电视节目里一说到“纳豆对减肥有帮助”,他们就会不假思索地立刻去买。第二天日本超市的纳豆竟然被抢购一空。继纳豆事件之后又发生了香蕉的抢购潮。
当前技术圈情况也差不多如此,一种新技术只要得到宣传,就会一拥而上,把使用新技术当做战绩,各种技术会议充斥着各种新技术使用的技巧的分享。而新技术一旦在国外受到了质疑,技术圈马上就会变得茫然,比如“LinkedIn都不用Scala语言了,那我下一步怎么办?”
影响工程师效率还有一个因素是来自大公司里的流程,由于“全栈工程师”还没得到广泛的理解及接受,因此不同栈之间新开发的模块存在一个联调的过程,如果他们属于不同的部门,则联调的周期会更长。软件开发完成到上线之前,还需要经过测试部门的测试。由于这些因素,加上人为的一些控制稳定性的制度,即使在代码中加个空格,在一些团队有时需要一周的时间才能到线上。
大型系统中还存在模块耦合的问题,由于多个模块由不同的人员及部门维护,因此给调试及持续集成带来很大的挑战。不少公司中很多代码只能做到单个模块的测试及集成,由于依赖复杂,测试环境很难搭建,最后只有线上才有一个包含所有模块的运行环境,因此一段代码如果要依赖上下游才能验证正确性,则只有等到上线后才能判断是否存在bug。当环境逐渐退化到这样的境地,效率自然就无法保证。