当前位置: 首页 > 科技观察

程序员悖论的悲催

时间:2023-03-23 12:16:36 科技观察

题目中程序员悖论的定义如下:一个优秀的程序员往往把大部分时间花在自己讨厌的工作上,使用自己也讨厌的工具和技术。这在某种意义上是一个悖论。通常我们的直觉是,差劲的程序员把时间花在蹩脚的技术上,而好的程序员把时间花在高科技上。正确的?我在实践中发现了这个悖论,后来才明白为什么。并一一听我说。程序员讨厌什么样的工作?对于那些有经验的程序员来说,简直就是知其然,这里我主要是给非程序员解释一下。如果一件事可以完全自动完成,那么那些优秀的程序员通常会不屑一顾。如果你强迫一个程序员做一些机器(通常是计算机)可以做的事情,他会气得想揍你。程序员的愿望就是让机器来做所有的工作,一切,哈哈。而只有那些机器做不到的事情,程序员才会有兴趣去鼓捣。这是任何一个健康的程序员的本能想法。这是一个需要自动化的例子。假设程序员在浏览代码文档时需要修复第791行的错误。文件一共1000行,但是他的文件编辑器只能显示30行。大部分人会简单的选择向下滚动-滚动-滚动,然后一路走到791行。但是作为一个优秀的程序员,你能做这样的傻事吗?他会写一个可以自动跳转到特定行号的编辑器。比如“Ctrl-L->791->Enter”就是我用的编辑器。这个例子很简单,但也有复杂的。原因是一个好的程序员讨厌做这种机械和重复的事情,因为这些乏味的小事情会打断他们的思维过程。思想是如此脆弱,一旦被打断,就像火车一样,需要整理一段时间才能重新出发。如果你需要每5分钟做一些体力劳动,你的思路可能不会有任何进展。在日常工作中,程序员需要使用各种工具和技术来完成各种项目。所以难怪他们喜欢“体力劳动”相对较少的工作,尤其不喜欢需要大量体力劳动的项目工作。他们喜欢几乎不需要手动操作的技术和工具(比如Python、Django、git),讨厌需要大量手动操作的技术(这个我就不举例了,大家随意发挥)。但由于工作需要,程序员不得不在使用可爱迷人的自动化技术的同时,使用丑陋的手动技术。这就是区别所在,优秀的程序员会尽量不使用这些烦人的技术,但也有他根本无法避免的时候。有时是因为他正在编写的软件的需要。比如,所有的程序员在做WEB程序的时候,都免不了要用到令人望而生畏的HTML语言。有时候这些过时的技术并不能因为大家都在用而被淘汰,程序员需要和大家合作就这么简单。时间浪费在这些过时的技术上,从这个角度看,文章开头提出的悖论就很好理解了。这么差的技术会占用程序员大部分的时间和精力,而那些好的技术则不会。每个程序员每天的时间和精力都是有限的。因为软件本身的问题,他们把大部分的时间和精力都投入到了自己讨厌的技术和工作上。为此,那些优秀的程序员苦不堪言!我特别希望在文末提出这个问题的解决方案,可惜没有。我们能做的就是尽量减少不好的技术,让它们从我们的生活中消失,而对于那些无法避免的,记住一个词——耐心等待。