程序员,效率和质量你选谁?

  本文作者系程序猿Daniel F Pupius,这是一篇他发表在Medium上的博文,讲述自己怎么在实际写代码的过程中,发现在效率和质量间做出抉择其实是个伪命题。

  程序开发项目进行过程中,通常会冒出这样的困惑:应该选择效率,还是选择质量?很多程序猿都会有偷懒的思维,觉得把一些摸不清头绪、不知道怎么写的代码片段去掉,可以节省很多时间,更早完成项目计划。

  其实过去几年中,我也是这么想的,但最近我开始意识到,这个问题的纠结之处不在于选择困难,而在于问题本身是个伪命题。

  什么是“质量”呢?一般程序员说到“质量”二字时,他们说的有可能是测试通过率、变量命名、代码格式化、组件化、查找 bug、程序测试等等。也有可能是程序的可拓展性、服务延时、产品功能的完整程度。

  问题往往就产生于以上两者被统一看待、不做区分的时候。其实前一种围绕代码的问题可以看成“代码质量”问题,第二种情况则可以看成“执行质量”,或者“执行程度”。

  从“代码质量”上来看,程序猿走捷径的偷懒思维,其实是种十分短视的做法。含糊绕过某个问题,你可能会一时觉得省事不少,但到头来,往往发现因此搅乱了系统而要花费更多的时间来一行行检查代码,找出 bug,甚至重新调整整体逻辑框架。所以牺牲代码质量换取速度通常是得不偿失的做法。

  相反地,高质量的代码其实是可以帮助你节省时间的。统一的代码规范和变量命名,不仅可以帮到别的程序猿,还可以帮到未来的你,更好地理解你现在写下的代码;经过严密思考而设计出的轻量级代码架构,则可以让你在迭代产品的时候获得更高的效率,更清晰地了解该从何处入手,而不是到数据库里漫天寻找需要替代的地方;而高测试通过率还可以给你充足的自信去调整产品,减少 bug 数量,最小化 QA 时间。

  至于“执行质量”,这又是另一个命题。有很多方式可以在不降低产品质量的情况下,使得产品开发过程很紧凑。比如你可以先推迟一些不那么着急的工作,等到整体执行优化、系统稳健性做好的时候,再来做那些被暂时搁置的事情。

  具体的做法就是,先把最终想要的产品效果定好,然后往其中填充内容不断修改,至于一些无关的细节可以最后再来优化。举例来说,刚开始开发产品时,可以用 RPC 来简化应用开发的流程,绕过复杂的协议传输问题,先在产品应用层面上快速迭代,随后再替换掉 RPC,加入重试、错误控制、安全检验等代码,或者干脆替换掉传输协议。

  写 Mediun 代码的时候,我们就是先实现效果,再调整细化部分的,最后删掉了很多无法整合进原先设定好的框架中的功能,大约是六万行代码左右。

  所以如果我们起初没有小心处理代码质量的问题,最终一定会被查找各种很细微的问题困扰。如果我们没有完全聚焦在效果实现上,就一定会拖拖拉拉延后项目进度。但如你所见,很幸运我们前期工作做得充分,所以现在产品可以迭代得很快,并不断试验新功能。

  其实在互联网领域中,不仅程序猿会面临上述问题,很多产品经理也会为项目进度和质量打架的问题烦扰。所以 Daniel 的博文提供了一个很好的思考角度,或许下一次再有人问你是不是可以牺牲一点代码质量来追赶进度的时候,你就可以告诉他们:你问的是个伪命题。

时间: 2024-08-29 07:57:35

程序员,效率和质量你选谁?的相关文章

程序员效率的奥义

自我感觉还是蛮在乎效率的人.为了提高效率,我特别重视如下几点: 工具化 我是个典型磨刀不误砍柴工的人. 2011年的时候,在开发一个项目前,我先花了几个礼拜自己开发了一套Web框架. 因为我之前做过一段时间的Ruby程序员,一对比,我发现,Java的Web框架都太不好用了,Java的ORM框架也不好用,Java 的MongoDB Client 也不好用.于是我决定开发一套一站式Web框架. 正好除了搜索的任务以外,公司希望做一个全站通用的标签系统.当时在选型上,老大说用Spring,我当时说,给

程序员:选择效率,还是选择质量?

程序员:选择效率,还是选择质量? 时间:2014-11-07 02:28 来源:36kr 作者:36kr 本文作者系程序猿Daniel F Pupius,这是一篇他发表在Medium上的博文,讲述自己怎么在实际写代码的过程中,发现在效率和质量间做出抉择 其实是个伪命题. 程序开发项目进行过程中,通常会冒出这样的困惑:应该选择效率,还是选择质量?很多程序猿都会有偷懒的思维, 觉得把一些摸不清头绪.不知道怎么写的代码片段去掉,可以节省很 多时间,更早完成项目计划. 其实过去几年中,我也是这么想的,但

