程序员的十大技术烦恼

10. 注释 — 只解释了“how”却没有解释“why”

入门级的编程课程通常会教育学生们写代码前先写注释、而且要尽量多注释。 这种教育的出发点是“多注释肯定比少注释好、少注释肯定比没注释好”。可不幸的是,很多的程序员把这当成了一种任务,对每一行代码都注释一下。

 

r = n / 2; // 让 r 等于 n 除以 2   


// 当 r - (n/r) 大于 t 时进行循环  

while ( abs( r - (n/r) ) > t ) {  

r = 0.5 * ( r + (n/r) ); // 设置 r 等于 r + (n/r) 的一半  

} 
 

 

经过这样的注释,你否明白了这段代码是干什么的?的确,我也没明白。 问题就在于,虽然有大量的注释,可它们只是描述了代码是干什么了,却没有说明代码为什么要这样写。

现在,请看一下我们采用另外一种方式对同一段代码进行的注释:

// 使用牛顿-Raphson算法求n的平方根近似值   
r = n / 2;  

while ( abs( r - (n/r) ) > t ) {  
r = 0.5 * ( r + (n/r) );  
} 
 

这就好多了!也许我们还是不能完全明白这段代码的作用,但至少是有了一点方向了。

注释是用来帮助读者理解代码的,不是用来解释语法的。 我可以大胆的认为,读者对for循环的工作原理是了解的;所以没必要写这样的注释:“// 对客户列表进行for循环操作”。读者不明白的是你的代码是做什么用的,你为什么要采用这种方式实现它。

9. 干扰

很少有程序员能在眨眼之间从一种活动中转换到编程的状态中。通常情况下,我们更类似于需要慢慢启动的火车,而不是能突然加速的 法拉利; 我们需要一定的时间才能进入工作状态,一旦我们进入稳定有效的工作状态,我们的工作效果和产出会很丰硕。 不幸的是,当思路不断的被客户、经理、以及你的同事打断时,你的大脑很难进入编程的状态。

当我们干一件事情时,有太多的琐事需要我们放在心里,我们需要先放下这个事情,处理那个人事情,回头又干这个事情,还不能有差错。这些干扰会中 断我们的思路,而重新整理清楚思路又要你花费大量的时间,这是让人懊恼的、没有比这更让人泄气、让人有挫折感的过程了。

8. 范围蠕变(Scope creep)

范围蠕变(Scope creep) (也称作焦点蠕变(focus creep), 需求蠕变(requirement creep), 功能蠕变(feature creep),以及其它一些乱七八糟的演变词语),指在项目管理里项目的需求变更失控。 当一个项目的范围没有明确的定义清楚、没有文档化、不受控时就会出现这种现象。 这通常被认为是一种有负面影响的事情,应该尽力避免。

范围蠕变通常会把一个简单的需求变成一个复杂惊人的需要大量时间的巨无霸。 那些负责需求调研的家伙们只需要敲几下无辜的键盘就能把事情变成这样:

◆版本 1: 显示这个地区的地图

◆版本 2: 显示这个地区的地图,要三维立体的

◆版本 3: 显示这个地区的地图,要三维立体的,而且能够使用它作为飞行导航图

一个本来30分钟能完成的任务变成了一项要几百人/天才能完成的超级复杂的系统。更糟糕的是,大多数情况下,需求变更是发生在开发阶段 的,这样一来你需要重写代码,重新回归,有时要把前几天才开发的代码删除。

7. 管理者 — 完全不懂编程

管理工作不是一种简单的工作。人是一种让人很讨厌的动物; 我们善变、喜怒无常,我们都自以为天下第一。想让这样的一群人都感到满意和团结,你需要付出像山一样大的努力。 然而,这并不意味着管理者就可以在对下属的工作毫不理解的情况下进行管理。 当管理者对我们的工作没有一点知识概念时,后果只会是需求频繁变动,不现实的工期,普遍的挫折感(管理者和开发人员)。程序员们对此的抱怨相当普遍,这也是产生争执不合的根源。

6. 写文档

在说这个条目之前我先承认,我们确实有很多的文档生成工具,但据我的经验,这些工具都是只适合生成API文档,以供其他程序员参考。如果你开发 的软件是平时人们每天都要用的,你必须要写一些外行人(例如你的实施,客服等)都能理解的文档手册。

