悲催的程序员悖论

优秀的程序员常常会花大部分的时间去做他厌恶的工作,使用他同样厌恶的工具和技术。

这从某种意义上来说是个悖论。通常我们的直觉是,差劲的程序员才会把时间花在蹩脚的技术上,而优秀的程序员的时间是用在高新技术上的。没错吧?我在实践中发现了这个悖论,而直到后来我才明白原因。且听我一一道来。

程序员鄙视什么样的工作?

对于那些有网站开发经验的程序员而言,简直就是明知故问,不过在这里我主要是给非编程人士解释一下。

如果一件事完全可以自动化完成,那么那些优秀的程序员通常是对此不屑一顾的。如果强迫程序员去做完全可以让机器(通常是计算机)就可以办到的事,他会气得想揍你一顿。程序员的愿望是能让机器来干完所有的活,是所有哦,哈哈。而只有那些机器办不到的事,程序员才会有兴趣去捣鼓一下。

这是任何一个身心健康的程序员的本能想法。

下面给一个需要自动化完成的事例。假如程序员在浏览代码文档的时候,需要修正791行的bug。文件总共有1000行,但是他的文件编辑器只能显示30行。大多数人会直接选择向下滚动——滚动——滚动,然后一直到791行。但是作为优秀的程序员,能干这么愚蠢的事吗?他会写一个能自动跳转到具体行数的编辑器。例如,“Ctrl-L -> 791 -> Enter” 就是我所用的编辑器。

这个例子很简单,复杂的也有。

究其原因就是,一个优秀的程序员讨厌去做这种机械的、重复的事情,因为这些繁琐的小事会打断他们的思维过程。思维是那么的脆弱,一旦被打断,就像火车一样,需要整理一段时间之后才能再次启动。如果每隔5分钟就需要做点手动的工作,那么你的思维火车恐怕到不了任何地方。在日复一日的工作中,程序员需要使用各种工具各种技术来完成各种项目。所以无怪乎他们会喜欢那些“体力劳动”相对较小的工作,并且特别厌恶需要大量手动操作的项目工作。他们喜欢几乎都不需要手动的技术和工具(比如Python,Django 和git),讨厌需要大量手动的技术(这个我就不给例子了,大家自由发挥)。

但是因为工作需要,程序员在使用可爱迷人的自动技术的同时,也不得不使用面目可憎的需要手动操作的技术。这时候区别就来了,优秀的那些程序员会试着不去运用这些恼人的技术,但是也有他根本无法避免的时候。有时是因为他正写着的软件的需要,比如,所有程序员在做WEB程序时,无法避免的要使用令人头大的HTML语言。有时候这些落伍的技术不能被淘汰的原因仅仅只是因为大家都在用,而程序员需要和大家协作这么简单。

时间都被浪费在这些落伍的技术上

从这个角度来看文章开头提出的悖论就容易理解了。这种差劲的技术占用了程序员大部分的时间和精力,而那些好的技术则不是。每个程序员每天的时间和精力都是有限的,就因为软件本身的问题,使得他们把大部分的时间精力致力于那些让他们讨厌的技术和工作上。就是这个原因,那些优秀的程序员苦不堪言!

我特别希望能在文章的最后提出解决这个问题的方法什么的,但是很遗憾没有。我们能做的就是尽量减少不好的技术,让它们滚出我们的生活,而对于那些不能避免的,牢记一个字——忍吧。

免费领取LAMP兄弟连原创PHP视频教程光盘/《细说PHP》精要版,详情咨询官网客服:

http://www.lampbrother.net

时间: 2024-10-09 21:18:36

悲催的程序员悖论的相关文章

程序员阿士顿的故事[zz]

程序员阿士顿的故事 2011-03-19 21:37:51 前几天有人在 Stack Exchange 上提了一个问题 How can a new programmer impress the software engineer (boss)?(作为新手程序员如何给软件工程师出身的老板留下好印象?),Joel Spolsky(Joel on Software 的主人,<软件随想录>的作者) 看到了这个问题,他没有正面回答,而是在下面讲了悲催的程序员阿士顿的故事.正文:我告诉过你有关阿士顿的事情

程序员到项目经理:从内而外的提升

转自:http://www.cnblogs.com/watsonyin/archive/2012/09/10/2679528.html 目录 从程序员到项目经理(一):为什么要当项目经理 从程序员到项目经理(二):升职之辨 从程序员到项目经理(三):认识项目经理 从程序员到项目经理(四):外行可以领导内行吗 从程序员到项目经理(五):程序员加油站,不是人人都懂的学习要点 从程序员到项目经理(六):程序员加油站 — 懂电脑更要懂人脑 从程序员到项目经理(七):程序员加油站 — 完美主义也是一种错

《程序员密码学》读书笔记

