程序员可以学习的最重要的技能

2025-05-24

程序员可以学习的最重要的技能

不,不,不,不,不,不,不。不。

绝对不行。就这么明显。

您所要做的就是将这两个字母放在一起并说出这个词。

现在,我们一起说。不!

好的开始。

但是等一下。什么时候对什么说“不”呢?

嗯,这是大多数程序员(甚至是资深程序员)容易感到困惑的重点。

作为一名程序员,编写代码是你工作中最重要的部分。在你的编程生涯中,你将不得不处理各种各样的代码请求。每个请求都会迫使你做出艰难的决定。这完全没问题,也没什么不对。作为一名程序员,每个人都期待你写代码。然而,这里有一个问题:你应该写所有要求你写的代码吗?

这个问题引出了程序员可以学习的最重要的技能:

知道何时不编写代码可能是程序员可以学习的最重要的技能。——  《可读代码的艺术》

我完全同意。为什么呢?

编程是解决问题的艺术。因此,程序员自然而然地就是问题解决者。作为程序员,当我们面前有一个新的问题需要解决,或者其他任何需要我们编写代码的原因时,我们都会感到兴奋。

这没关系,因为我们是程序员。我们热爱编写代码。

然而,对编写代码过于兴奋会让我们变得盲目。它会让我们忽略一些重要的事实,而这些事实可能会导致我们将来不得不处理的更大问题。

那么,我们往往会忽略哪些重要事实呢?

你写的每一行代码都是:

  • 必须由其他程序员阅读和理解的代码
  • 必须测试和调试的代码
  • 会增加软件缺陷的代码
  • 将来可能会引入新错误的代码

正如 Rich Skrenta 所写,代码是我们的敌人

代码很糟糕。它会腐烂。它需要定期维护。它有需要发现的bug。新功能意味着必须调整旧代码。

代码越多,隐藏 bug 的地方就越多。检出或编译的时间就越长。新员工理解你的系统所需的时间也就越长。如果必须重构,需要移动的东西就更多了。

此外,代码越多通常意味着灵活性和功能性越差。这虽然违反直觉,但很多时候,一个简单优雅的解决方案比一个水平较低的程序员编写的冗长繁琐的代码更快、更通用。

代码是由工程师编写的。编写更多代码需要更多工程师。工程师的沟通成本为n²,他们添加到系统中的所有代码,在扩展系统功能的同时,也增加了一系列成本。

真是这样,不是吗?那些用高效和编程思维激励你的程序员,是那些知道何时说“不”、何时不写代码的人。易于维护、经久耐用、持续服务用户的软件,是那些不包含任何多余代码的软件。

最好的代码就是没有代码,最有效的程序员是知道何时不编写代码的程序员。

你怎么知道什么时候不该编码?

当你在开发一个项目,并思考着想要实现哪些炫酷的功能时,兴奋是自然而然的。但程序员往往会高估项目所需的功能数量。许多功能最终未能完成或被闲置,或者只是让应用程序过于复杂。你应该了解哪些功能对你的项目至关重要,以避免犯下这样的错误。

了解软件的目的及其核心定义是知道何时不编码的第一步。

举个例子。假设你有一个软件,它只有一个用途:管理电子邮件。而为了实现这个目的,收发电子邮件是你项目的两个基本功能。你总不能指望这个软件也能管理你的待办事项列表吧?

所以你应该拒绝任何与此定义无关的功能请求。这时你才能确切地知道什么时候不该写代码。

永远不要扩展软件的用途。

一旦你知道了项目的关键所在,下次评估可能的代码需求时,你就会更加清晰。你会清楚地知道编写代码的需求。哪些功能应该实现?哪些代码值得写?你会质疑一切,因为你清楚地知道不必要的代码会如何毁掉你的项目。

知道何时不编码可以让你的代码库保持较小。

启动项目时,只有两三个源文件。一切看起来都很简单。只需几秒钟即可编译并运行代码。您知道在哪里可以找到所需的内容。

然后,随着项目的发展,越来越多的源文件会填满你的目录。每个代码文件都包含数百行代码。为了组织所有这些文件,你很快就会需要多个目录。记住哪些函数调用了其他函数变得更加困难,跟踪错误也需要更多工作。管理你的项目变得困难,你需要更多的程序员来帮忙。随着程序员数量的增加,沟通开销也会随之增加。你的开发速度会越来越慢。

最终,项目变得庞大。添加新功能非常痛苦。即使是很小的改动也要花上几个小时。修复现有的 bug 总是会引入新的 bug。你开始错过最后期限。

现在,生活对你来说就是一场斗争。为什么?

因为你不知道什么时候不该写代码,所以你对所有可能的功能请求都点了“是”。你太盲目了。编写新代码会让你忽略一些基本事实。

这就像一部恐怖电影,对吧?

如果你总是对所有事情都说“是”,就会发生这种情况。要知道什么时候不该写代码。从你的项目中移除所有不必要的代码。这会让你的工作更轻松,让你的软件寿命更长。

我最有效率的一天就是扔掉 1000 行代码。——肯·汤普森

我知道,知道什么时候不该写代码非常困难,即使对于高级程序员来说也是如此。也许我这篇文章的内容对于初级程序员来说难以理解,这没关系,可以理解。

我知道你刚刚开启编程之旅,渴望写代码。你对此非常兴奋。这很好。永远不要失去这份兴奋,但也不要忽视重要的事实。我们是通过犯错来学习这些知识的。你也会犯错,也会从中吸取教训。但至少,如果你能从我们的经验中学习,你就能更加自觉。

继续编码,但要知道何时拒绝编码。
文章来源:https://dev.to/h_polatyuruk/the-most-important-skill-a-programmer-can-learn-5gpf
PREV
🧰 50 个开发者工具,让你的生活更轻松
NEXT
为这 14 家公司撰写文章获得报酬(每篇文章 100 美元以上)