优秀的程序员就像艺术家?

优秀的代码能不能算艺术品?软件工艺这一理论是否有点矫枉过正?怎么样才算是一名真正“优秀”的程序员?
让我们先从一个问题引入话题。假设你雇了一个水管工替换地下室里已经老化的旧水管,在整个过程中,这家伙一个劲地给你灌输这些水管是有多么多么的有艺术美感。

“哇哦,看看这根管子弯曲的角度,它与墙壁对齐得是这么的漂亮!简直就是艺术品啊!”你会怎么看这个水管工?
写代码也是如此。再也没有比一个开发人员非要将他的代码写成艺术的模式更糟的了。上述比喻来自一篇广受好评的文章《programming is not a craft》,其作者是Dan North,“Agile troublemaker”和BDD方法的创始人。
软件艺术
该理论的作者是 Kevlin Henney、Bob Martin、Corey Haines和Glenn Vanderburg,以下就是软件艺术的要领。
不仅得能正常运作,还应该精心制作
不仅可以应对变化,还能稳步增值
有良好的个体交流,以及专业人士组成的社区
和谐的客户合作关系,富有成效的伙伴关系
而现在的问题是,很多软件开发人员往往会因为太过自大反而不能很好地完成软件项目。因为自大会让他们将软件艺术捧得很高,North 说。Web服务和J2EE的项目就是这方面的例子,该项目的失败有很大一部分归咎于将软件艺术放到了过于崇高的地位。
优秀的程序员
你或许早就在一些小的IT项目中就领略过上述问题的存在了。如果有开发人员坚持使用某种特定的美学技术而不愿意务实的话,那么我敢肯定他已经被所谓的“软件艺术”洗脑了。
好的代码应该是高效的代码,而不是因为它的美观。不管它是什么样子,只要它可靠、高效就成。换言之就是不管黑猫白猫,能抓老鼠的就是好猫。也可以归结为理解和实现简单流程的能力。
“一个经验丰富的编程团队完全可以在很短的时间内拿出惊人的业务成绩。只有真正的专业人士和真正的软件匠手才能在毫无头绪一团糟中,例如各种企业软件,发现被抛弃的优雅与朴素。”——Dan North
但可悲的是,即使是优秀的程序员也经常会忘记何谓优秀软件的核心功能——过分重视所谓的软件艺术往往是罪魁祸首。
“软件从业者——具有讽刺意味的是,尤其是一些优秀人才——却经常会犯此错误。他们爱上了软件本身,然后觉得自己已经化身成了软件艺术工匠。”——Dan North
程序员的才华
全文这个辩论是基于一个问题展开的,这个问题就是:软件工程是否是艺术形式的一种?
据说性能和效率的比重在软件行业里已经有所下降,而怎么样才能成为一名优秀的开发人员却依然没有达成共识。“伟大的程序员,只需要几个小时或者几天就能完成普通程序员需要数周或者数月才能搞定的任务。”Dan North坚持这么认为。
“作为买家,你难道不想知道你的系统是由大师级工匠还是临时工做的吗?你付了钱,就应该有这个知情权。所以如何辨别两者就很重要了。”——Dan North
North也承认,好不好看并不能让我们正确区分两者。任何开发人员都可以自诩为软件匠手,也能做到对何为“软件架构之美”侃侃而谈。North诚挚地希望能有有识之士重新编写软件艺术的概念,这是最基础的理念问题。
站在背后的代码
我们并不在乎水管长啥样——反正是埋在里面的。这同样适用于软件。无论是客户还是用户,都只关心代码是否能工作以及页面看上去ok就行。
“同样的,我只想请专家电工来给我的房子布线而不是一个滥竽充数的家伙,我也只想要专业程序员来写代码,” North郑重其事地说,“我最讨厌的就是,一个自命不凡自以为是的水管工一刻不停地谈论他优雅美丽富有艺术感的水管。”
译文链接:http://www.codeceo.com/article/art-of-programming.html
英文原文:The ‘art’ of good programming
翻译作者:码农网 – 小峰

?

时间: 2024-10-12 23:39:45

优秀的程序员就像艺术家?的相关文章

10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员

成为一名硅谷的工程师可能是很多中国程序员的梦想.硅谷被公认是目前世界上云集了最多优秀工程师和知名科技公司.创业公司的地方,吸引了全球无数投资者.创业者和工程师的目光.在那里工作的工程师,有着令人羡慕的职业发展前景,薪酬待遇.此外,他们出众的教育背景,扎实的专业能力,创新的思维,专注的敬业精神也成为了其他工程师们学习的标杆. 下面总结的10条建议,来自一些有关编程的网站.社交平台和博客,给出这些建议的人大多数也是工程师(当中包括在硅谷工作的),以及一些专门研究计算机科学的学者.如果你有志成为一名出

学习Axure的心得&关于如何做一个优秀的程序员

