汇总程序员年度十大懊恼事件

2024-02-22 16:40

本文主要是介绍汇总程序员年度十大懊恼事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

10. 注释说明“是什么”,而不是“为什么”


入门级编程课程教导学生要学会频繁且尽早地注释。不可否认在学习编程的起步阶段这方法的确是相当有效的(即使看到最简单的代码行都像天书)。然而许多程序员即使已经从一只小菜鸟长大成一位计算机牛人,也还是把这个习惯给延续了下来。


r = n / 2; // Set r to n divided by 2// Loop while r – (n/r) is greater than t 
while (abs ( r – (n/r) ) > t) {r = 0.5 * ( r + (n/r) ); // Set r to half of r + (n/r) }


看明白上面的代码是啥意思没?

四个字:云里雾里。


上述问题就是,虽然有很多注释,但是却没有说明为什么要写这些代码。下面将上述相同的代码换用另一种注释,那效果就大大不同了。


// square root of n with Newton-Raphson approximation r = n / 2;while ( abs ( r – (n/r) ) > t ) {r = 0.5 * ( r + (n/r) );}


是不是好多了!虽然我们还是没有完全理解这段代码是什么意思,但是至少我们精简了代码,清爽多了。


写注释是为了帮助读者理解代码。这里假设,所有阅读代码的人都已经对 for 循环如何运行有了基本的了解。他们可能不清楚的是,你的代码如何奏效或者你为什么选择这条路径来实现。


9. 各种打搅


在大多数情况下,程序员的思绪比起法拉利更像是火车,需要慢慢启动,也就是说我们得酝酿一下才能进入状态。但是一旦我们全身心投入的时候,就会高效完成很多令人啧啧称赞的代码。只是很不幸的是,这是很难达到的境界,因为我们的思路总是不断受到客户和同事的打搅。


8. 范围蔓延


维基百科将范围蔓延定义为“在项目范围内不受控制的变化”。范围蔓延会使得一个相对简单的请求延伸成一个极为复杂和耗时的任务。它就是运用一些看似方便无害的要求蔓延范围,一步一步破坏项目的时间表:

  • 版本1:显示所在位置的地图

  • 版本2:显示所在位置的三维地图

  • 版本3:显示所在位置的三维地图,精确到可以作为飞行导航


7. 管理层不懂编程


当然,也会有例外,此点标题仅为个人遭遇,如有雷同,纯属巧合。


首先我们要承认,管理不是个简单活。下属会讨厌你:他们脆弱的内心有时也会受伤。并且要保持一大群人的团结和凝聚力几乎就像是座山一样的任务。然 而,任务艰巨并不意味着管理者能不对他们的下属有一个基本的了解。当管理层无法把握工作理念,就会使员工出现范围蔓延,超出完成期限,感到挫折心情沮丧等 等状况。这是很多程序员在日常工作中经常抱怨和焦虑的根本原因。


6. 写文档


没错,的确有很多文档生成工具,但我的经验告诉我,这些工具都是只适合生成 API 文档,以供其他程序员参考。如果你开发的软件是很多人在日常生活中都会用到的,那么你最好写一些即使外行人也能理解的文档(例如,应用程序如何工作、故障诊断指南等等)。

好吧,有些程序员可不乐意干这事儿。大家经常做的是,快速浏览开源项目,然后开始不断的搜寻文档来获取帮助。


我敢打保票的说,不管在哪里,几乎所有的程序员被要求写文档时,都会说:“不能让其他人去写吗?”


5. 缺少文档的程序


好吧,我从来没有说过我们程序员是说一套做一套的人。程序员经常被要求在项目中用到第三方的类库和应用。这使得我们不得不需要文档。但是正如我在上面那条说的那样,程序员痛恨写文档。真是个矛盾又纠结啊!


当我们需要使用一个第三方类库是,却不知道至少有一半的 API 有什么用,没有什么比这个更让人崩溃了。知道函数 poorlyNamedFunctionA ()和 poorlyButSimilarlyNamedFunctionB ()的区别不?当我访问 PropertyX 时是不是需要先做一个 null 测试?如果缺少文档,我估计我得通过自己的测试和错误报告才能知道结果,哦,my god!


4. 硬件(总是被当成修电脑的)


任何一个程序员要是被叫去调试数据库服务器上一种奇怪的宕机现象,或者去解决 RAID 驱动器不能正常工作的问题,而最后发现却是硬件的原因,orz 都会痛苦不已。话说,不知道哪里来的误解,人们竟然会以为程序员这种整天捣鼓电脑的家伙,肯定知道如何修电脑。好吧,有些程序员确实会修(大概是他们大学 时泡妹子修炼的技能?),但是,我敢打包票,大多数程序员是不知道的,或者对程序被编译成机器码后是如何工作的毫不关心。


我们关心什么呢?我们关心的是我们做出来的东西是否符合需求,这样我们才能集中精力去解决更高级别的任务。


3. 含糊不清


“哎呀,我的网站出问题了”、“XX 功能不正常”,这种指向性不明确的要求最痛苦了。我特别讶异的是,当我们要求那些非程序员重现问题时,他们竟然会愤怒不已。难道他们不知道,仅仅一句“电脑坏掉了,快点修复一下”,我们是没办法开始工作的,我们需要更多的信息。


软件的运行,在大多数情况下,是有迹可循的。我们也喜欢这种方式。请迁就我们,帮助我们找出是在哪一步出现的问题,而不是简单一句“修复”。


2. 与其他程序员的相处


程序员经常和其他程序员合不来。不要装的很惊讶,内心早承认了吧,亲爱的程序员们。关于这方面的事例我随口就可以列出十大条,甚至可以另外单独写篇博客,所以在本文中我仅列出几个之所以会和同事难以好好相处的常见原因:


  • 脾气暴躁,态度不友好。

  • 不明白什么时候该去讨论系统的架构,什么时候该开工。

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

  • 自己的事情处理不好。

  • 对代码库和项目兴致缺缺。


这还不是最糟糕的,还有个重量级的“程序员杀手”——No.1 在后面呢……


1. 6 个月后再看自己的代码


别打喷嚏,我发现了一个 bug。


你有没有回过头去看看自己以前写的代码,有没有情不自禁地捶胸顿足?有没有在懊恼自己当初怎么会这么傻逼,写出这种垃圾玩意!删掉,删掉,通通删掉!


好吧,你可以开心一下,这种事并不单单发生在你身上。


我们的编程世界是在不断变化的。今天或许是最棒的技术,明天搞不好就过时了。我们永远写不出完美的代码,因为评价的标准也在随着时代的进步而不断提高。无论我们写出来的代码现在看来是要多完美有多完美,但是很可能在不久之后就是被人嘲笑的对象了。


这的确让人情不自禁的沮丧,因为即使我们现在怎么努力去学习最新最棒的开发工具、设计、框架,以及开发方法,我们总是比最新的技术发展趋势慢了一 步。于我而言,这是作为一个程序员最为懊恼的事情了,没有之一,所以我把这一条列为 No.1。我们能做的就是不断更新自己的技术,不过有时候,我却会觉得我就像是个搞沙雕的,不断推到重做。


更多资讯请关注【传智播客】官方微信:itcastedu 



这篇关于汇总程序员年度十大懊恼事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/735864

相关文章

Linux实现线程同步的多种方式汇总

《Linux实现线程同步的多种方式汇总》本文详细介绍了Linux下线程同步的多种方法,包括互斥锁、自旋锁、信号量以及它们的使用示例,通过这些同步机制,可以解决线程安全问题,防止资源竞争导致的错误,示例... 目录什么是线程同步?一、互斥锁(单人洗手间规则)适用场景:特点:二、条件变量(咖啡厅取餐系统)工作流

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,