好程序员 + 烂技术 = 痛苦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

英文地址:http://blog.garlicsim.org/post/2840398276/the-miserable-programmer-paradox

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/PC/it/

时间: 2024-08-05 02:34:57

好程序员 + 烂技术 = 痛苦的相关文章

PHP 程序员的技术成长规划

按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标. 本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言.(未来技术变化不在讨论范围) 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操

PHP程序员的技术成长规划

按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标.    本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言.(未来技术变化不在讨论范围) 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置

PHP程序员的技术成长规划_php文摘

按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定学习成长目标. 本文按照目前主流技术做了一个基本的梳理,整个是假设PHP程序员不是基础非常扎实的情况进行的设定,并且所有设定都非常具体明确清晰,可能会让人觉得不适,请理解仅代表一家之言.(未来技术变化不在讨论范围) 第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操

B2C网站招聘.net程序员和技术总监(北京)

问题描述 技术总监(asp.net)1人岗位描述1.参与制定产品的发展战略,并推进产品战略的执行:2.负责网站的总体技术规划和项目实施:3.负责网站技术团队的管理带领:4.技术团队构架.研发.设计,完成网站整体搭建及产品开发:5.网站设计的整体把关,网站整体VI设计,企业CI设计:6.指导技术团队学习.交流,并不断提升整体团队技术水平:7.参与项目开发,进行网站的升级与维护;8.市场技术动态热点.焦点进行捕捉;9.配合用户需求的调研.岗位要求:1.大学本科以上学历2.在同等规模公司从事该职位3年

如何突破PHP程序员的技术瓶颈分析_php文摘

先明确我所指的PHP工程题,是指毕业工作后,主要以PHP进行WEB系统的开发,没有使用其的语言工作过.工作经验大概在3~4年,普通的WEB系统(百万级访问,千成级数据以内或业务逻辑不是特别复杂)开发起基本得心应手,没有什么问题.但他们会这样的物点: 除了PHP不使用其它的语言,可能会点shell 脚本. 对PHP的掌握不精(很多PHP手册都没有看完,库除外) 知识面比较窄(面对需求,除开使用PHP和mysql ,不知道其它的解决办法) PHP代码以过程为主,认为面向对象的实现太绕,看不懂 这些P

IT软件技术人员的职位路线(从程序员到技术总监) - 部门管理经验谈

以前写过一个文(IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章),主要介绍笔者的职业发展之路,不过该文需要后续了,因为笔者现在从事的是"产品经理"一职.从笔者的导航文([置顶]博文快速导航)里,定义了IT软件领域的职业路线,基本涵盖了IT软件领域的发展思路.后续笔者会对职业路的职业做描述,但是,本文主要从IT软件工程师的角度去描述IT软件技术人员的发展历程道路.   一.软件工程师: 软件工程师是最基本的IT软件职位,但是他做的是最重要的底层的代码编写.所以说,软件工

古城钟楼微博:葡萄城程序员演练技术的产物

2013年1月7日,一个名为"古城钟楼"的微博引起网友的强烈围观.这个每隔一个时辰就发"铛"的微博迅速爆红,吸引了众多网友关注和评论,粉丝疯涨.至2013年1月8日14时30分,其粉丝已超过28万,在一天的时间里,就暴涨了26万多. @古城钟楼 并非像部分网友猜测的那样通过人工发送,而是由西安葡萄城的两位技术爱好者开发的程序自动报时.2011年初,随着微博的逐渐普及,葡萄城的一些程序员开始关注新浪微博的应用开发,其中一位程序员看到Twitter上有英国大笨钟的报时,

12 个让项目经理比程序员更痛苦的问题

论语·子张>: 子夏曰:"仕而优则学,学而优则仕". 后半句"学而优则仕"更为人熟知,按我浅薄而世俗的理解,这话的意思是,由学可以致仕,就是说,你学问大了,就能当官.比如苏东坡,比如柳宗元,比如诸遂良,比如孔子,比如李斯,比如苏秦,比如范仲淹,比如欧阳修,比如海瑞,比如杜甫--这种情况,在古代实在是数不胜数. 学而优则仕这种传统,在软件开发领域也有体现:很多人会因为技术工作做得好而走上管理岗位.然而,这样走来的技术领导,在刚晋升时,往往会面临很多问题,经历痛苦

黑马程序员 六、线程技术

Java帮帮-IT资源分享网  六.黑马程序员-线程技术 第六篇  1.进程和线程 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中 可以有多个线程.比如在 Windows 系统中,一个运行的 xx.exe 就是一个进程. Java 程序的进程里有几个线程:主线程, 垃圾回收线程(后台线程) 线程是指进程中的一个执行任务(控制单元),一个进程中可以运行多个线程,多个线程可共享 数据. 多进程:操作系统中同时运行的多个程序; 多线程:在同一个进程中同时运行的多个任务