程序员这一生,避免不了的让你抓狂沮丧的10件事

简介: 软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。对于非软件开发人员来说,开发人员的工作看起来一定很甜蜜:很多公司都需求这方面人才,得到的报酬真的很不错,公司给你各种有趣的福利。但是真相却是,如同任何其他的工作一样,程序员也有那些扒拉着头发恨不得拔光的时刻。

简评:软件开发是一个伟大的工作——和任何其他工作一样,它也有它的缺点。对于非软件开发人员来说,开发人员的工作看起来一定很甜蜜:很多公司都需求这方面人才,得到的报酬真的很不错,公司给你各种有趣的福利。但是真相却是,如同任何其他的工作一样,程序员也有那些扒拉着头发恨不得拔光的时刻。在软件工程师的一生中,有许多事情可能会让他或她沮丧不已。其实一个最典型的例子就是怎么努力地向别人解释“我不是修电脑的”!!!


cbb1a7147aa5e32c286eee7b2b1cafcebf270c0d

10.硬件
软件,如果没有硬件供其运行的话,自然无法做任何事情。尽管一些软件开发人员在最后依然自欺欺人地想要忽略硬件,但人力所不可避免的是,迟早,他们会在构建或调试程序时面临特定于硬件的问题。这就是为什么一些程序员强烈建议新的软件工程师熟悉运行代码的底层硬件和系统,以减少未来的交恶。

引用:
    “任何曾经被调用来调试数据库服务器上的奇怪崩溃或为什么RAID驱动器不能正常工作的程序员,都知道最后发现是硬件问题的话该是一种怎么样的痛苦。”——Steve Borthwick
    “程序员讨厌硬件:因为他们总是不能归咎于硬件!”——匿名

9.整天坐着
除非你有带跑步机的办公桌,否则软件开发肯定不会是一个有氧活动。大多数程序员往往长时间地坐着,蜷缩在键盘上,盯着他们的计算机显示器。虽然说坐着比站着舒服,但总是这么坐着,坐久了就会变得很不舒服。这也是一件令人沮丧的事。

引用:
    “整天坐在椅子上,两眼紧盯屏幕。一段时间以后——首先是背部发起了抗议,接下来是颈椎喊不舒服,眼睛又酸又涩,头疼……腿开始不知道怎么安放……正如我试图用健身,打太极拳,练瑜伽,学气功,骑自行车上班来减轻久坐的痛苦——我真的忍受不了一天8+小时的久坐了。整天被困在办公室里……从太阳升起来,再到太阳下山——坐在那把蠢毙了的椅子上,任凭时光流逝。“——Markus Toman

8.调试
即使是最好、最精心设计的代码也会有bug。所以,理所当然地,开发人员必须定期花费时间来跟踪和修复软件缺陷,无论是他们自己的代码还是别人的代码。尽管有些错误可以很快被发现和镇压,但总有不少bug特会躲猫猫,寻寻觅觅,从而耗去了许多小时的开发时间,更不要提程序员的理智何存了。

引用:
    “发现一个难以重现的缺陷,在最糟糕的情况下,通过对相同片段的代码进行随机通过和失败的集成测试来表现!你会有这样一种感觉,感觉自己可能永远找不到那些神秘又邪恶的bug潜伏在代码何处。哎呀呀!”——Emmanuel Ngwane
    “我们编写这样这样大的程序(有时甚至很小),在调试的时候,我们会钻研得很深入,以至于忘记了原来的bug是什么。”——Ayush Bhatnagar
    “调试,特别是当你正在处理涉及成千上万行代码的大项目时。大多数像我这样的极客倾向于使用投影仪调试,因为眼睛会更舒适。“Isaac Perez
    “Heisenbug(海森堡bug)。”Awal Garg

7.糟糕的文档
工作于其他开发人员的代码令人沮丧,但如果代码文档良好的话,至少会减少大量厌恶值。不幸的是,情况并非总是如此。如果软件没有很好的注释或缺乏良好的书面说明它是如何工作的,那么就需要耗费很长很长的时间来调试、增强或集成该软件。此外,对程序员的血压也不利。

引用:
    “最令人沮丧的事情是被雇用来工作于一个文档糟糕的软件。它让那些接管项目的人步履维艰。缺乏注释以及写得糟透了的语义,尤其是还要面对先前的程序员留下的一堆bug和错误。“——Angel Angeles III
    “理解某些白痴写的没有文档和没有注释的代码。”——Abhishek Chauhan
    “我,和大多数程序员一样,在维护文档写得不好的代码上花费了更多的时间,而不是在编写新的代码上。”——Walt Karas

6.合并代码
源代码控制系统,如Git或Subversion,是一个很好的工具,因为它允许多个开发人员在同一个代码库上同时工作,而无需顾忌他人。但是,最终,代码更改必须提交到存储库,而且可能会发生冲突,例如如果两个开发人员更改了相同的文件或程序的话。在这种情况下,这些更改必须合并在一起。有时这些合并冲突可以简单地解决,但有的时候,并不是手到擒来那样简单。