这些天学习了Axure的一些基础知识,感觉自己就只是刚刚入门,还有好多东西不懂.本想在网上好好地学一些更高的操作,却找不找比较好的学习视频.网上的资料太多,而且质量参差不齐.(视频画面根本就看不清)到后来就找了一些文本资料来看,但还是未能坚持看下去.不过,我看了一些关于程序员的资料. 下面就来说说我的看法. 一 努力刻苦地编程.好的程序员是后天炼成的,是靠一行行代码和一个个算法给喂出来的.因此,只要努力就一定能成为一个优秀的程序员. 二 拥有过硬的技术和本事.要明白,在IT行业,靠的不是关系,地

一个优秀的程序员所具备的14个品质【转载】

慎于说Yes 在没有搞清楚开发需求.任务工作量.团队期望值之前,有前途的程序员不会轻易答应.特别是对于新人来说,比较急于表现自己,对于同事或者老板的工作安排来者不拒,精神可嘉,方法不可取.承诺太多,会出现自己无法按时完成的情况,即使按时完成,也可能没有达到别人的期望值,长期以往别人对你的失望会越来越多. 敢于说No 看起来和第一条雷同,其实细究起来不一样.第二条执行起来比第一条难得多.当遇到明显不合理的要求时,可以考虑拒绝,前提是准备好了全面充分的理由.不要经常说No,但是一旦说了,就要切中要害

优秀的程序员和一般的程序员差别在哪?

在我平时所见到的程序员中,如果纯以编码能力来看,个人觉得可以分为五类,依次是: 1. 拷贝型 拷贝型选手就是传说中的“代码拷贝员”了,他们对实现功能几乎没有思路,所作的事情就是从网上或是之前其他团队成员写的代码中拷贝出片段,然后放到项目中,如果运行项目出现了期望结果,则表示任务完成. 这类人只会改代码,却不会写代码.他们大多对编程毫无兴趣,只是希望以此糊口而已. 2. 新手型 当产品有功能需求时,由于经验有限,程序员并不完全知道要如何实现这个功能,需要通过学习.寻找资料等方式来解决问题. 这种情

为什么优秀的程序员既懒又笨程序员

我们会发现这样一个有悖常理的现象:优秀的程序员都是即懒又笨的. 因为懒,他才会写出各种各样的工具来替自己干活.因为懒,他才会想办法避免去写无聊重复的代码.因此避免了代码的冗余,消减了维护的成本,使重构变得容易.最终,这些由于懒惰作用开发出的工具和最佳编程实践方法大大提升了产品的质量. 懒惰的程序员也因此变成了优秀的程序员.当然,这只是事情的一部分:从一个懒惰的程序员变成一个优秀的程序员,他/她会在学习如何能够永远保持懒惰时表现出惊人的不懒惰--也就是,什么样的软件工具能让自己干活更轻松,什么方法

【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍. 优秀的码农会告诉你学啥底层.啥啥啥一拖就好了,学了python还要啥自行车啊,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?成为高手有很多种方法汇编是个屁啊? +++基础的分割线+++ 列举几个我认为比较重

互联网创业:如何雇佣一个优秀的程序员?

经常有人问我:“你在哪里可以找到或者聘请到优秀的程序员?”因为个人就是一名互联网项目经理,经常做项目管理,和程序员打交道的时间非常多,所以了解很多程序员的心态和习性,当然这里面也有很多的小技巧,下面就简单介绍一下我是怎么做的.下文提到的他,泛指程序员和程序媛. 问一些有过项目开发的朋友: 发现人才的最佳方式是通过别人的参考.曾经做过网站建设和软件开发以及APP制作的朋友,他们一定和优秀的程序员打过交道,他肯定会推荐一个好的程序员给你.建议有朋友如果在外包公司的话,那最好不过了.首先,你不必担心筛

怎么成为一个优秀的程序员,而不是一个优秀的码农?

啥是优秀程序员? 记者和很多网民说熊猫烧香作者是高手 公司里你出什么bug他都能告诉你原因用什么软件有问题他都能回答你的你就觉得是高手 有人说徒手做产品的全栈才是高手 各语言的作者都是高手 有不写代码,扔出一个restful论文的 还有人说高德纳是神,他如果是神,那他那些代码一定是在考验我们,嗯 .... 上面这些的确都算是高手,我琢磨着前两年被开掉的moto公司员工里肯定也有做功能机的高手和写廉价板驱动的高手 你想自己选自己的方向还是被人忽悠方向? 我的想法是自己都尝试玩玩,然后做自己喜欢的方

优秀游戏程序员学习资料推荐

这两天给单位的技术做的一次学习材料推荐培训,直接ppt上拷过来的. 优秀游戏程序员学习资料推荐 主讲人:臧旭 前言 今天提到的纯粹是我个人心得和理解,可能片面,可能以偏概全. 目的是给大家做一定的指引作用,想让大家知道自己还有哪些可以去学习,还有哪些不足,我们距离优秀还有多远. 对我今天提到的东西,如果大家有时间,一定要去深入了解,在技术的道路上才有可能看得远.走得稳.飞得高. 另外有一句对所有技术人员想说的话: 学无止境.切忌坐井观天.有一点小小的成就就沾沾自喜.止足不前. 扎实的基础 万丈高