我们可以很容易的看出,有些事情程序员们极不愿意去做。 你可以简单的回顾一下所有的开源项目。 人们百折不挠的对这些项目的一个索求是什么:文档。
我敢打保票的说,不管在哪里,至少会有一半的程序员当要求写文档时会说:“不能让其他人去写吗?“。

5. 程序 — 缺少文档

我可从来没说过我们程序员是说一套做一套的人。 程序员们经常会在他们的项目里用到第三方的类库和应用。 于是,我们需要文档。 很不幸呀,就像我在第6条里说的那样,程序员们痛恨写文档。这戏剧性的事情发生在我们自己身上。

当你需要使用一个第三方类库时发现,至少有一半的API无从知道是干什么好用的,没有任何事情比这个更打击人的了。 函数 poorlyNamedFunctionA() 和函数 poorlyButSimilarlyNamedFunctionB() 有什么区别? 在我使用 PropertyX 属性前是否需要测试一下它是不是 null 值?我估计只有通过自己的测试和报错才能弄清楚!。

4. 硬件

任何一个曾经被叫去调试一个数据库服务器上奇怪的宕机现象,或是被叫去解决RAID驱动器不能正确的工作的问题的程序员,当发现是硬件问题时, 都会痛苦不已。 人们有一种普遍的误解,认为程序员就是搞电脑的,他们肯定知道如何修理电脑。 不可否认,有些程序员确实是个全才,但我估计,绝大部分程序员都不知道,或者根本不关心当程序被编译成机器码后如何工作的。我们只关心做出来的东西是否符 合需求文档,这样我们才能集中精力去解决这上层的任务。

3. 含糊不清

“网站宕机了”. “XX功能工作不正常”。 处理含糊不清的任务是种痛苦。 每次当非程序员被要求重现他们所遇到的问题时表现出的愤怒都让我吃惊不已。 他们似乎不太明白,仅仅一句”它宕机了,修复它!”是无法让我们开始工作的,我们需要更多的信息。

软件的运行是(大部分情况下)有迹可寻的。我们也乐见与此。 请迁就我们,帮我们指出是在哪个阶段,什么情况下出的问题,而不是简单的说一句”修复它“。

2. 其他程序员

程序员经常和其他程序员合不来。诧异吗,但这是真的。 这方面的事情我可以轻松的列出十大条,讲细点甚至可以单独写篇博客,所以这里我只列出几个常见的、让其他同事感到懊恼的程序员的特征:

◆脾气暴躁以至态度极不友好。

◆不能明白什么时候该去讨论系统的架构,什么时候是应该去动手去做。

◆无法进行有效的沟通,使用易于误解的专业术语。

◆自己的事情处理不好。

◆对要做的程序和项目缺乏兴趣。

那么,这最后的,但不是最糟糕的,序号为1的让程序员们烦恼的…

1. 自己写的代码 — 6个月以后的

Don’t sneeze, I think I see a bug.

回顾一下自己以前写的代码,是否也会愁眉苦脸?当时怎么会这么愚蠢!怎么能编写成这样的东西!烧掉!丢到火里!

现实是,软件技术界是一个不断变化的世界。 今天被看成是最好的方式,明天也许就会过时。 我们不可能写出完美的代码,因为判断我们的程序好坏的标准日新月异。 这令人很不爽,你的作品,今天看来是那么的完美,但也许不久之后就会变成被人嘲笑的对象了。 真是让人沮丧,因为不论我们如何努力的学习最新最棒的开发工具,设计,框架,以及开发方法,我们总是比最新的技术发展趋势慢了一拍。 对于我来说,这是做一个程序员最苦恼的事情了。我们不断的升级技术,是为了让软件更好,但却禁不住感到,我就像一个做沙毯(sand-painting)的和尚。

 

Claude Code 分布式并行开发最佳实践:1中枢+10Worker跨多Git仓库全流程落地 本文介绍了一套基于Claude Code和Git Worktree的分布式并行开发方案,解决多仓库、微服务开发中的核心痛点。方案采用"1个决策中枢+10个并行Worker"架构,中枢负责任务拆解和调度,每个Worker绑定独立仓库实现完全隔离开发。关键优势包括:任务并行效率提升10倍、跨仓库依赖自动编排、版本统一管理、零第三方依赖。文章详细提供了环境准备、架构设计、中枢搭建和初始化脚本等全流程落地指南,特别适合多仓库协同的全栈开发场景。 阅读详情

