微软开发主管的临别赠言

原文:
http://blogs.msdn.com/jaybaz_ms/archive/2007/11/09/parting-words-for-dear-friends.aspx

InfoQ的报道:
http://www.infoq.com/news/2007/11/criticism-from-microsoft-devlead

InfoQ China的报道:
http://www.infoq.com/cn/news/2007/11/criticism-from-microsoft-devlead

有一段时间,我一直想不明白一件事,软件开发中,是算法和数据结构那些实现技能更重要,还是软件设计和编写干净代码的能力更重要。前者的代表应该是微软和Google,后者的代表应该是ThoughtWorks。公司的侧重,在这些公司的招聘过程中,体现得尤为明显。

所以,我们经常看到一群人为了证明某一个方面的重要性,举出无数的理由试图证明另一方面不重要,这样的争论有如语言之争一样,没有任何一方可以说服另一方,结果便是一群人争论半天,回去各自做各自的事去了。实际上,甚至可以说两者都不重要,因为有为数不少的程序,是在没有太多技术难度,也深入考虑设计和架构的情况下完成的。这也是很多人抱怨自己的工作没有技术含量的原因。

在我看来,两者都很重要。

过分强调某一个方面,导致的结果就是另一方面的欠缺,这一点尤其容易出现在有着很强实现本领的人身上。当我们说某人很牛时,多半指的是他能实现出一些别人无法轻易实现的东西,显然,没有人愿意称一个只会写“Hello, World”的人为牛人。所以,一旦不小心被当成了牛,很容易就真的以为自己是牛了,所以,忽略了另一个方面,对于工程很重要的方面。

有一种说法是,某人牛到写出的代码别人看不懂,这一方面是这个人实现本领过强,另一方面也说明,这个家伙着实不好合作。当然,某些算法初读起来确实令人费解,但大多数情况不是这样。我着实见过一个被周围的人当作牛的人写的代码,一份让我觉得愤慨的代码,除了实现功能之外,一无是处。在工程中,设计出良好的结构,编写出很好的代码,对后续的开发和维护都是一种重要的基础。当某人因为点灯熬油成功修复一个bug而受到大家吹捧的时候,请别忘了,多半这个bug就是因为他自己没有良好工作习惯而埋下的。

微软开发主管的临别赠言为这种情况添加了一些注脚,微软是一个大家认为的牛人集合体,出现这种情况,只能说明,他们软件开发的另一面重视不够。

反方向的情况似乎并不明显,没有人会因为自己有良好的设计功底而忽略了自己的实现技能,毕竟,有高超实现技能的人,才是“牛人”。

不过,强调实现技能这点也有好处的。随着微软和Google对实现技能重视的宣传,大家越来越重视这些基础的东西,这让很多人,尤其是还没有明确自己努力方向的学生们看到了一丝曙光,因为这至少不会让他们一无是处。

我一直喜欢程序设计是一种艺术的说法,所谓艺术,必然会有一些美的东西在里面。无论是实现了一个精巧的算法,还是搭建出一个宏伟的架构,这些无不是体现程序设计之美的地方。想要体会程序设计之美,那就势必要两手抓,且争取两手都要硬。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值