我15年前作为开发人员学到的最重要的教训之一就是这个简单的想法:
好的代码具有表现力,但并不令人印象深刻。
我记得当我听到这句话时,我问:“有什么区别?”,并收到了答复。
“富有表现力”-可理解,明确而具体。 如果是这样,编写表达性代码将需要处理特定任务。 在创建过程中投入时间和精力是有特定目的的,其结果符合预期。
令人印象深刻的是被记住的代码。 编写因其复杂的结构和算法而被人们记住的代码,尽管会伤及自我,但对于将来会支持它的人来说,这确实是一个痛苦。 并且,如果后者证明是一个知道您的住所的疯子,那么上帝会让您免于愤怒。
这就是为什么一个好的开发人员是明智的,而不是杰出的。 明智的开发人员不仅具有智慧,而且还具有不断思考其行为后果的能力。 他知道自己编写的是什么特定代码,为什么要这样做,最重要的是,将来该代码的行为方式。 或者,如果更简单,明智的开发人员将尝试治愈疾病,而不是症状。
相反,具有相同智能的“独创”开发人员只考虑当前情况。 他们可以快速有效地解决当前的问题。 那只是他们不断积累的技巧和诀窍的山峰,一旦崩溃了代码,就埋葬了所有参与者的声誉。 这就是为什么史蒂夫·麦康奈尔曾经正确地说过的原因:
在CIA进行编程不是一件容易的事;您不必精明。
明智的开发人员什么也不做。 他们编写了无聊且简单的代码,易于理解。 或多或少。
这里有一些明智的开发人员原则。
他们更喜欢简单
马丁·福勒曾经说过:
任何傻瓜都可以编写计算机友好的代码。 一个好的开发人员会编写人们可以理解的代码。
有时,开发人员渴望维护自己。 向他人展示您的才华。 尽管手头有一个简单的解决方案,但他们开始为遇到的每一个问题寻找更为周到的解决方案。 这是开发人员可能犯的最严重的错误之一。
明智的开发人员编写简单的代码。 如果需要,它易于维护,优化和重构。 该代码不会做任何棘手的事情,遇到它的每个人都会立即大致了解“幕后”所发生的事情。 事实证明,先进的和非常规的算法在夜间冲刺咖啡和能源的过程中非常出色,但在生产后期会失败很多。
当自我开始在编程过程中慢慢吸引您时,请问自己:“如果我在2个月后恢复使用此代码,我还记得这里到底发生了什么吗?” 如果答案是肯定的,那就去做。 但是,请记住,有一天您的同事将不得不使用此代码。
代码就像个玩笑。 如果需要解释,那就不好了。
他们知道何时(不是)您需要优化代码。
Edsger Dijkstra曾经正确地指出:
一个好的开发人员专注于什么,而不是编写代码时的帮助。
但是,有许多不同的方法可以优化您的代码。 它们中的每一个都与内存消耗量,处理器时间和特定算法的变化相关。 明智的开发人员务实地选择这条道路。
但是在开始改进之前,他们遵循“不伤害”的黄金法则。
我要出于什么目的更改某些内容? 也许程序已经完美地解决了任务? 考虑到程序将在什么环境下启动以及在什么环境下启动,是否有使其更快的意义? 所有这些问题都必须由您自己回答才能开始优化。
如果程序很重要,并且速度确实很慢,那么任何优化都只有在人工和退货的情况下才有意义,并且有合理的理由认为可以在保持可靠性,正确性和清晰度的同时进行优化。 不管速度有多快,没人需要产生错误结果的程序。 优化的代码总比未优化的代码好,但是如果使用错误的方法,则完全相反。
请记住:优化期间的任何性能变化都必须测量。 在这件事上的直觉是一个糟糕的帮手。
他们更喜欢使用而不是创建代码。
维克·贡多特拉(Vic Gundotra)曾经说过:
您从编写代码开始。 我首先找到一个解决方案。
明智的开发人员也会效仿。 他们从寻找现成的代码开始。 尽管在某些人看来,他们现在将“从头开始”做所有事情,但大多数最终以自行车的过时发明而告终。
随意用谷歌搜索。 即使从研究以前解决类似问题的方法以及它们的优缺点的角度来看,无论是在线还是在自己的代码库中查找解决方案都已经很有用。 这就是为什么明智的开发人员在编写自己的代码之前要花费大量时间阅读别人的代码。 从头开始创建代码始终值得花费时间,金钱和精力。 在真正有必要之前,不要浪费资源。
因此,在解决另一个问题时,请先尝试看看是否有人在您之前解决了该问题。 您不避免工作,而避免不必要的工作。
他们试图变得更好。
亚里斯多德曾经说过:
如果您正在做一些已经知道该怎么做的事情,您将不会变得更好。
明智的开发人员正在尝试提高自身水平,或者在每一个机会中都改进自己的代码。 他们足够谦虚地意识到自己尚未创建自己的最佳代码。
他们不会使用相同的方法一遍又一遍地坐在舒适区中。 他们正在尽力确保自己的习惯不会成为他们的教条。 他们一直在寻找方法和机会来做得更好,特别是如果他们可以在此过程中学到新知识。
明智的开发人员不会对时尚的技术和炫酷的功能着迷。 他们非常务实,足以理解没有灵丹妙药,任何方法都有其利弊。
他们不怕寻求帮助。
苏格拉底宣告:
如果我们不断互相帮助,没有人会需要运气。
作为开发人员,我们喜欢将自己视为聪明的人。 另外,我们中间确实有天才。 但是我们也倾向于相信我们应该了解世界上的一切。 真的,谁愿意在同事面前说:“我不知道”? 谁愿意承认对他来说新技术是一套象形文字?
相反,您悄悄对自己说:“我会自己解决的。 我已经做过很多次了,现在可以了。”
明智的开发人员不这样做。 他们知道何时该为自己思考,何时该寻求帮助。 他们已经知道,拖延要求帮助只会浪费最后期限之前的时间,这会对整个团队造成伤害。 因此,他们不害怕显得无能为力,并在需要时寻求帮助。
及时的帮助请求不会损害同事对您能力的信心。 作为专业人士,它会增强您的信心,随时准备尽一切必要的工作以按时完成任务并获得高质量的结果。
正如Cubra Sait所说:
积极的变化始于问题。