引用:
    “我也不喜欢合并,因为情况往往会是,你想以这种方式改变代码,而我想以那种方式改变代码,那么我们应该如何改变代码?我总能找到一种方式来整合我们双方的更改,但如果真有冲突的话,那将是一个尴尬的过程。”——Jessica Su

    “合并冲突——*呀拉索,那就是地狱恶魔*。”Koustuv Sinha

5.不切实际的期望
软件开发人员通常被认为是相当聪明的人。不幸的是,这种观念往往会导致老板、项目经理和销售人员对程序员或程序员的团队在某个日期内可以合理生产的东西产生不切实际的期望,并对可交付的成果过度承诺。反过来,这可能导致开发人员倦怠,使程序员间弥漫不爽不愉悦的氛围。

引用:
    “最令人沮丧的事情是,让人们醒悟错误的看法——我真的不是魔法师,我的知识基础有局限,使用可用工具在限定时间内完成的工作是一定的,以及试图向那些从来没有编程过的人解释什么是约束,真的好烦。”——Mark Miller
    “你的老板对你和你的同事有很高的期望,但没有提供足够的时间/资源来满足这些期望,甚至是靠近这些期望。”——Kevin Sekin
    “项目经理或业务分析师向客户承诺给月亮,然后程序员必须这样做,不行也得行。”——Ratnakar Sadasyula
    “我喜欢这样子,当有人问一些微不足道的事情时,就随便抛出一个功能,而这个功能需要用几十年时间推进CompSci领域来实现。”——Vladislav Zorov

4.其他人破坏我的代码
每个开发人员的代码,在某些时候,必须与其他开发人员编写的代码协同工作。无论是相同软件片段的不同部分,第三方库或工具,还是另一个完全不同的应用程序,没有一个开发人员的代码是一座孤岛。于此产生的不幸是,这意味着在匆忙中,因为不良的沟通或者粗心大意,程序员可能会破坏另一个程序员的代码,从而引发紧张、压力、以及通常还会伴随咒骂。

引用:
    “我曾经经历过的最悲催的沮丧是与另一个人共同编写一个程序,他改变了我们需要链接的库而没有告诉我。这意味着我对例程的调用缺少了变量或者添加了变量,甚至更糟的是,代码会在我没有访问的库中崩溃。”——Sheri Fresonke Harper
    “如果你的代码部分停止工作是因为其他人改变了他们的代码部分。那么通常他们的函数使用了比以前更多的参数。有时,参数被完全消除或被放置在不同的文件中。”——Jessica Su
    “不断地返回去返工你几天前才写的东西,原因是你写的东西’坏掉了’(第n次)——由于其他人(没有讨论)在实现改变更广泛的系统时,或者不测试或者不在乎测试失败——你听到的第一件事是“你的代码坏掉了”。”——Simon Hayes

3.人们不明白我是做什么的
尽管软件开发人员的数量明显在不断增加,更不用说我们所使用的一切对软件的依赖性也在增加,许多非技术人员仍然不明白软件开发人员究竟是干什么的。对于非技术人员来说,开发人员就是“技术人员”,而没有考虑到软件工作者和硬件工作者之间的区别。持续的误解和错误的期望,特别是来自于家人和朋友的期望,真的会让程序员抓狂。

引用:
    “非技术人员似乎有一个常见的误解——既然程序员使用电脑,那么我们肯定知道如何修理它们;这种想当然的看法有点像——假设Jenson Button知道如何驾驶F1赛车,那么他也一定知道如何拆卸和重新组装一个赛车齿轮箱。”——Steve Borthwick
    “是的,我以写代码谋生;但是,对于打印问题或你打不开的配件或无法启动的笔记本电脑,请恕我无能为力。除非你请我吃饭或请我喝啤酒,那么也许我可以提供帮助。”——Phil J
    “向人们解释我不是安装盗版操作系统和其他盗版软件的。”——Anbalagan Jeyabalachandran
    “家人和朋友认为你可以修复任何与电脑相关的东西。无论是硬件还是软件。他们不在乎。最后他们反而会嘲笑[你]。类似于:“既然你不能修复笔记本电脑的DVD光盘,那你算什么软件工程师?”——Jazib Babar
    “1%-2%的人知道你是做什么的。”——YasinPekşen

2.缺乏时间
像大多数工作一样,制作好的软件需要时间。不幸的是,在大多数努力中,上级管理者和/或客户通常不愿意等待很长时间,就想得到可正确实现的理想解决方案。因此,软件开发人员常常被迫快速完成某些工作,而这可能会导致攻击,技术债务和文档缺乏,所有这些都可能会造成更多令人头痛的问题,特别是对于那些将来不得不处理这些代码的程序员而言。

