10. 注释说明“是什么”,而不是“为什么”
入门级的编程教学强调学生应学会经常且及早地添加注释。在编程学习的初级阶段,这种方法无疑是非常有效的——即便是面对看似简单的代码,也能让人感到如同解读天书。尽管如此,许多程序员即便在成为计算机领域的专家之后,依然保持着这一习惯。
将r值设定为n除以2;循环进行,直到r减去n除以r的绝对值大于t;在循环体内,将r更新为r加上n除以r的平均值的一半。
看明白上面的代码是啥意思没?
四个字:云里雾里。
这个问题在于,尽管存在众多注释,却未能阐明编写这些代码的缘由。若将此段代码替换为另一种形式的注释,其效果将截然不同。
采用牛顿-拉夫森近似法计算n的平方根,初始值设为r等于n的一半;当r与n除以r的差值的绝对值大于阈值t时,循环执行以下步骤:r更新为r加上n除以r的平均值的一半。
感觉好多了呢!尽管我们依旧未能彻底弄懂这段代码的具体含义,但至少我们已经对其进行了简化,现在的代码看起来清晰了许多。
编写注释旨在协助读者洞悉代码内容。然而,在此前提下,我们假定所有阅读代码的个体均对for循环的运作机制具备初步认知。然而,他们或许并不明了你的代码是如何发挥作用的,亦或是你为何选取此路径进行编码。
9. 各种打搅
通常,程序员的思维如同缓缓启动的火车,需经过一段时间的预热方能进入高效状态。然而,当我们全情投入时,往往能迅速产出令人赞叹的代码。遗憾的是,这种境界并非易得,因为我们的思维时常受到客户与同事的干扰。
8. 范围蔓延
维基百科将范围蔓延解释为“项目内部发生的未经授权的变动”。这种蔓延会导致原本简单的需求演变成极其复杂且耗时的工作。它通过逐步引入一些看似便捷且无害的额外要求,逐渐侵蚀项目的进度安排。
7. 管理层不懂编程
自然,也存在特殊情形,本标题仅代表个人经历,若与他人遭遇相似,那不过是偶然的吻合。
我们必须认识到,管理工作远非易事。下属可能会对你心生不满,因为他们的敏感心灵有时也会遭受伤害。同时,维持一个团队的团结与凝聚力,其难度几乎可与攀登高山相提并论。然而,尽管任务繁重,管理者仍需对下属有基本的了解。若管理层无法掌握工作理念,员工可能会出现工作范围扩大、延期完成、情绪低落、挫败感增强等问题。这是很多程序员在日常工作中经常抱怨和焦虑的根本原因。
6. 写文档
确实,市面上存在众多文档制作软件,然而根据我的实践体会,这些软件主要适用于创建API文档,供其他开发者查阅。特别是当你开发的软件被广泛用于人们的日常生活时,你更应着手编写易于非专业人士理解的文档,比如解释应用程序运作原理、提供故障排查指南等内容。
某些程序员对此并不感兴趣。他们通常的做法是,先快速地审视开源项目,接着便持续地查找相关文档以寻求指导。
我有十足信心地保证,无论身处何地,绝大多数程序员在面临撰写文档的任务时,往往会抱怨道:“难道不能让别人来承担这项工作吗?”
5. 缺少文档的程序
我从未宣称我们程序员是言行不一之辈。在项目开发中,我们程序员常常需要借助第三方库和应用。这导致我们不得不依赖文档。然而,正如我在前文所述,程序员普遍对编写文档感到厌恶。这真是一个充满矛盾和纠结的现象啊!
在使用某个第三方类库时,若对至少一半的API功能一无所知,那无疑是一种令人沮丧的经历。你是否清楚函数( )与函数( )之间的差异?在调用函数( )时,我是否需要先进行一次空值检测?若缺乏相关文档,我恐怕只能依靠自己的测试和错误记录来摸索出答案,天哪!
4. 硬件(总是被当成修电脑的)
程序员若被派遣去排查数据库服务器中不寻常的崩溃问题,或是处理RAID驱动器无法正常运行的情况,最终却发现是硬件故障,那么他们往往会感到极度痛苦。令人费解的是,有人竟然会错误地认为,那些整天与电脑打交道的程序员,必定懂得如何修理电脑。确实,部分程序员具备维修能力(或许这源自他们在大学期间追求恋爱时培养的技巧),然而,我可以肯定地说,绝大多数程序员对此并不了解,甚至对于程序编译成机器码后的运行机制也并不感兴趣。
我们究竟关注什么?我们关注的是所创造的产品是否满足所需,唯有如此,我们才能全神贯注地投入到更高层次的挑战中。
3. 含糊不清
哎呀,遇到我的网站出了故障或是XX功能失灵这类表述模糊的问题真是让人头疼。更让我感到惊讶的是,当我们请非程序员尝试复现问题时,他们竟然会感到非常恼火。他们难道不明白吗?仅仅说一句“电脑出了问题,赶紧修好”,我们是无法着手处理的,我们还需要更多的详细信息。
软件的运作过程,通常是可以追溯的;我们对此表示赞同。恳请您能体谅我们的需求,协助我们定位到具体是哪个环节出现了问题,而不仅仅是给出一个“修复”的答复。
2. 与其他程序员的相处
程序员们往往难以与同行和睦共处。这并非什么新鲜事,相信各位程序员内心早已有所认同。我轻而易举就能列举出十个关于此现象的案例,甚至可以专门撰写一篇博客来详细阐述。因此,在此文中,我仅挑选了几种导致与同事关系紧张的常见因素进行说明:
这并非最令人沮丧的,更严重的是,那位被称为“程序员杀手”的No.1还在后面等待着……
1. 6 个月后再看自己的代码
别打喷嚏,我发现了一个 bug。
你是否曾回顾过往所编写的代码,是否曾忍不住地拍打胸膛,懊悔不已?是否曾自责当初为何如此愚蠢,竟写出如此糟糕的代码!删去它,全部删去!
好吧,你可以开心一下,这种事并不单单发生在你身上。
编程领域始终处于动态演变之中。今日的尖端技术,明日可能已显陈旧。我们无法创作出绝对完美的代码,因为评判标准正随着时代的发展而不断提升。纵使我们眼前的代码看似无懈可击,但未来很可能沦为笑柄。
这无疑令人感到十分沮丧,即便我们竭尽全力去掌握最前沿、最优秀的开发工具、设计理念、框架和开发技巧,我们依旧无法跟上技术发展的步伐。对于我来说,这无疑是程序员最令人遗憾的事情,没有其他任何事情能与之相比,因此我将这一点列为首要问题。我们所能采取的措施是持续提升我们的技术能力,然而,在某个时刻,我竟然感觉自己仿佛成了一个热衷于堆砌沙雕的人,不停地推翻旧有成果,然后重新开始,不禁轻笑出声。
译文链接: