如何成为一个糟糕的开发者

242 阅读7分钟

伟大的数学家卡尔-雅各比曾经说过_"反转,总是反转"_。他主张,通过逆向分析一个问题,可以发现问题的最佳解决方案。

考虑到这一点,伯克希尔哈斯韦公司的传奇合伙人查尔斯-芒格在哈佛学校发表了一篇关于如何_不_成功的精彩演讲(我最初是在令人惊叹的《穷查理年鉴》中读到这篇和其他查尔斯的演讲的。Charles T. Munger的机智与智慧)。)这让我想到--如何成为一个_糟糕的_开发者的最简单方法?

接下来你将看到的是一个高度主观的、非详尽的无序列表,如果你遵循这些原则,我可以保证会导致你成为一个糟糕的开发者。我说 "原则 "是因为我对技术性问题不感兴趣(例如,选择不好的变量名,永远不要注释你的代码,等等),一旦它们是你所遵循的准则的一个子产品。

读者朋友,如果你的目标是成为一个优秀的开发者,那么不要担心。请记住,_"否定 "_比 "肯定"更有力。这意味着,知道做什么比准确地做什么更安全,更容易搞清楚。因此,请注意下面的主题,并决定你想成为哪种类型的开发者。

永远不要假设你的代码中存在错误

"虚荣心,绝对是我最喜欢的罪。"- 阿尔-帕西诺,《魔鬼代言人

软件开发是为数不多的你可以自由地经常犯错的领域之一。如果错误的影响很小的话,这是一个非常好的地方。

然而,我们很容易忘记这一点。你可以是你公司里最好的开发者,但_相对来说_,你犯的错误比别人少。但是你犯的错误的_绝对_数量仍然会很高,这是无法逃避的。好消息是这很好--机器在交流时需要大量的精确性,一个错误的句子就足以炸毁一个10000 LOC的代码库。

但是因为你认为自己比其他开发者要好,这很可能是真的,你开始认为自己不会犯错。或者说,如果出现了一些问题,你和它没有关系。

问题是,很多时候你会有责任。如果你是坏代码的作者,在你的审查过程中忽略了它,或者在计划时没有预见到它,这都不重要。犯错的方式实在是太多了。

所以,如果你从不假设你可能把事情搞砸了,你就会开始指责其他东西--你的同行、你所使用的愚蠢的框架、过时的浏览器或史前的操作系统。除了你之外,任何东西都要承担责任。如果你从不承认你的错误,你就会被诅咒,永远不会进化。而作为一个开发者,不进化是致命的。

写代码不讲道理

真理只有通过思考才能被感知。- 托马斯-阿奎那

作为属于社会的人类,我们学到的第一件事就是我们需要衡量我们行为的后果。这同样适用于编程。归根结底,你的工作是通过几行代码为人们创造价值。如果你忘记了这一点,你就成了一个官僚。而且,对于一个官僚来说,要成为一个好的开发者是很难的。

如果你不假思索地行动,你就浪费了你对机器的优势。你是在不久的将来被取代的候选人(要么被一个有思想的人取代,要么被一个更便宜的傻瓜机器取代)。始终尝试了解你被分配的任务的目的是什么。当然,除非你想成为一个糟糕的开发者。

缺少自信

掌控自己的命运,否则就会被别人掌控。- 杰克-韦尔奇

我还没有发现一个好的开发人员不能清晰地报告他或她所面临的问题。 发生这种情况是因为计算机是非常听话的实体,只有在得到精确的指令时才能发挥作用。如果你在调试你的代码时很有主见,你有可能会自己找出问题。但是,即使你没有,你的问题也已经解决了一半,在帮助你的过程中,一双新的眼睛会更加有效。

请记住,机器是非常愚蠢的,需要被正确地告诉它们该做什么。而且,你在工作过程中给他们太多指示。最终,你会给出错误的指示。如果你不能有效地浏览你的代码并识别错误的指令,你将是一个糟糕的开发者。

以写更多的代码为乐

"在我们开始不使用它们之前,我们没有意识到很多东西是多么的不必要。我们一直在使用它们,不是因为我们需要它们,而是因为我们有它们"。- 塞内加

特别是在新手开发者中,为他们的应用程序的代码行数感到自豪是非常普遍的。这的确是一个非常强烈的信号,表明你有能力成为一个糟糕的开发者。

每一行代码都是机器的一条指令。指令的数量越多,所犯的错误也就越多。这也意味着,如果你想改变你的代码的行为方式,你将需要更多的知识。通过写尽可能多的行,你在屏蔽人们对你的工作。一个没有人愿意读、很多人害怕碰的代码就是一个坏的代码。

我以前提到过_via negativa_。简单地说,它意味着 "越少越好"。道理如下:搞砸事情的方法比改进事情的方法多得多。一个不想惹麻烦的人,会专注于将搞砸代码库的概率降到最低,而一个糟糕的开发者会积极寻找更多的补充。

回顾一下,每一行代码最终都会被阅读、测试、改变、增加甚至删除。很明显,你的工作量与代码量是成正比的。一个不必要地增加其工作量的人,只是一个糟糕的开发者。

为机器而非人类而写

"我们的技术已经超过了我们的人性,这已经变得非常明显,令人震惊"。- 阿尔伯特-爱因斯坦。

最后,这是最有效的方式来实现你的目标,即成为一个糟糕的开发者。我这么说是因为为机器而不是为人类写代码是你能做的所有坏事中最容易的。写无文档的代码、使用不准确的变量名、不一致、忘记缩进等等都是非常简单的。

你需要记住,机器可以理解机器代码。所有其他不是1和0的东西都只是装饰品,使代码对人类来说更易读。如果你不注意这一点,你就会使人类的生活更加困难--因此,成为一个糟糕的开发者的最佳途径。

想一想是什么让一段文字让你感到愉快。它通常是简明、清晰、直接、有意义和一致的。如果你不能理解作者的意思,叙述没有意义,写得很差或者格式很奇怪,你就不会喜欢阅读。同样,那些没有意义的、你需要努力掌握的代码也是打击读者积极性的绝佳形式。而同样的,一个让读者灰心的作者是一个糟糕的作者,一个让读者灰心的开发者是一个糟糕的开发者。


我希望你发现上述规则对你成为一个糟糕的开发者的追求是有用的。但如果你改变主意,决定成长为一个好的开发者,那么,你现在知道你需要避免什么了。