关于程序员的痛苦的一种悖论

我所说的“关于程序员的痛苦的一种悖论”描述如下:

“好的程序员大部分的时间都在干他们厌恶的事情、使用他们厌恶的技术和工具。”

这是反常理的,看上去就是悖论;你会认为程序员才会把时间都花在烂技术上,优秀的程序员会把时间花在那些尖端的技术上。不是吗?

我在自己的体验中发现了这个悖论,直到后来我才明白为什么会是这样。

什么样的工作会让程序员们厌恶不已?

这对一些有经验的程序员来说并不是什么新闻,但我要把这向那些非编程人员解释一下:

好程序员厌恶做那些本来可以自动完成的事情。如果一个程序员被指使去做一个机器(通常是电脑)能自动完成的事情,他会非常的懊恼。程序员的志向是让机器尽可能多的替他们完成任务,只有剩下的一些机器不能完成的工作才会自己出手。

这是一个程序员应该具有的一种非常有益的本能。

一个简单的需要自动完成的工作的例子: 想象一个程序员浏览一个有1000行代码的文件。他想找到第791行,因为这一行被认为有问题需要修改。但编辑器现在显示到第30行。大多数人都会简单的拖动滚动条一直到自己想要的那一行。但一个好程序员是不会去干这样的事情的。他们会使用一个能够使他们直接跳到特定行的编辑器。例如,在我使用的编辑器里,“Ctrl-L -> 791 -> Enter”就能做这样的事情。

这个例子很简单;更复杂的例子有很多。

好的程序员厌恶做重复性的工作的原因是,这些小事情会打断程序员的思绪。思绪是一个脆弱的东西;一旦思绪被打断,需要花很久才能再接起来。如果你每5分钟就被这种体力工作打搅一次,你的思绪就无影无踪了。

在日常工作中,程序员需要处理各种各样的技术工作、使用各种各样的工具。程序员喜欢那种含“体力劳动”相对较少的工作。程序员喜欢那些只需要很少的体力劳动的技术和工具(Python,Django,git等都属于这一类),讨厌那些需要大量体力劳动的技术和工具。(这个我就不举例了:)

但程序员必须即要处理那些有趣的自动化的技术,同时也要做那些讨厌的,需要体力劳动的工作。好的程序员会尽可能的使他们的生活远离那些烂技术,但总有一些很糟糕的技术他不能简单的抛弃。有时是因为他们开发的产品需要这种技术;例如,所有的web开发程序员都必须要跟HTML打交道,但HTML里有很多很讨厌的属性。有时一些很烂的技术不能抛弃只是因为有大量的人在使用他们,程序员必须去使用它们。

大部分的时间都是花费在了烂技术上

从这个角度看,你就能很清醒的理解这个悖论为什么会出现了。烂技术会用掉大量的时间和精力。好的技术只需要很少的时间和精力。程序员每天的时间和精力是有限的。这有限的资源中很多一部分被投入到烂技术上,正是因为烂技术需要你付出更多。换句话说就是,他们主要的日常工作都是在跟他们讨厌的技术和工具打交道。因此,好程序员很痛苦。

我希望我的这篇文章最终能给解决这个问题带来一些启示,但估计不会很多。我们能做的事情就是尽量的抛弃那些烂技术,使它们远离我们的生活,而那些暂时抛弃不了的,我们只能忍受。

[英文原文:The miserable programmer paradox ]
分享这篇文章:

8 Responses to 关于程序员的痛苦的一种悖论

  1. zoujia says:

    很多老板都会宣扬:我不在乎你用什么技术,我只要结果!
    但同时他们又宣扬:为什么你们的效率这么低?为什么你做出来的东西这么烂?为什么要利用工作时间去做与工作无关的事情(比如学习点新知识)?
    我想说的是,技术其实真的不重要,关键是要给员工提供自我不断进步的空间、平台与机会,这样才不会痛苦!\(^o^)/~

  2. 大道达人 says:

    用户体验才是生产力

  3. haitao says:

    n年前,我就总结了好程序员的3个入门门槛:好逸恶劳,喜新厌旧,得寸进尺

  4. Doraemon says:

    这个比如IE6.。。。。我相信做界面的兄弟们都恨之入骨了,虽然用IE6的不占多数,但是却掌握着多数的财富。。。。。

  5. 自动化. Automate everything.

  6. 船厂工人 says:

    有没有对面向语言编程感兴趣的人

  7. 周虹  这篇文章

发表评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据