对我来说能看之后感同身受的文章就是好文章。
几周前,布莱斯在网上发帖,漫谈自己对编程工作的看法。在Reddit上引起了广泛讨论。讨论的焦点集中在程序员的等级——“优秀”、“良好”、“糟
糕”和“极差”。我发现,讨论中一些用语十分不妥。"好"与"坏"都是道德评价,评价之后似乎便给人贴上了永久不变的标签。
可以肯定的说,我曾被另一个程序员称作是 “极差”的程序员。我也承认,我确实写过一些极差的代码;但我也自认为曾写过相当多的“好”代码。
要评判很久以前写出的代码是优是劣很不容易,因为现在已经不知道当时为什么编写这些代码,也不知道为谁编写了这些代码。
问问自己,现在正为谁编写代码?
为了按时交付任务
也许最常见的原因就是为了按时交付任务。走走捷径,宁可复制粘贴删掉几行代码也不愿意重构代码,然后匆匆交工。我们都这么做过,也都知道这是不妥的。
为了突出的考核结果
当管理者本身不懂代码,却有一套程序员“好坏”评价标准时,会出现什么情况?程序员要理清这套标准并不困难,因为他们的特长就是解决难题,然后他们会努力完善自己,从而迎合评价标准。代码行数、已解决Bug数量、注释的密度、代码深度
等都可能是衡量编码人员的指标,但这些又都是相对标准,而不是绝对标准。也有些新颖的衡量手段(比如“已删除代码的行数”)。
为计算机编写
从某种意义上来说,所有的程序都是为计算机编写的,但计算机应当程序员最后才考虑的。计算机只注重语法,不注重注释和变量名称。大多数程序语言也不注
重间
距与代码格式化。当然,你还是要选择正确的算法,但不要想着通过微小的优化来加速算法。在for循环中,使用i++还是++i并不重要,编译器和JITs
会解决这些问题。在考虑优化算法之前,还是应该先把代码写的清晰易懂。要知道编码在使用通用模式时,计算机和编译器运行的更快。
为了自己
虽然学习一门新的程序语言很有趣,不过如果你将整个公司架构都建立兴趣之上是不切实际的。Hacker News上曾有一则相关故事,Lambda
the
Ultimate网站上还有更糟糕的案例。如果你是为自己写代码,你可以不加注释,可以随意使用糟糕的变量名,甚至使用其他“怪癖”,但这样写出来的怪异
代码别人很难看明白。不过没关系,因为每个人都会时不时想在某些事上找点漏洞出来。
为后来者编程
编程是把抽象观念转换成计算机可以理解的形式。即使是细微的抽象观念,转换成代码也是很不简单。因此很多软件项目都衍生出了成千上万甚至是上百万行的代码,相当于一本代码书。通过有限的语法与其他人交流这些概念,大多数时候都注定失败。
我所写的最出色代码就是我愿意花时间来添加注释、列出代码流、甚至附上一些ASCII文字图的代码。编写过程专注于如何把自己抽象概念,与今后将有可
能读到这些程序的、不幸的程序员进行传递和交流。我认为专注于这种交流,代码会变得越来越好,因为你会更深入地思考抽象概念以及如何对正在做的事情分层,
而不是一味的编写代码和转到下一个程序块。
注释使代码变得更好理解。每当你再次做某事的时候,总会比上一次更好。当你在编写代码和注释时,就是将抽象概念向读者解释了两遍。这会迫使你思考更
多。很多次我写完一个代码以后都会对它写一个注释。然后从头修订代码,甚至改变了一些小地方,例如选择更好的变量名称,来更好的交流想法。
评价代码/程序员
综合前文所述,可以看出,编程人员孰优孰劣确实难以定夺。因为难以明确他们编写代码目的。你可以考评代码,但你无法得知代码编写者当时的心理状况。或
许那天是星期五,他急着要赶去维加斯度周末;也许是程序出了问题,他不得不采取紧急补救措施,但这些补救措施一用就是5年;也可能他原本就是个不合格的程
序员。
也许编程真是一门艺术?
我不知道如何公正地考核编程人员,我想也没几个公司能做到。看看程序员的面试流程就清楚了,他们只不过坐在桌前被问几个问题而已;根本没有什么标准测试能让计算机科学专业的学生证明自己已经掌握了必要的技能。
编程工作带有太多艺术色彩,所以不可能通过测试手段或者固定的考核标准来评价。
你知道还有哪个领域也是通过视觉媒介将抽象的概念传达给其他人?美术和绘画作品。今天,我们或许会说梵高是个大人物(其画作闻名于世),但是仍然有人不喜欢他的作品。类似表达抽象概念的事物不应该用“好”或“坏”来评价。
程序员可以做到的就是时刻提醒自己,编程的目的要正确。不能仅仅要求编译器能识别就行,不能为了迎合某种考核标准,也不能为了按时交工而编程。相反,应该适时注解或写文档,解释或记录代码功能。只要用心,你就能编写出优秀代码。
如此一来,以后就会有人夸你是个优秀程序员
,而不会因你那一万行的代码文件而“咒骂”你是“极品”程序员。
分享到:
相关推荐
【好的程序员如何写代码】 优秀的程序员在编写代码时展现出的专业素养和艺术感是评判其技能水平的重要标准。代码不仅是实现功能的工具,更是展现技术才华和思维清晰度的载体。以下是一些关于好的程序员写代码的特点...
基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的程序员表白爱心代码(2套) 基于JavaScript实现的...
《程序员数学3》是一本专为程序员设计的数学学习书籍,其主要目的是帮助读者理解并应用数学在实际编程中的重要性。这本书强调易懂性,通过简洁明了的讲解方式,使得复杂的数学概念变得平易近人。尤其适合那些希望...
在IT行业中,编程是程序员日常工作的核心,而代码的质量直接影响到软件项目的成功与否。"程序员的代码的代码的代码"这个标题可能是在强调代码的层次性、嵌套性或者递归性,暗示着代码间的相互依赖和复杂性。在描述中...
- 在表白代码中,程序员可能会巧妙地运用数据结构(如链表、树等)和算法(如排序、搜索)来构造寓意深远的逻辑,比如用二叉树构建“你在我心中”的结构,或者用排序算法排序出“我爱你”的序列。 5. **嵌入式消息...
在IT行业中,程序员不仅以编写代码为日常,也常常利用技术来表达个人情感,比如“程序员之表白代码”。这个主题通常涉及到将编程语言与创意相结合,以独特的方式向心仪的人传达爱意。在这个实例中,“紫色背景恋爱...
《写给程序员的数据挖掘实践指南》源代码是一个与大数据相关的学习资源,主要针对希望深入了解数据挖掘技术的程序员。数据挖掘是大数据分析的核心部分,它通过使用各种算法和技术从大量数据中提取有价值的信息和知识...
"程序员表白代码之情人节快乐"这个主题,展示了他们利用编程语言和数字艺术来传达浪漫情怀的方式。下面,我们将深入探讨这一话题,揭示其中蕴含的IT知识点。 首先,表白代码通常是程序员运用编程语言创作的一段程序...
女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码女程序员征婚需求分析与代码
程序员佛祖代码注释,佛祖保佑,代码无BUG
内容概要:通过带着读者手写简化版 Spring 框架了解 Spring 核心原理。在手写Spring源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程保留核心功能, ...本代码基于黑马程序员的课程,最好根据课程同步学习
在IT行业中,程序员通常以其独特的思维方式和技能表达情感,而“程序员表白代码”则是一种将技术与浪漫结合的独特方式。这些代码通常是用各种编程语言编写的,用来展示程序员的创意和对技术的热爱,同时也表达了他们...
该工具提供了visualinterface,允许开发者通过拖拽组件、配置参数等方式快速构建应用程序,而无需编写大量代码。 低代码开发工具的发展趋势 在传统软件开发中,程序员需要编写大量代码来实现业务逻辑。但是,随着...
程序员代码面试指南:IT名企算法与数据结构题目最优解左程云 著 这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,...
《解忧程序员:高薪编程、求职面试与成长转型宝典》是一本专门为程序员提供职业发展指导的书籍,作者安晓辉通过浅显易懂的语言和深入浅出的讲解,帮助程序员解决在技术工作中遇到的各种问题。这本书不仅涵盖了编程...
通过阅读和实践《程序员面试金典》中的代码,你可以全面提升自己的编程技能,为面试做好充分准备。在学习过程中,不仅要理解代码的功能,还要尝试自己动手实现,以此加深理解,并能灵活应用到实际问题中去。
总之,《程序员代码面试指南:IT名企算法与数据结构题目最优解-代码》是一本实用的参考书,无论你是初学者还是有经验的开发者,都可以从中受益,提升自己的算法思维和编程技能,为进入IT名企面试做好充分准备。
其中,“VC6PG配套代码”可能代表“VC6 Programmer's Guide”的缩写,暗示这些代码与一本名为《VC6程序员指南》的书籍相配套。这本书可能会详细解释每个示例的目的、实现原理以及如何与书中的理论知识相结合。 在...
程序员—专属浪漫爱心代码 胆大心细脸皮厚是表白的不二法门。第一次表白表示被拒绝了后,通常后来慢慢相处再表白就成功了。 要耐心,要脸皮厚,要细心。不要怕你的主动会带来她的反感,你不主动,她也不主动,也就...
程序员们通常以其逻辑思维和解决问题的能力而闻名,但在特殊时刻,他们也能借助代码展现温情一面。 在描述中提到的"祝你们早日找到自己的soulmate(灵魂伴侣)`(*∩_∩*)′",这是一句充满祝福的话,暗示了这个...