程序员常见的 10 个坏习惯!你占了几个?

2023-10-23 19:10

本文主要是介绍程序员常见的 10 个坏习惯!你占了几个?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目      录

一、休息不够

二、拒绝寻求帮助

三、停止学习

四、混乱的代码

五、工作和生活的不平衡

六、糟糕的办公室政治

七、不能从错误中吸取教训

八、太早放弃

九、做一个无所不知的人

十、不接受建设性批评


每位开发人员在自己的职业生涯、学习经历中,都会“开发”出一些坏习惯。在这篇文章中,小编向你们展示我自己有或是老也改不了的坏习惯。我希望如果你刚开始这份事业,能够避免这些坏习惯;

如果你已经有了这些毛病,那希望你能够意识到它们,并可以开始改变。

 

一、休息不够

我建议你每天尽量多休息。我不能说那种具体而微的计划,因为每个人都不一样,但在一般意义上,你应该每小时都应该起身伸展四肢,活动一下,喝杯咖啡,吃点东西。很多时候,如果你思路停滞,那你需要休息一下,大脑得到休息有助于更容易地解决问题。所以找到适合你的休息方式。即使你认为自己不需要休息,但也试一下,你会发现自己的效率提高了不少。

 

二、拒绝寻求帮助

这一条在学习和工作场景中都很常见。我们很多人都不寻求帮助。原因很多,但我认为最主要的原因无非是自尊以及害怕让人认为自己啥也不会。我们很多人都有冒名顶替综合征,觉得自己不完全胜任自己的工作。我在公司里、在和客户打交道时、甚至在上课和辅导中都有这种感觉。我们认为寻求帮助会强化这种感觉。但事实上,它浪费了大量时间,阻碍了你的成长。

  • 其他真正的开发人员们都是视频或书籍一般的资源,甚至要比这些好太多。他们可以直接回答你的问题,帮助你真正的理解它。

  • 只有混蛋才会因为你问问题而批评你,这时候我会尽力避开这些人。

  • 如果你想要自己找到答案,不想寻求帮助,那也没问题,给自己一个时间限制。当你的前辈就在你旁边,他可能知道或至少可以帮到你的时候,千万不要浪费几天时间来寻找答案。

 

三、停止学习

我不管你是否是从业20余年的高级开发人员,你应该一直把自己当成一个学生。这比大多数职业的要求更高,因为这一行总在变化。没有一个开发人员可以知道所有事情的全部内容,他们这一分钟这样做,下一分钟就有变化发生,他们就必须学习更多。如果你骄傲自满,停止阅读、学习,你必然会落后。即便你有一份不需要学习任何新东西的工作,一旦你失去了那份工作(这并非不可能发生),你会远远落后。所以即使有这样的工作,我也建议你边工作边学习。

不管你喜欢那种语言、框架、库,你都要及时更新你的知识。如果你的职位需要的只是旧知识,这也是可理解的,因为很多领导倾向于认为如果公司还没没落,那就没必要修复。所以你仍然会发现有些团队用着过时的、不受支持的技术,只因为该技术还能运行。如果你边工作边学习这方面的新东西,那你就可以向团队展示更快、更高效、更简单的新技术是可能的。你或许能够说服他们更新技术、改善公司。

 

四、混乱的代码