探讨:东方程序员眼中的西方程序员是怎样?

引言:本文译自StackExchange上的一个讨论贴:东方程序员眼中的西方程序员是怎样的?,有网友发帖问: 在我看来,东方的程序员如何看待西方同行是一个有趣并且重要的问题. 通常认为东方国家(印度/中国/菲律宾)是为西方国家提供外包服务(美国和欧洲)的. 你有过参与离岸开发的经历吗?如果有,你对此有何看法? 对于西方程序员你有哪些总印象吗(比如是否具有协作精神,是否按时交付产品,或者他们的工作质量如何)? 以下是来自东方各国程序员的答案: 一.印度程序员 Danish 身为印度人,我想谈谈印度

该离开了吧,程序员辞职的那些理由

马云曾说,员工离职,原因不外乎两点:一是钱没给到位,二是心受了委屈.或许是认为薪水没有匹配现在的工作量,或许是不满意领导的决策或安排,也有可能是对公司的前景失去信心.今天,我们就来聊一聊程序员辞职的那些理由. 奇葩的领导 实际上,相当一部分程序员选择离职,都是和奇葩的领导脱不开干系的.如果你的领导是一位不专业.不称职.不配领导自己的奇葩上司的话,那么工作很容易会成为生活中绝望感的源泉. 有的领导对程序员缺乏基础的尊重:内心充满着鄙夷和不屑,动辄横眉冷眼,呼来喝去.经常用一些令人难堪和窝火的话来打

东方程序员怎么看西方程序员2

二.日本程序员     Rei Miyasaka     我来自日本.     我并不认为日本程序员真正理解西方人在一半于我们的时间里做的那些工作.我们生活在自己那个小小的加拉帕戈斯泡沫中(与全球化隔绝),对世界上其他的事情置若罔闻.撇开科学软件不谈(仿真系统.开发工具等等),我不认为我们对学术充满热情.在日本我们将软件看成硬件的奴隶,,所以创新往往出现在硬件领域.     所以,当比尔盖茨说"软件是创新的源泉"这样的话时,大多数日本人只会认为"啊,他很富有,他知道自己在说些

中国程序员技术为什么都偏低?

首先来说,一个高级程序员并非是依靠自己读几本书写几万行代码就可以练就的,而我更加关注于低层的环境,也就是那些程序员实实在在的工作环境.因为程序员的高低其实还得从实际的工作来衡量,而不是其它.所以我认为,中国的软件公司的性质直接可以导致程序员的水平的高低.而我所说的软件公司,并不是指某个或者某几个,而是指那些主流的软件公司,那些大众型的软件公司.所以我更希望那些已经步入一个理想的公司的程序员可以理解我这篇文章的定位. 软件公司的无偿加班对程序员的影响: 在国内的软件公司中,程序员都是常常加班的,每

在一个程序员的墓前

强哥死了,上地及西二旗最牛逼的程序员停止了思考. 我来的晚了,葬礼已经结束.此时清明刚过,天色阴沉,山坡上正是桃花十里.这位老程序员逝世以后所形成的 Null 和 "",正在被雾霾迅速填满. 一群人站在强哥的墓前,一共五人,都是强哥的学生.程序员活的没老兵那么久,玩不了凋零的把戏,程序员一般说挂就挂.所以,无人悲凄,无人哭泣,众人只是在墓前闲聊往事. 建国是大师兄,他已是一家上市公司的 CEO,功成名就富甲一方. 建国说:"强哥,你的技术是好的,可以说无人能及.我是最早与你一

2016程序员如何选电脑?程序员电脑推荐

  程序员如何选电脑 在商用办公领域,有这样跟一群人十分特殊,每天面对密密麻麻的编程代码,他们就是程序员.程序员们对电脑的性能要求较高,不仅需要处理复杂的运算和变成,更需要胜任多任务处理,一台性能出色的台式电脑是比较好的选择,能够保障复杂工作的稳定完成.那么程序员该如何选配电脑呢? 首先整洁的办公环境能够提高程序员的编程效率.试想,原本就已经十分拥挤的办公桌,如果在桌面堆上一个大型机箱,显然看着就很烦人,可是如果将机箱放置在桌下,使用接口就显得不那么方便了.因此,一个小巧.迷你的台式电脑可以很好

程序员的工作环境和他们的工作效率

1.足够大的桌面空间 我认为程序员的办公桌最好能够并排坐下2个人,用来结对编程或者code review.而在不离开座位的情况下,还要有足够的空间用白板或者纸面展开讨论问题.而协作的同事就不必站在身后费力的越过肩膀去看屏幕上的内容.而桌面上可以放下2个显示器并可以还要可以随手拿到常用的参考资料及书籍,同时要有合适的文件柜或壁柜存放归档的资料,以此避免桌面上堆满了各种打印的资料. 2.电脑环境 我想工作的机器应该要有足够的内存,比如8G,这样并行打开复杂的workspace时候就不需要关闭邮件或者