0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

让程序员烦恼的十件事

工程师人生 来源:网络整理 作者:工程师吴畏 2018-11-14 16:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

每个程序员都有自己烦恼的事。不论这事指的是范围蠕变(scope creep),还是 指匈牙利变量命名 (Hungarian notation),还是有臭味的同事,我们都明白,这是我们有我们行业里的特定的烦恼。 下面要说的就是十大让程序员们烦恼的事情,这是我从最 近的在StackOverflow上的一个调查里整理出来的,并且掺杂了一些我个人的经验:

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

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

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

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

9. 干扰

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

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

8. 范围蠕变(Scope creep)

来自 Wikipedia 的解释:

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

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

伯乐在线推荐阅读:《“出错了”和报告Bug的艺术》、《如何有效地报告Bug》

2. 其他程序员

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

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

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

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

自己的事情处理不好。

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

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

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

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

哈,好消息。你并不孤单。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序员
    +关注

    关注

    4

    文章

    955

    浏览量

    30784
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 410次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    开鸿智谷“以赛促学、以赛选才”|1024程序员节暨开源鸿蒙构建大会圆满落幕!

    10月24日,由开鸿智谷联合主办的长沙1024程序员节暨开源鸿蒙构建大会在长沙圆满落幕。本次活动以“湘聚长沙,共赴热AI”为主题,通过技术分享与实战竞赛相结合的方式,着力培养“开源鸿蒙+AI”领域
    的头像 发表于 10-27 17:58 466次阅读
    开鸿智谷“以赛促学、以赛选才”|1024<b class='flag-5'>程序员</b>节暨开源鸿蒙构建大会圆满落幕!

    山东零碳园区要做的“十件事

    零碳园区是指通过规划、设计、技术、管理等方式,使园区内二氧化碳排放降至“近零”水平,并具备“净零”潜力的园区。山东建设内容主要包括:19821800313 1. 大力实施新能源和可再生能源电力替代。 强化与周边光伏、风电、生物质能等发电资源的对接,推进“源网荷储”一体化项目,发展绿电规模化应用,推广分布式自发自用、虚拟电厂等模式。 2. 持续提高绿色能源利用水平。 利用闲置资源发展核能供热、地热、生物质能等,建立“电、热、冷、
    的头像 发表于 08-21 15:47 258次阅读
    山东零碳园区要做的“<b class='flag-5'>十件事</b>”

    语音识别---大家怎么看呢?

    语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来10年内,语音识别技术将进入工业、家电、通信、汽车电子、医疗、家庭服务、消费电子产品等各个领域。 语音识别听写机在一些领域的应用被美国新闻界评为1997年计算机发展十件大事之一。
    发表于 08-09 10:54

    切记!使用树莓派时绝对不能做的7件事

    如今,树莓派几乎可用于任何场景。然而,这种多功能性有时会你忘记,这款单板计算机并非坚不可摧,一个小失误就可能彻底损坏主板。我桌上有台树莓派4B和树莓派Pico,就因为疏忽了一些安全注意事项,现在
    的头像 发表于 07-19 08:34 636次阅读
    切记!使用树莓派时绝对不能做的7<b class='flag-5'>件事</b>!

    是否可以保持与 SOM 的数据连接并将连接到 CYPD3177 的 CC 线路同时设置 USB 电压?

    的 CC 线路同时设置 USB 电压? 另一件事是,我想减少我们花在编程上的时间,出于这个原因,我不想使用 i2c 线路,只想使用电阻来设定电压(它将固定在 12V 或 15V),我应该 i2c 浮动还是连接上拉电阻?
    发表于 05-27 08:04

    程序设计与数据结构

    的地址)出发,采用推导的方式,深入浅出的分析了广大C程序员学习和开发中遇到的难点。 2. 从方法论的高度对C语言在数据结构和算法方面的应用进行了深入讲解和阐述。 3. 讲解了绝大多数C程序员开发
    发表于 05-13 16:45

    在构建自动布线工具之前我会告诉自己的13件事

    在为 tscircuit(一款用TypeScript编写的开源电子CAD内核)开发自动布线工具上耗费了约一年时间。如果我能回到一年前,以下是我会告诉自己的13件事: 一个键盘项目自动布线的中间阶段 1. 像熟悉自己的手掌一样掌握 A* 算法 如果我能当一天国王,我会把 A* 算法改名
    的头像 发表于 05-08 11:20 1029次阅读
    在构建自动布线工具之前我会告诉自己的13<b class='flag-5'>件事</b>

    励手把手教你:交流恒流源接负载,千万别踩这5个坑!

    大家好,我是吉励的技术老张,干了几年电源行业,见过太多客户因为“接负载”不当,把设备烧坏、测试出问题,甚至引发安全隐患。 今天就用大白话,给大家总结交流恒流源接负载时必须注意的5件事,看完直接
    的头像 发表于 04-25 15:44 672次阅读

    达实智能2024年度十件大事盘点

    2025年1月20日,达实智能2024年度总结及2025年度计划会议在总部达实智能大厦举办。会议上,达实智能2024年度公司十件大事正式公布
    的头像 发表于 01-21 17:17 1062次阅读

    阿里云升级通义灵码AI程序员,全面上线

    近日,阿里云宣布其备受瞩目的通义灵码AI程序员已正式全面上线,为开发者带来更为强大和便捷的编程辅助工具。 此次上线的通义灵码AI程序员,在功能上实现了全面升级。现在,它支持VS Code
    的头像 发表于 01-09 11:16 953次阅读

    字开槽VS冠簧结构,连接器接触如何选?

    连接器主要由接触、壳体、绝缘体、附件四个部分组成,其中接触是连接器完成电连接功能的核心零,又被称作接触端子。Amass XT系列连接器采用的接触
    的头像 发表于 12-25 08:43 1715次阅读
    <b class='flag-5'>十</b>字开槽VS冠簧结构,连接器接触<b class='flag-5'>件</b>如何选?

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册