这一条更多地是一种技术习惯,但也可能意味着很多事情。你应当以一种直观、高效、安全的方式写代码。这在自学的时候简直太难了,因为在相关的课程中,你学到的不是写某些代码的最佳方法,而是导师认为这么写最容易理解一些核心概念。所以,你必须进行一些额外的研究,找出清理你代码的最佳方法。

  • 我绝对建议你使用“避免重复代码原则”(DRY principle,don’t repeat yourself)。如果你遇到常见的代码块,那就创建某种“类”(class)或“函数”(function)来合并这部分功能,而不是仅仅重复它。这让代码更加简洁,节省了大量代码行,并且便于他人使用。

  • 你也要注意性能,比如压缩图片、缩小JavaScript和CSS。你可以使用task runner(如gulp)或其他工具自动完成压缩,面对小型任务,你甚至可以使用minifier.org等手动完成。

  • 另外,不要进行不必要的API接口调用,要使你的全栈应用程序以尽可能少的请求完成你需要的全部功能。以及测试……我在这上面犯了很多错,没有做足够的测试。就我所知,单元测试有助于搭建更健全的应用程序,避免潜在问题,节约时间和开销。但我就是很讨厌它,这可能是我最坏的习惯之一,也是我成为更好的开发人员需要解决的大问题。有时候我们回了节约时间减少测试,但在现实中,这样做会降低应用程序的性能、效率和可读性,而且与一开始就采用正确的方法相比,它可能在将来引起更大的麻烦。所以请记住这一点。

 

五、工作和生活的不平衡

工作和生活的平衡真的很重要,尤其是当我们成家以后。不管什么类型的程序员都要花大量的时间在工作上,这有很多原因:事情总在发生变化;我们遇到的问题让我们寸步难行;我们需要研究这些问题等等……这就导致了很多时候,我们不得不工作到很晚、很早就开始工作、周末也加班。这会让你远离生活中的一切,比如你爱的人们、你的个人爱好。你可能喜欢运动、远足或是在外吃大餐,但假如你一直要加班,你就没法做这些让你快乐的事情。

我在这个领域有很多经验。我和妻子有两个孩子,其中一个患有自闭症,但我没法像我想的那样花大量的时间陪他们。我面临着双重困境,因为我既要处理编码问题,又要处理内容创作者的问题,要不断地提出新想法,有质量地记录下来等等。

如果你是自由职业者,为自己工作,所有的生计都取决于完成工作,你只有把所有的事情做完才能拿到报酬。有报酬,也就必然得承受持续不断的担忧:自己是否能跟上进度、自己能否完成任务。压力真的很大,让我们不得不把其他事情从我们生活中挤走。并不是说在公司工作的人就不会经历这些,而是说当你需要考虑所有的事情的时候,压力等级完全不同。所以我很同情那些有自己生意的人。

但即便如此,你也不能让它控制你的生活,你必须为你的家人和朋友留出时间,或者更坦率地说,为你自己留出时间。生活可远比写几行代码丰富多了。做你自己喜欢的事情,给你的生活带来平衡。

 

六、糟糕的办公室政治

这一条是给那些在公司工作的人们的。你和其他人一起工作,但这反过来又会引起冲突、分歧、争论等等。许多开发人员十分傲慢,总认为自己是正确的,即使他们知道自己犯了错,他们中的一些人也永远不会承认。我不是说这是大多数开发人员,但我认为我们至少会遇到一位这样的人。我听很多人说,他们的团队非常棒,成员之间相处得非常融洽,这很好,但不是所有团队都是这样子。

  • 很多时候你们会在想法和解决方案上发生冲突,试着表现得老练和对对方的尊重,但同时,也不要太容易就被说服,尤其是当你对自己的提案非常有信心的时候。

  • 不要大喊大叫,不要骂人,千万别做这些事情,这什么用也没有。

  • 如果他们开始这样对待你,你就离开,做一个更强大的人。

  • 如果你不幸遇到了一个十足混蛋的团队成员,他完全不听理由,你除了想办法避开他之外,别无他法。

  • 在某些情况下,你可能不得不和你们的领导交谈,不过我还是建议你先和那个人谈谈。

 

七、不能从错误中吸取教训

作为一位开发人员,你会犯很多错误,这不可避免也没什么大不了的。但如果你总是犯同样的错误,不能从中吸取教训,那就有问题了。

当你犯错后,我建议你遵从这样一个流程:

  • 找出错误的根本原因是什么;

  • 找到可以防止错误再次出现的流程;

  • 弄清楚如果早先发现了错误,能否避免后果。

当你犯下大错,请你仔细思考一下这三件事,很有可能就不会再犯这个错误了,或者你至少下次会尽早发现错误,避免情况恶化。同时,不要因为犯错而对自己太苛刻,谁都会犯错。

 