这本书很不错,不过目前市面上已经找不到了,我也是机缘巧合之下才拿到这本书,花了一周多读完了这本书.如书本题目所示,作为程序员读读这本书挺好的.注:个人笔记,做的很随意,而且笔记时间久远,未加修饰就传上来了,主要目的是作为备忘. 1,DES被攻破的方法:差分密码分析,而AES可以抵抗这种攻击~ 2,分组密码等同于伪随机置换(PRP ):伪随机置换就是由算法创建的一种对符号的重新排列,一个安全的PRP目标是:对于仅知道部分置换是不足以以一个有效的概率来确定置换的其他部分. 3,散列函数等同于伪随机函

周鸿祎谈程序员创业

原文链接:http://geek.csdn.net/news/detail/45409 昨天与大家分享了自己的创业经验,得到了很多程序员的鼓励与支持,诚心感谢大家的共鸣!由于极客邦SOHO项目开始不到半年,怕对各位程序员有所误导,特意找出周鸿祎在接受媒体采访时分享的程序员创业经验,大家一起努力,从一个小程序员干出自己的一番事业!正文如下: 程序员创业的特别之处 关于程序员创业,我之所以愿意谈我的观点,是因为我是程序员出身,也是从小公司做起来的,我自认为对待很多程序员个人包括共享软件作者和一些小网

阅读《构建之法》第13~17章及读《一个程序员的生命周期》感想

第十三章: 对于这章的测试,我们只是简单提了一下单元测试,其他测试都没有,这章相对来说,几乎为零,看了也不知道怎么做. 问题就更别说了,等周末有时间在回头看看,再更新补上问题. 第十四章: <一个程序员的生命周期>感想 一口气从第一篇的:从大山里走出的程序猿看到最后一篇:7年工作感悟,  很感谢他给我们分享他的经历,在一些方面看法也和作者有共鸣. 然而每个时代都并不容易,80后悲催,90后,00后都悲催,每个时代都有不同的困难,不只是单单只有一代人困难,有的人会自暴自弃,有 的人会迎刃而上,有

高效程序员的特征:聪明,懒惰

这里我使用了聪明,懒惰和程序员这几个词.我说的这几个词的意思是: 程序员:有积极活力的,专注于用代码解决真实世界里的问题.不是指那些梦想家,那些永远只想不做的人 聪明:能够周全的思考问题(不是那些耍小聪明的人) 懒惰:就像是程序中的lazy-loading,是指延后写代码的时间(而不是无所事事的人). 正确的软件开发应该是懒惰式开发,也被称作忍耐式开发:这种开发方式的表现是,在真正动手写代码前,程序员要花大量的时间通盘考虑所有可能的解决方案和途径.这可以看作是延缓写代码,在没有完全理解问题前绝不

高效程序员的特征:聪明,懒惰(转)

这里我使用了聪明,懒惰和程序员这几个词.我说的这几个词的意思是: 程序员:有积极活力的,专注于用代码解决真实世界里的问题 不是指那些梦想家,那些永远只想不做的人 聪明:能够周全的思考问题(不是那些耍小聪明的人) 懒惰:就像是程序中的lazy-loading,是指延后写代码的时间(而不是无所事事的人). 正确的软件开发应该是懒惰式开发,也被称作忍耐式开发:这种开发方式的表现是,在真正动手写代码前,程序员要花大量的时间通盘考虑所有可能的解决方案和途径.这可以看作是延缓写代码,在没有完全理解问题前绝不

程序员超浓鸡汤,知乎上赞同数最高的999个回答

原文出处 http://lanbing510.info/2016/04/14/ZhiHu-Good-Answers.html#title0 最近发现这个文章,真的是非常适合程序员看的鸡汤文列表,超强浓缩版的!!! 1哪些素质很重要,却是读书学不来的?101501肥肥猫 2有哪些很重要又被忽视的炒菜技巧?85658庄力 3想要充实自己,有哪 10 本书和 10 部电影值得推荐?77738Jee Xin 4要怎样努力,才能成为很厉害的人?76144朱炫 5如何看待「医生拒绝给艾滋病人做手术」?748

【转】程序员&quot;青春饭&quot;问题之我见

1. 问题描述问题1: 什么是程序员?在本文中程序员的定义为: 拥有编程技能,在IT.互联网公司打工的IT从业人员.程序员与很多行业最大的不同是该行业的形成时间短:1954年第一台计算机才诞生,而中医从神农尝百草就有了,小姐从春秋齐桓公时期就有了. 问题2:什么叫”青春饭“?对于青春饭,有两个极端行业可以作为参考: 中医和小姐.中医: 越老越吃香,50.60岁老中医和20岁.30岁年轻中医,大多数人会果断选择老中医.小姐: 越年轻越吃香,50.60岁老小姐(如果还有的话)和20.30岁的年轻小姐