引用:
    “我想办好事情,但是快速、熟练做事方面就会产生很大的压力。有时它是有道理的,但我感觉当前的编程/商业文化已经在这个方向上走得太远了。”——Tikhon Jelvis
    “在我看来,匆匆忙忙编写的代码我称之为拼装代码,当然我也希望产品中的代码我能写得更优雅。但不妙的是,有一个恒定的时间压力…”——Gene Sewell
    “当你做的很多事情甚至与你知道的何为良好编程实践毫不相干的时候,但是因为快速比质量更重要,你不得不按他们要求你的那样做。”——Jose Palala
    “…时间和资金不够用于正确的解决方案,但却有足够的时间和资金用于修复快速和恶劣的解决方案,一遍又一遍又一遍。”——Romi Awasthy

1.使用其他人的代码

作为一个软件开发人员,迟早,你得使用其他人写的代码。无论是继承先于你工作之人的遗留代码,第三方API,还是由顾问编写的代码,你都不能完全避免修复、增强和/或整合他人程序的问题。当然,这样做会导致开发人员拔掉一些——或很多根——头发。

引用:
    “…最糟糕的地方是,你不得不处理一些其他人的代码,找出来,调试它,调整它。更糟糕的是,如果你前面的人已经离开了公司,那么就真的只能靠你自己摸索了。”——Ratnakar Sadasyula
    “试着破译成千上万行无注释的代码。”——Simon Zhu
    “我曾经多次处理过由顾问编写的特可怕的代码。”——Joe Samson
    “另一个我认为可能非常令人沮丧的问题是第三方API。你有时会非常依赖它们,然后你发现了一个问题或需要一个新的功能,但特定的API没有给你任何源来解决这个问题,所以你需要询问API的作者,期盼能有最好的结果。”——Kevin Sekin
    “语言和框架bug。你花费几天的时间找出为什么代码不工作的原因。结果却发现不过是触及了语言或框架上的bug。”——John Paul Alcala
    “发现找不到一个写的代码不应该远不合格的人…。”——Nani Tatiana Isobel


译文链接:http://www.codeceo.com/article/10-things-biggest-frustrations.html
英文原文:The terrible 10: Programmers’ biggest frustrations
本文转载自码农网  作者小峰 原文有修改

相关文章
|
4月前
|
人工智能 架构师 机器人
高薪程序员的三大窍门,你准备好了吗?
“高薪,月薪过万”已经成为人们对于程序员的刻板印象,但实际上对于二三线城市的码农来说,月薪过万似乎仍然是一个难以达到的目标。地理位置、房价以及升职加薪等问题让程序员陷入了薪资困境。作为一位程序员,若想获得自己理想的工资水平,需要具备哪些要素呢?
|
6月前
|
程序员
程序员的悲哀是什么?
程序员的悲哀是什么?
27 0
|
12月前
|
运维 程序员
Hi程序员,你幸福吗?
Hi程序员,你幸福吗?
|
SQL 设计模式 程序员
程序员的坏习惯
每位开发人员在自己的职业生涯、学习经历中,都会出一些坏习惯,本文将列举开发人员常犯的坏习惯。希望大家能够意识和改变这些坏习惯。
106 0
程序员的坏习惯
|
人工智能 前端开发 JavaScript
没想到真有此书!!!《一个程序员的自我修养》
最近在看程序员的自我修养 (豆瓣),作者陈逸鹤,一本写给程序员的思考书,其实市面上类似题材的书也不少,比如我看过的另外两本内外兼修:程序员的成长之路 (豆瓣)、程序员必读的职业规划书 (豆瓣),我只是后悔自己看的太晚,很多道理明白的太晚,要多看看此类书,给自己寻找点方向感和动力,我也一直在努力践行书中的一些方法和认识,本文是此书的第一部分内容的归纳,希望对你有帮助,感兴趣的朋友可以买来此书详细学习。
|
程序员
程序员 - 箴言集
程序员 - 箴言集
78 0
|
Java 应用服务中间件 程序员
一辈子做程序员怎么了?
今天在网上看到这样一组对话,应该是程序员和 HR 在谈薪资的沟通记录。(如下) (我们未对截图做打码处理,网上看到时已是如此) 这段对话发在我们微博后,引发热烈讨论: @游戏开发极客: 上赶着不是买卖,大公司找大牛,创业公司找想创业的人,聊两句就有结果了。
953 0
|
Python 机器学习/深度学习
听过很多道理,依然过不好这一生?
网上有一个经典的段子“听过很多道理,依然过不好这一生”。同样的道理我们也可以问问自己“学过这么多年英语,依然开不了口”,“看了这么多书,依然编不了程序”。
1039 0
|
SQL 程序员
这个程序员太厉害了,上帝要学编程,于是带走了他
1944年,詹姆斯·格雷出生在美国的旧金山,上大学时,凭借不错的数学功底,拿到了数学和工程双学位,并在1969年取得了计算机博士学位。他是结构化查询语言(SQL)的发明者。如果没有他,世界大概不会是今天的样子,自动提款机、网上购物,甚至是Google Earth的问世都要推迟。
1547 0
|
程序员
程序员最大的悲哀是什么?
这么一看,好像挺多悲哀的。
2327 0