`
tansitongba
  • 浏览: 483945 次
文章分类
社区版块
存档分类
最新评论

程序员真的很懒

 
阅读更多
  可能除了哲学家以外,我认为程 序员是最懒的一群人。他们的职业看起来又似乎有一定的劳动强度。想想看,生物学家要亲自做所有的实验…给数百只小白鼠注射药物不可能自动完成。医生必须给病人进行身体检查;教授每年都要教授同样的课程;建筑师从各个角度制定方案,并手工地将方案一笔一划绘制出来。
  让我们再来看看更为辛苦的一些职业,情况更糟。营销人员要不断重复地进行同样的产品宣传;理发师日复一日地做着同样的事情;收营员每天都以相同的方式对货物进行结算…工厂工人…
  你面前呈现出了一幅图片,世界上有很多这样的人,他们每一小时,每一天,每一年,有些甚至一辈子都在重复做着几乎相同的事情。
  来看看程序员
  每当我们想连续两次做同样的事情时—我们会尝试想一个方法来自动完成此过程。每当你写的代码是完成同样的一件事时,你会开始寻找一个库;每当你启动一个类似的项目时,你会去寻找一个模板。
  程序员的生活就是致力于消除重复的工作。
  将琐碎地任务从我们的工作流程中剔除,这能让每个人生活得更轻松。这里有一个经典的笑话,说一个程序员情愿用一周的时间来写一个拷贝脚本,也不愿意将相同的文件复制粘贴两次,尽管复制粘贴可能只需要两分钟。
  该死的,我们要遵循DRY(Don’t Repeat Yourself不要重复自己)的原则。这个原则的基本内容是宁愿创建一个令人费解的抽象类,也不要将不相同但非常相似的代码写两次。
  这当然会导致很多问题。
  一般的软件项目充满了在顶层抽象类上构建的抽象类,你慢慢地会不清楚这些顶层抽象类将如何工作。甚至你完全不知道其代码在做什么。”Dizzying but invisible depth“,涉及到这个问题时,你真的应该读读这篇短文。
  另一方面,懒惰本身已经证明了历史上许多科学和工程发展所带来的背后推动力。用有轮子的拖车运东西比人工搬运要轻松;用船在水中前行比游泳来得容易;甚至如果你他妈的想炸掉一座城市,你投掷一颗原子弹也比投掷几千个小来的容易。
  所以这也许并不是说程序员是懒惰的。也许真正懒惰地是工程师们。只是恰巧在这样一个历史时刻,程序员作为工程师中最鲜明的一类,总是将世界向更好更光明的未来推动。而其它大多数领域已经在某种程度上稳定下来,或者需要更长的时间去适应新的工具。
  这里有一个重要的问题要问:程序员天生就懒吗?聪明懒惰的人容易被编程工作吸引吗,或者这是一种社会效应?懒惰源于最好的编程实践?还是最好的编程实践源于懒惰呢?
  一个比较
  最近,我有机会将一个建筑专业学生的一天与一个计算机科学专业的学生(就像我自己)的一天进行比较。
  大多数的建筑系学生的生活充满了这样或那样劳动密集的任务,这些任务是她工作的一部分。在任何时候,她都有可能要对一些模型进行拼凑粘合,在 AutoCAD中从50个不同的角度对同一个物体进行绘图,或者在其它3D建模软件中重复相同的事情…然后将这些图片导入到Photoshop中成为真正好看的图。
  这种事会接连不断的发生。我估计她花费在课程作业上的时间比她实际上课的时间多一倍还不止(事实上她说花了5倍还多)。更糟糕的是,更好的完成这些任务并不能真正加快完成任务的进程,这只是意味着你多知道了几个键盘快捷键,意味着下次画图时你可能会少犯几个错误。
  熟练和精通完全无法优化关键的部分。
  相比之下,当我不上课时,我通常都在做自己的项目。因为我可以,因为我有充足的时间。当有作业布置下来时,一般情况下,我都可以在几个小时内完成…即使是最关键最重要的项目,老师也很少给我们超过一周的时间来集中完成作业,最多两周。
  精通编码并不意味着你打字更快(与建筑专业中等同的能力不同)。它意味着想出的解决方案更容易实现,利用工具来达到事倍功半的效果,诸如此类。最终,通过互联网进行测试评判,而实现过程是最无关紧要的部分,因为每个人都会。如果你有一天的时间,你可以实现某些东西。如果你有更多的时间,你可以使这些东西实现得更漂亮,模块化更高,可重用性更强,等等。
  基本上你能够快速地实现眼前的任务,你工作中大部分时间都在致力于使你的任务完成得更加漂亮。但这对于你手头的任务来说其实并不重要,你这样做是因为你可以。
  甚至于当程序员对自己的优化工作都产生厌倦时,他们会立马转而去创建工具来完成优化工作。
  事情就这样周而复始地重复着。
  接下来的家伙会使用他创建的新工具,使实现过程变得更快,接着优化它直到他最终厌倦,然后创建了一个新的更好的工具。
  所以…是辛苦的工作?
  但回到我最初的观点,辛苦工作对程序员的生产效率存在多大的影响?对于那些每天辛苦工作13小时以上,以取得竞争优势的创业者来说,这又意味着什么?这是值得考虑的一种优势吗?
  辛苦的工作可能对程序员工作效率产生负面的影响。它掩盖了背后所做的优化工作“哦,我可以手动把它完成,这将只需要10分钟时间”(其实这需要20分钟)。下一次,一个相似的任务到来时,你可能需要再次手动把它完成,长此以往…
  最重要的是,辛勤地工作会使你变得很笨。许多研究表明,持续疲劳的状态会使你做出错误的决策,甚至过多的决策也会让你会出错误的决定(称为决策疲劳)。事情上,这可能是我们喜欢创建抽象类并使用它们的原因—让其它人做大多数的决策,这样我就可以只专注于关键的部分。
  但是,我仍然没弄懂,到底是懒惰的人更喜欢编程,还是编程使他们变得懒惰…
分享到:
评论

相关推荐

    03年VB程序员考试试题(含答案)

    VB程序员试题 好资源 大家一起来分享吧,好像一定要20字,我就是有点懒打字

    程序员简历模板下载

    压缩包内容包括了大量的个类程序员简历模板,如果自己不知道怎么写或者懒得设计的,这是你最好的选择,只要把内容替换一下,一份漂亮的简历就是你的!

    美国程序员用1/5薪水雇佣中国程序员干活

    据《中国日报》报道美国电信运营商在官方博客上曝光了美国一家公司的“天才程序员”,他支付自己五分之一的薪水、将... 美国最懒程序员工作外包到中国  据《中国日报》报道美国电信

    04年4月 VB 程序员试题

    VB程序员试题 好资源 大家一起来分享吧,好像一定要20字,我就是有点懒打字

    04年9月的VB程序员试题

    VB程序员试题 好资源 大家一起来分享吧,好像一定要20字,我就是有点懒打字

    程序员技术点小帮手软件

    自己写的一个技术点小帮手软件,我们程序员在写代码时候常常会忘记之前看过,写过的东西,本人比较懒,就想了一个懒办法,就是:将自己觉得有用的东西,用一个记事本保存着,然后设置关键字,下次就很容易的查找到了...

    Qt网课学习笔记 网课来源黑马程序员

    Qt网课学习笔记 网课来源黑马程序员

    程序员常见人事面试问题集锦

    回答提示:这个问题企业问的概率很大,通常不希望听到直接回答的缺点是什么等,如果求职者说自己小心眼、爱忌妒人、非常懒、脾气大、工作效率低,企业肯定不会录用你。绝对不要自作聪明地回答“我最大的缺点是过于...

    程序员用“深度学习”写了个老板探测器(附源码)

    如果上班的时候想放松一下,或者直说想偷偷懒,看点和工作无关的网页,这时候万一老板突然出现在背后,会不会感到很难堪呢? 有的浏览器设置了boss按键,手快的人还可以切换屏幕,不过总会显得不自然,而且经常搞的...

    C++程序员必读:C++编程思想

    懒得写描述了,大学几年下载了好多资源,分享给大家,都不要资源分。就这样了。。。

    Android编程之include文件的使用方法

    记得很久以前,听一位大神说,程序员都很懒,不懒惰的程序员不是好程序员,当时不明白什么意思.后来慢慢的懂得了它的意思,好的程序员不要做重复的工作. 我们在android的布局文件中,常会遇到一些相同的布局,每个...

    js实现PC端移动端通用的图片懒加载.rar

    js实现PC端移动端通用的图片懒加载.rar

    防QQ相册资料

    设计师很容易套页面,程序员如果懒的话,可以直接使用

    python实现批处理文件

    程序员都很懒, 不愿做机械无谓的重复性工作, 干脆自己实现一个. 用法超级简单, 默认会执行一个自定义的 batch.json, 按顺序一条条执行其中的步骤 {steps: [ {step:df -h,desc:display disk space usage}, {step:...

    程序员面试刷题的书哪个好-Rainie:记录一个精分少女的日常

    程序员面试刷题的书哪个好新人求罩:在深圳的内蒙女娃子 看完你会爱我的。 (壹)自我介绍 代号: Rainie(大仙闺蜜逼着我改的英文名) 坐标:深圳(来了也没成为深圳人) 年龄: 95后的老女人(95年也要称自己为95...

    【C++小游戏 - 1】扫雷 v1.0.0 正式版(by Debug618)

    自己写的基于C++的扫雷小游戏!...2. 传.exe文件其实是为了代码大概率不被盗,就算想盗也比较麻烦,程序员(大概)都是很懒的(至少我是) 3. 核心代码教程可催更,方式:包括但不限于点赞+收藏、评论、私信

    怎么看待程序员面试刷题面试-XPS15-9550-High-Sierra:DELLXPS15955010.13黑苹果教程

    怎么看待程序员面试刷题面试 ----------- 最后一次更新 2018-09-29 ------------- 差不多一年没有更新过repo了,一个是懒,另外一个是github上遍地开花,大家都分享了自己的配置,搜一下总会找到比我这个完善的;...

    Code Maker

    程序员写程序的时候常常存在着这样一个问题,有很多代码都似曾写过,但有不完全相同,要经过修改才能使用。这种重复劳动既没有效率又感到很无聊,何不开发一套系统让他来为你完成重复无聊的工作,你也好偷偷懒学习...

    程序员必刷题-oneindex2-in:国内版2.0世纪互联版

    程序员必刷题 oneindex2-in Onedrive Directory Index 功能: 不用服务器空间,不走服务器流量, 直接列onedrive目录,文件直链下载。 demo change log: 18-11-11: 修改2.0程序对世纪互联的支持 18-11-11: 添加安装...

    小程序瀑布流组件实现翻页与图片懒加载

    电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的。 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化。 所以,我们把瀑布流...

Global site tag (gtag.js) - Google Analytics