八、太早放弃

我并不是说你啥项目都不能放弃,只是我看过太多次人们在即将成功的前夜放弃了。所以在放弃之前,确保你试尽了所有可能:已经上下求索、寻求帮助、用遍方法、换个技术、休息很长一段时间让自己的思绪恢复正常、如果可能的话已经搁置了一段时间……你在放弃之前做了所有能做的事情,如果还是失败,那么也许是时候放弃它、继续前进了。成功可能就在眼前,如果你这时候放弃,真的太耻辱了。

 

九、做一个无所不知的人

这些人大多数都是Stack Overflow网站(一个IT技术问答网站)的魔鬼,他们取笑新开发人员的问题,嘲笑他人的回答,一有机会就点击“反对”。我讨厌死这些人了。我认为他们中的许多人在学校里就总是被人找茬,他们利用自己的知识欺负其他可能有问题或是没有所得的开发人员,看上去像是忘掉了被欺负的感受,只想要复仇。我这个理论可能有问题,只是一家之言。

无论他们出于什么原因这么做,我认为如果他们思想开放、欢迎不同的想法、尊重他人,那他们就会比总是想要“正确”的人快乐多了。他们可能是团队中最聪明的人,也是最糟糕的人,因为没人愿意和他们合作,无法进行良好的沟通。对于一个想要成功的团队来说,沟通和团结是必需的,而无所不知的人会破坏这些。所以,如果你是这样的人,试着别那么自负,开放一点,尊重一点,你会走得更远。

 

十、不接受建设性批评

但很多情况下不是这样的,这只是某个人想教给你一个更好地方法,或是分享自己的意见。作为内容生产者,我花了很久才学会分辨挑事者和好心人。一开始,有人谈论我如何做某事的时候,我都很有戒心。但我意识到,他们中的许多人只是在试图提供合理的帮助。如果他们并非不尊重,或者只是对一些无关紧要的事情挑三拣四,那我就需要把它当做对我和对我的知识有益的东西。

建设性的批评是学习的绝佳资源,因为建设性的批评很有针对性,是你现有的问题,是他人给你的具体解决方案,这是无价的。事实上,代码审查简直太棒了,你可以得到其他人的建议,改进你的代码甚至是你自己。

所以不要把这类事情都看成人身攻击,除非你真的受到了攻击,或是故意的取笑和不尊重。听进别人的批评或改进建议总是很难,但最终,这会让你成为一个更棒的开发者。

无论是新开发人员,还是经验丰富的老手,我都希望这些建议能够帮助到你们。

 

获取更多内容,请扫描下面关注我的个人微信公众号,每天会分享新的技术、知识,工作中的常见问题,更多资料视频等,关注回复“666”即可获取学习资料。

这篇关于程序员常见的 10 个坏习惯!你占了几个?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java Spring 中 @PostConstruct 注解使用原理及常见场景

《JavaSpring中@PostConstruct注解使用原理及常见场景》在JavaSpring中,@PostConstruct注解是一个非常实用的功能,它允许开发者在Spring容器完全初... 目录一、@PostConstruct 注解概述二、@PostConstruct 注解的基本使用2.1 基本代

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

python中各种常见文件的读写操作与类型转换详细指南

《python中各种常见文件的读写操作与类型转换详细指南》这篇文章主要为大家详细介绍了python中各种常见文件(txt,xls,csv,sql,二进制文件)的读写操作与类型转换,感兴趣的小伙伴可以跟... 目录1.文件txt读写标准用法1.1写入文件1.2读取文件2. 二进制文件读取3. 大文件读取3.1

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

前端下载文件时如何后端返回的文件流一些常见方法

《前端下载文件时如何后端返回的文件流一些常见方法》:本文主要介绍前端下载文件时如何后端返回的文件流一些常见方法,包括使用Blob和URL.createObjectURL创建下载链接,以及处理带有C... 目录1. 使用 Blob 和 URL.createObjectURL 创建下载链接例子:使用 Blob

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO