你只写了两行代码,为什么要花两天时间?
原文 | https://www.mrlacey.com
作者 | Matt Lacey
我花了两天时间,写了两行代码。
对于真正的程序员来看,这可能是一个合理的事情,但背后不理解程序员的人,往往会做出了一个可怕的假设:
代码行数 = 程序员的努力
代码行数 = 程序员的价值
所有代码都是等效的
我想对这些人说,“别瞎猜了,这都是错的!”
那么,为何看似简单的问题,要花费两天时间才能修复呢?
1
因为有些人上报问题时,对描述「如何复现问题」写得十分模糊。有时我们要花了几个小时才能复现问题。收到报告时,一些程序员会立即反馈给上报问题的人,要求他们提供更多的信息,才能研究问题是如何产生的。
而有些程序员不喜欢修复 bug,他们会以信息不完整,无法复现问题为借口,拖延修复进度。
我知道上报问题可能很麻烦,对此我向上报问题的人表示感谢。所以我尽可能在用已知信息来修复 bug,避免给上报的人增加沟通成本。
2
因为上报的问题与自己负责开发的功能不相关。
有时,与发现的错误相关的功能是我很少使用的,或者不是我负责开发的。这意味着,我要花了更长的时间来理解这个功能是如何实现的,以及它与错误是如何关联的。
3
因为我需要花时间调查问题的真正原因,而不是仅仅看表面上的错误。
通常,如果某些代码抛出错误,则可以将其包装在 try...catch 语句中来避免错误。
如果这样没有错误,就是没有问题吗?不,对我来说,让问题不出现与解决该问题是不同的。这种方式规避错误很容易导致其他意外的副作用。我不想在将来再与这次问题打交道。
4
因为我需要研究「是否存在其他方法可以复现相同的问题」,而不是按步骤简单地复现问题。
可能有其他方法让我们找到 bug 带来的更深层问题。找到问题的根本原因,并研究解决方法,这才可以避免类似 bug 的产生。
5
因为我需要花时间验证代码的其他地方是否会受到影响。
如果某段代码导致了错误,那么在代码库的其他地方也可能发生相同的错误,此时是检查的好时机。
6
因为当我需要找到问题的根源时,我寻求最简单的方法来解决它,而这种方法将带来最小的副作用风险。
我并不想只以最快的方案来解决问题,我想要的修复方案是在将来不会引起混乱或其他 bug。
7
因为我对自己所做的更新会进行彻底的测试,并验证所有受影响的路径保证没有问题产生。
我不想依靠别人来测试我所做的更新,因为我不希望之后再发现错误。再次重新思考之前的方案既耗时又费力,所以我会尽可能避免让测试的人再次上报类似的问题。
其实我不喜欢修复 bug。其中一个原因是,这些 bug 是自己必须要面对的错误。另一个原因是,我更喜欢在新功能的开发上,有哪个程序员会喜欢把时间耗在修复 bug 上呢?
问:如果想逼疯一个程序员,还有什么比让他马上修复一个 bug 更有效的呢?
答:让他反复修复同一个 bug。
我愿意会花时间确保任何一个 bug 在出现后会被完全修复,这样就不需要再一遍一遍地检查、修复和测试了。
同样也避免和和领导、产品经理、测试人员之间的相互伤害了。
程序员改善代码质量的 101 个方法
本书介绍了软件开发领域 101 个重要的编程原则,涉及编程中的永恒真理,指导方针,编程思想,程序员的视角、习惯和工具,以及编程的反模式等内容。
书中以“这个原则是什么”“为什么要遵循这个原则”“具体应该怎么做”为中心,对各个原则进行介绍,简明扼要,通俗易懂。这些原则凝聚了前人的智慧,经过了历史的考验,是指导程序员改善代码、进一步提升编程能力的实用指南。
本书适合各层次软件开发人员和项目管理人员阅读,也可作为高等院校计算机相关专业师生的参考读物。
图灵官方小店
享受正版低价折扣
你只写了两行代码,为什么要花两天时间?相关推荐
- 开发无法复现是什么意思_你只写了两行代码,为什么要花两天时间?
原文 | https://www.mrlacey.com 作者 | Matt Lacey 我花了两天时间,写了两行代码. 对于真正的程序员来看,这可能是一个合理的事情,但背后不理解程序员的人,往往会做 ...
- 宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨!揭晓中国开发者真实现状...
作者 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 程序员,一个圈外人羡慕.圈内人喊苦的"神奇"职业--高薪.福利好是旁人羡慕的理由,高压.加班多却也是他们最常见的写照 ...
- 一套代码编译出ios和android,Hippy: Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)...
Hippy 跨端开发框架 介绍 Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS.Android 和 Web).Hippy 的设计是面向传统 Web 开 ...
- 宁愿“大小周”、每天只写 200 行代码、月薪 8k-17k 人群再涨 | 揭晓中国开发者真实现状
作者 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 程序员,一个圈外人羡慕.圈内人喊苦的"神奇"职业--高薪.福利好是旁人羡慕的理由,高压.加班多却也是他们最常见的写照 ...
- android 开发 目标绑定,Hippy: Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)...
Hippy 跨端开发框架 介绍 Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS.Android 和 Web).Hippy 的设计是面向传统 Web 开 ...
- javascript两行代码按指定格式输出日期时间
javascript两行代码按指定格式输出日期时间,具体看代码: function date2str(x,y) {var z ={y:x.getFullYear(),M:x.getMonth()+1, ...
- 随心,随性,随缘。注定让一生改变的,只在百年后,那一朵花开的时间…
在晨钟暮鼓中初雪飘落,初雪消融,世间万物大约都是这样从无到有,从有到无吧. 我说:我想忘记.佛说:忘记并不等于从未存在,一切自在来源于选择,而不是刻意.不如放手,放下的越多,越觉得拥有的更多. 经云: ...
- 上传至微信服务器端的图片在界面中展示的时候,显示此图片来自公众平台未经允许不可引用,解决办法只需加两行代码
此图片来自公众平台未经允许不可引用 上传至微信服务器端的图片在界面中展示的时候如上图不显示图片显示 为此图片来自微信公众平台,未经允许不可引用 解决办法: 在界面的html页面头部head加入以下这两 ...
- Unity 圆角矩形Shader实现(支持长方形)(只写两行)
一. 效果与引言 相信很多小伙伴都会遇到做圆角矩形的需求,网上的shader还不明白是怎么实现的,甚至还有一部分是错误的,本文讲从原理到代码讲解圆角矩形shader的实现 二. 原理分析 想要实现一个 ...
最新文章
- 2020 年 10 月程序员工资统计,终于涨了!
- java list反序列化_java序列化与反序列化操作实例分析
- STM32单片机如何使用JLINK下载
- [转] Lodash
- shell等待特定进程pid退出的方法
- [转] 应聘Java笔试时可能出现问题及其答案(第五部分)
- python从26个字母中随机挑选5个_【习题之Python篇】习题6
- Gtk实现GUI键盘并终端显示
- 【报告分享】 2020-2021智能手机消费趋势与用户忠诚和流失度报告-企鹅智库(附下载)
- python3实战练习:快递价格计算器
- 网络流量监控iptraf
- 微信小程序语音搜索功能
- 20佳用于手绘风格网页设计的字体素材 !
- 平行空间怎么设置32位_10月微信新花样!微信情侣空间怎么解除 情侣空间取消情侣关系设置方法...
- PIE-Engine上传矢量数据
- Android 8 WiFi断流,小米8wifi断流怎么解决
- 战争是怎样发生的(博弈论的诡计)
- QT(Send raw data to printer)发送原始数据到USB打印机
- 无法完成操作。服务无法在此时接受控制信息。
- 【狂神说JAVA】SpringMVC笔记
热门文章
- C语言比较字符串长短
- vue aplayer 进度条无法拖动_为 Vue 的惰性加载加一个进度条
- uwb定位算法c++代码_一指连小米UWB技术发布!手机一指,就能操控
- 简单的c语言课程设计管理类,C语言课程设计-学生成绩简单管理程序.doc
- C语言十进制转换成二进制源码
- linux mint有没有服务器版,Linux Mint 20“Ulyana”正式版发布
- 防止sql注入的方式php,探讨php中防止SQL注入最好的方法是什么
- 如何查看别人公众号自定义菜单的功能_如何注册自己的个人公众号?手把手教您开启自媒体赚钱之路?...
- Maven学习总结(一)——Maven入门
- 孰优孰劣?Dubbo VS Spring Cloud性能测试大对决!