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

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

  1. r = n / 2; // 让 r 等于 n除以 2
  2. // 当 r - (n/r) 大于 t时进行循环
  3. while ( abs( r - (n/r)) > t ) {
  4. r = 0.5 * ( r + (n/r)); // 设置 r 等于 r + (n/r)的一半
  5. }

复制代码

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

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

  1. //使用牛顿-Raphson算法求n的平方根近似值
  2. r = n /2;
  3. while ( abs( r - (n/r)) > t ) {
  4. r = 0.5 * ( r + (n/r));
  5. }

复制代码

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

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

9. 干扰

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

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

8. 范围蠕变(Scope creep)

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

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

◆版本 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)的和尚。

原文链接:http://www.itjhwd.com/cxyfn/

转载于:https://www.cnblogs.com/seanp/p/7522669.html

只有程序员才有的十大烦恼相关推荐

  1. 别翻了,程序员必学十大经典排序算法,看这篇就够了

    说明 十大排序算法可以说是每个程序员都必须得掌握的了,花了一天的时间把代码实现且整理了一下,为了方便大家学习,我把它整理成一篇文章,每种算法会有简单的算法思想描述,为了方便大家理解,我还找来了动图演示 ...

  2. 程序员必备的十大职业生存技巧,收藏保命!

    如果你想在众多程序员中脱颖而出,下面这个现象是值得你深思的:随着敏捷开发.开发运营和分布式版本控制系统的愈渐流行,开发的重心逐渐从个人能力向小组合作转移. 在大多数情况下,团队.部门和个人会自行解决问 ...

  3. Scikit-Learn 学得如何?程序员不容错过十大实用功能来袭

    作者 | Rebecca Vickery 译者 | 弯月,责编 | 屠敏 封图 | CSDN 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) Scikit-learn是使用最广泛的P ...

  4. python入门教程软件-程序员带你十天快速入门Python,玩转电脑软件开发(四)

    本系列文章立志于从一个已经习得一门编程语言的基础之上,全面介绍Python的相关开发过程和相关经验总结.本篇文章主要是基于上一篇的程序员带你十天快速入门Python,玩转电脑软件开发(三)的基础之上, ...

  5. 【视频】谁说程序员无趣?这么多只有资深程序员才看懂的段子,会心一笑,深夜释放压力,随着视频哈哈哈哈哈笑出鹅声!

    谁说程序员无趣?这么多只有资深程序员才看懂的段子,会心一笑,深夜释放压力,随着视频哈哈哈哈哈笑出鹅声! 22个动图,诠释程序员的多维人生,哈哈哈一乐,加班的烦恼就没了. 一群快乐的程序员,给大家创造了 ...

  6. 什么样的程序员才是牛逼的程序员?

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:什么样的程序员才是牛逼的程序员? "阅读文本大概需要2.5分钟." 恰好最近在反省自己的日常生活,感觉每天 ...

  7. 什么样的程序员才算成熟? 让程序员认清自己的所处的阶段

    http://www.nowamagic.net/librarys/veda/detail/1450程序员在经历了若干年编程工作之后,很想知道自己水平到底如何?自己是否已经成为成熟的程序员?虽然程序员 ...

  8. 网传京东某程序员因压力太大,在商品页面置入骂人代码!京东辟谣:不关我们的事,外部商家干的!...

    程序员压力太大,能干出什么事?除了删库跑路,还能偷偷骂人. 前几天,网传京东某程序员因为压力过大,在商品介绍的代码里嵌入了一段骂公司的话. 据爆出的聊天记录中得知,这段代码只有在夜间模式下才能看见.虽 ...

  9. 笑看职场什么程序员才抢手,什么样的程序员涨薪多?

    ​程序员,怎么才算合格,不好说吧:他就像销售一样,一名销售员,比如网络销售卖茶叶,他卖茶叶很厉害呀,可是你让他去销售房地产,就算他有点销售的基础,也要重新去学怎么销售房地产,因为销售的东西是不一样的, ...

最新文章

  1. python包 wget_Python数据科学“冷门”库
  2. 基于OpenCV Haar实战级联分类器的使用
  3. require(),include(),require_once()和include_once()的异同
  4. Tomcat下找不到properties文件
  5. 软件版本控制Subversion和Git
  6. allego如何输出pdf_[LaTeX 尝试] 利用 PDF 附件和终端输出,从 Overleaf 里获得更多信息...
  7. 可以玩java游戏的软件_手机上能玩电脑游戏的软件有哪些 用什么软件可以在手机上玩电脑游戏...
  8. 一元线性模型的中位数回归
  9. 计算机网络战队名称大全,响亮的战队名字大全,吓到敌人了!
  10. C/C++ 反编译工具开源软件
  11. matlab标题斜体_Matlab中下标,斜体,及希腊字母的使用方法
  12. 这4款风格各异的电脑软件,免费又实用,后悔没早点知道
  13. Angular2+ 双向数据绑定
  14. DDoS防御选高防IP还是高防CDN?
  15. 第九章 代数系统 + 群、环、域 + 格,布尔代数
  16. c# char unsigned_关于C ++:将unsigned char *复制到unsigned char *
  17. 第2章 关系数据库(数据库系统概论)
  18. 克拉拉新作品《深爱》七夕上映,独立洒脱实力诠释职场女性
  19. 一元函数微分学的几何与物理应用
  20. html-----------------------

热门文章

  1. Android 三方库okhttp、gson、glide的使用
  2. Centos7 防火墙开放端口,查看状态,查看开放端口
  3. 010_Raphael事件
  4. MyBatis之使用JSONObject代替JavaBean优雅返回多表查询结果
  5. python开发环境anaconda_搭建Python开发环境,用Anaconda + PyQt + Pycharm
  6. activexobject对象不能创建_【设计模式】建造者模式:你创建对象的方式有它丝滑吗?...
  7. 新闻频道管理的炫酷实现
  8. vtuber面部捕捉工具_泰国程序员开发VTuber形象生成系统,人人都能当虚拟偶像
  9. jQuery 选择器汇总-思维导图-选择器
  10. taro引入f2图表_Package - taro-f2