程序员开发项目是选择效率还是质量呢?

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

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

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

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

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

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

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

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

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

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

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

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

(0)

相关推荐

  • 成为好程序员必须避免的5个坏习惯

    当你开始成为一个程序员的时候,在编程的时候很容易陷入下面所述的一些坏习惯. 作为一名程序员,犯错误不可避免,这是你学习编程课程中的一部分.在你的职业生涯中你会犯很多错误 – 有的特别.有的普遍 – 通过这些错误你可以学习如何避免在将来再犯同样的错误. 但是如果你是一个初学者,你犯的错误可能会比其他人更频繁.那么如何才能避免大部分程序员每天都犯的这些普遍的错误呢? 想要避免错误,就要对它有所了解.这也是为什么我要和大家分享一些在我们的程序员生涯中阻碍我们成长的普遍错误. 在开始之前,你可能想知道为

  • 做一个优秀程序员应该知道的15件事

    1. 懂得分享.尽可能使用开源,并且当你有能力的时候,要对其有所贡献.聚全社会之智慧,胜过某些"大"公司之短视. 2. 公平竞争.尝试其他技术.框架.方法和观点.不要总以为只有你的选择才是可行的.别的选择也有可能比你的要强得多.要以开放的心态,来检验其他人的选择. 3. 不要攻击他人.像第2条所说的,不要仅仅因为别人恰巧使用.Net.Java或PHP就去攻击他们(我在这方面有一次教训).有时,它们或许要比你所认为的更有效.只要别人不是一无是处,你就可以从他们那里学到很多东西. 4. 自

  • 程序员开发项目是选择效率还是质量呢?

    本文作者系程序猿Daniel F Pupius,这是一篇他发表在Medium上的博文,讲述自己怎么在实际写代码的过程中,发现在效率和质量间做出抉择其实是个伪命题. 程序开发项目进行过程中,通常会冒出这样的困惑:应该选择效率,还是选择质量?很多程序猿都会有偷懒的思维,觉得把一些摸不清头绪.不知道怎么写的代码片段去掉,可以节省很多时间,更早完成项目计划. 其实过去几年中,我也是这么想的,但最近我开始意识到,这个问题的纠结之处不在于选择困难,而在于问题本身是个伪命题. 什么是"质量"呢?一般

  • Python程序员开发中常犯的10个错误

    Python是一门简单易学的编程语言,语法简洁而清晰,并且拥有丰富和强大的类库.与其它大多数程序设计语言使用大括号不一样 ,它使用缩进来定义语句块. 在平时的工作中,Python开发者很容易犯一些小错误,这些错误都很容易避免,本文总结了Python开发者最常犯的10个错误,一起来看下,不知你中枪了没有. 1.滥用表达式作为函数参数默认值 Python允许开发者指定一个默认值给函数参数,虽然这是该语言的一个特征,但当参数可变时,很容易导致混乱,例如,下面这段函数定义: 复制代码 代码如下: >>

  • 用PyQt进行Python图形界面的程序的开发的入门指引

    一般来说,选择用于应用程序的 GUI 工具箱会是一件棘手的事.使用 Python(许多语言也一样)的程序员可以选择的 GUI 工具箱种类繁多,而每个工具箱都有各自的优缺点.有些速度比其它工具箱快,有些比较小:有些易于安装,有些更适合于跨平台使用(对于这一点,还要指出,有些支持您需要满足的特定特性).当然,各种库都相应具有各种许可证. 对于 Python 程序员而言,缺省的 GUI 选择是 Tk(通过 Tkinter 绑定)- 其原因显而易见.Tkinter 和闲置的 IDE 是由 Python

  • 分享15款Java程序员必备的开发工具

    如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能最强大的编程语言之一,另一种则表示这种编程语言既难用又复杂. 下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就是--它们都是为了给Java编码和开发提供卓越的支持. 1. JDK(Java开发工具包)如果你打算用Java开发一些小程序和应用程序,那么首先得给自己准备一个类似于JDK的工具

  • Java程序员新手老手常用的八大开发工具

    现在有很多库.实用工具和程序任Java开发人员选择.每个工具都有其优点,但其中有一些因它的知名度.多功能性和有效性从众多选项中脱颖而出. 以下这8个工具,从代码构建到错误挤压,覆盖Java开发的全域.学习这些工具可以帮助你改善代码质量,成为一个更高效的Java开发人员. 1.Eclipse 尽管IntelliJ IDEA.NetBeans和一些其他的IDE正在日益普及,但是有调查表明,Eclipse仍然是几乎半数Java开发人员首选的开发环境. Eclipse是IDE领域的瑞士军刀,有着大量定制

  • PHP程序员玩转Linux系列 搭建FTP代码开发环境

    PHP程序员玩转Linux系列文章: 1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 有些同学可能觉得我写的都是啥yum安装的,随便配置一下而已,没啥技术含量,我的目的是让大家能够以最简单的方式实现目的,配置也是能不自定义的的统统不配置,不是为了炫耀会编译安装,我觉得安一个软件,可以用yum,为啥非得编译解决依赖自讨苦吃呢,最终目的是能实现效果,不是费劲巴拉的一堆编译配参数过程. 日常写代码,还是在windows系统下,怎样让

  • Java程序员转Android开发必读经验一份

    啰哩啰嗦的说说Java和Android程序的区别: Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择.学安卓从事移动互联方向开发,学Java从事软件.网站开发.而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好. 言简意赅的说说"转"前的准备: 其实Java程序员要自学安卓开发的基础知识还是没有什么难度的,毕竟语言相通,特性相似,阅读安卓源代码的门槛以比较低一些,作为能够考虑"转&

  • 我要点爆”微信小程序云开发之项目建立与我的页面功能实现

    开发环境搭建 使用自己的AppID新建小程序项目,后端服务选择小程序·云开发,点击新建,完成项目新建. 新建成功后跳转到开发者工具界面 新建后,微信端为我们提供了一个参考的模板程序,这里我们自己来创建各个所需的文件与代码,所以删除所有不需要的文件,删除cloudfunctions.miniprogram/images.miniprogram/pages文件下所有文件,同时也删除style文件和删除app.json中原始的页面配置. 此时编译下方控制台会报"VM8100:5 appJSON[&qu

  • 5个Linux平台程序员最爱的开发工具汇总

    Linux程序员经常抱怨,自从他们使用了免费开源的系统平台后,作为一名程序员,却并没有在代码编辑器上得到足够的重视.他们往往会认为Linux平台上的代码编辑器太少了,以至于影响他们的编程工作.但是事实并非如此,在Linux平台上有太多的代码编辑器供你使用了,下面我们分享了5个最受Linux程序员欢迎的代码编辑器,继续在编程的路上前行吧! 1.Eclipse Eclipse是一款很酷的开源代码编辑器,同时它也是最受程序员亲睐的代码编辑器之一,它拥有代码高亮和智能提示等强大的功能.在Eclipse中

  • Js+Dhtml:WEB程序员简易开发工具包(预先体验版)

    复制代码 代码如下: <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html;charset=gb2312'> <META name='Gemeratpr' content='网络程序员伴侣(Lshdic)2005_开拓版'> <TITLE>LD5工具</TITLE> <style> *{font-size:12px;font-family:宋体}

随机推荐