你只写了两行代码,为什么要花两天时间?

2024-04-27 06:48

本文主要是介绍你只写了两行代码,为什么要花两天时间?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文 | 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 个重要的编程原则,涉及编程中的永恒真理,指导方针,编程思想,程序员的视角、习惯和工具,以及编程的反模式等内容。

书中以“这个原则是什么”“为什么要遵循这个原则”“具体应该怎么做”为中心,对各个原则进行介绍,简明扼要,通俗易懂。这些原则凝聚了前人的智慧,经过了历史的考验,是指导程序员改善代码、进一步提升编程能力的实用指南。

本书适合各层次软件开发人员和项目管理人员阅读,也可作为高等院校计算机相关专业师生的参考读物。

图灵官方小店

享受正版低价折扣


这篇关于你只写了两行代码,为什么要花两天时间?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/939785

相关文章

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

html css jquery选项卡 代码练习小项目

在学习 html 和 css jquery 结合使用的时候 做好是能尝试做一些简单的小功能,来提高自己的 逻辑能力,熟悉代码的编写语法 下面分享一段代码 使用html css jquery选项卡 代码练习 <div class="box"><dl class="tab"><dd class="active">手机</dd><dd>家电</dd><dd>服装</dd><dd>数码</dd><dd