相关推荐

RK3588s Camera ISP调优详解(一)ISP调试工具及环境配置(附下载途径)

本文主要介绍了rkisp tuner工具的连接与使用,并附上了工具及依赖库的下载地址

zongheng_raobo的博客 6269

程序员那些琐碎的负面情绪

做网站的设计师,有时候也可以兼推销人员。就怕什么都不懂的推销人员拿着合同去签约。轻轻松松一笔单谈好了,什么都能实现,只要你说什么,我就答应做什么。为了拿到项目,向客户大包大揽,甚至完全不顾公司的现有开发能力向客户承诺很多功能。遇到那些可以糊弄的外行人员,公司也可以糊弄糊弄就过去了,但是遇到刁钻的客户,签5000块钱的单,而最后却因为这样那样的修改,加功能,加程序.......

开发者导航 308

国际参考电离层2020模型Matlab(IRI-2020)

国际参考电离层 (IRI) 是一个国际项目 由空间研究委员会 (COSPAR) 和国际 无线电科学联盟 (URSI)。这些组织组成了一个工作组 (在 60 年代后期产生了电离层的经验标准模型, 基于所有可用数据源 (几个稳步改进的版本 模型已经发布。电子密度、电子温度、离子温度、 离子组成(O+、H+、He+、N+、NO+、O+2、簇离子)、赤道垂直离子漂移、垂直电离层电子含量(vTEC;

weixin_44392003的博客 4880

程序员10大烦恼

此处有雷区,闲杂人等请勿靠近嘿嘿 1、困 哥,你那个房子我给你看了下,这边小区应该有合适的,你看什么时候有时间过来。 好的好的,就今天晚上吧。 凌晨2点终于把这个bug解决了,美女产品很关心,准备请客吃宵夜。我没气的说:“宵夜就算了,你先让我睡一觉吧!”,美女产品脸红的说了句讨厌,然后在安静的坐在我身边不说话,害的我又重现了下,bug解决了啊~ 哥,那个房子有人定了,我又给你找了一个,你看有时间过来看下吗? ...

码眼的博客 1180

【STABLE_BASELINE3】强化学习算法实战:模型的保存,读取,再训练

STABLE-BASELINE3,模型读取,再训练:有时候需要在已经训练好的模型基础上进行再次训练。

Kiek17的博客 4867

这可是全网网工数通方向学习路线最完整,最详细的版本,没有之一

文章篇幅较长,耐心看完你一定有所收获。

最铁头的网工博客 2万+

太深刻了!程序员焦虑的真相!

在互联网,AI浪潮的推动下,程序员已然成为新时代的民工,他们既享受着高薪的待遇,。作为程序员你有职业焦虑吗?今天我和大家。

qkh1234567的博客 1380

算法之动态规划(DP)求解完全背包问题

算法之动态规划(DP)求解01背包问题 上面这篇文章主要讲解了01背包问题和动态规划算法,如果你不了解动态规划算法,建议先浏览一下这篇文章熟悉一下,因为,本文的算法思想是基于这篇文章的。 1、什么是完全背包问题? **01背包问题:**有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品只能取1次放入背包中,背包所有物品权重和最大是多少? 完全背包: 有一个背包的容积为V,有N个物品,每个物品的体积为v[i],权重为w[i],每个物品可以取无限次放入背包中,背包所有物品权重和

PRML_MAN的博客 2万+

【工作】程序员工作压力八个常见来源与建议&缓解压力小窍门

本文介绍了程序员工作压力的八个常见来源与建议,并且补充了其它缓解压力的小窍门~

weixin_42346952的博客 1631

2026年职业院校技能大赛中职移动应用与开发模块二10套题库开发培训视频(全套)

2026年职业院校技能大赛中职移动应用与开发模块二10套题库开发培训视频(全套)

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 352

【SigmaStudio】自定义算法组件之源码规范(二)

工作中自定义算法组件一般是dll文件,生成dll文件需要XML文件和DLB文件,记录一下DLB文件代码的编码规范,定义SigmaStudio SHARC算法开发的编码规则,涵盖函数原型、内存管理、接口结构体等关键要求,确保算法模块与SigmaStudio环境兼容

liang_song的博客 1377

让程序员最头疼的事儿是什么?给变量起个有意义的名字

这是一个来自Quora的问题,“起有意义的变量名”得票最多,其他一些头疼的事儿还有: 向家人解释自己从事的工作究竟是什么 估计任务完成的时程 理解没有注释的大段代码 完成自己不认同的功能 必须碰别人的糟糕代码(这可能是因果报应) 写详尽的文档 写测试 ...

lispython的专栏 404

46、搭建与配置FTP服务器全攻略

本文详细介绍了如何搭建与配置FTP服务器,以vsftpd为例,涵盖了FTP基础概念、安装步骤、服务控制、安全设置、用户权限管理、文件上传支持、互联网共享配置、客户端使用以及常见问题解决等内容。旨在帮助用户高效、安全地实现文件共享与管理。

time3的博客 88

解析“程序员的十大技术烦恼”

每个程序员都会因遇到各种各样的问题,有时这些问题就是烦恼。本文总结了一些让程序员的烦心事儿,在Coding时你是否也遇到过这些烦恼?今天我们来看看程序员的烦恼。每个程序员都有自己烦心事,不论这事指的是范围蠕变(scope creep),还是指匈牙利变量命名 (Hungarian notation),我们都明白,这是我们有我们行业里的特定的烦恼。 下面要说的就是让程序员们烦恼的十件事情。

Spring 1537

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[转载]【转】程序员的十大技术烦恼

转载留名!原文地址:【转】程序员的十大技术烦恼作者:永不言敗每个程序员都有自己烦心事,不论这事指的是范围蠕变(scope creep),还是指匈牙利变量命名 (Hungarian notation),我们都明白,这是我们有我们行业里的特定的烦恼。 下面要说的就是让程序员们烦恼的十件事情。 10. 注释 — 只解释了“how”却没有解释“why” 入门级的编程课程通常会教育学生们写代码前先写...

weixin_30480583的博客 107

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【自省篇】程序员的十大技术烦恼

http://developer.51cto.com/art/201005/202715.htm51CTO之前曾介绍过程序员进阶架构师的十项必备技能以及阻碍程序员成长的五大原因, 今天我们来看看程序员的烦恼。每个程序员都有自己烦心事,不论这事指的是范围蠕变(scope creep),还是指匈牙利变量命名 (Hungarian notation),我们都明白,这是我们有我们行业里的特定的烦恼。 下...

weixin_30338497的博客 84

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

让程序员愤怒的10种事

今天偶然看到的一篇文章,看了觉得很有意思,虽然自己不是做开发的,但是对于做测试的来说,同样有借鉴的意义!正所谓“知己知彼百战不殆”! ----------------------------------以下为转载的分割线-...

ctest3004的博客 174

程序员的十大烦恼

程序员的十大烦恼 发表于23小时前| 2736次阅读| 来源aqee| 11 条评论| 作者aqee 程序员经验 http://www.youkuaiyun.com/article/2012-11-22/2812154-Ten-Trouble-Programmers 摘要:本文总结十大让程序员们烦恼的事情,这是StackOverflow上的一个调查里整理出来的,并且掺杂了作者的一些个人

程序猿的实验室 1106

转 程序员的十大烦恼

2010年05月31日09:52 来源:外刊IT评论 作者:外刊IT评论 编辑:覃里 评论:0条本文Tag: IT业界IT人才程序员<br />  【IT168 评论】每个程序员都有自己烦恼的事。不论这事指的是范围蠕变(scope creep),还是指匈牙利变量命名 (Hungarian notation),还是有臭味的同事,我们都明白,这是我们有我们行业里的特定的烦恼。 下面要说的就是十大让程序员们烦恼的事情,这是我从最近的在StackOverflow上的一个调查里整理出来的,并且掺杂了一些我个人的经验:

liuzheng2684的专栏 497

程序员才有的十大烦恼,看看你中招了没

编程课程通常会教育学生们写代码前先写注释、而且要尽量多注释。 这种教育的出发点是“多注释肯定比少注释好、少注释肯定比没注释好”。可不幸的是,很多的程序员把这当成了一种任务,对每一行代码都注释一下。 现在,请看一下我们采用另外一种方式对同一段代码进行的注释:   如果有想学习java的程序员,可来我们的java学习扣qun:72340,3928免费送java的视频教程噢!小编是一名5年...

weixin_43030648的博客 260
上一篇: TDD(Test-Driven Development)测试驱动开发
下一篇: 得体说话35招
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值