“好产品往往是用很烂的代码写出来的”
忘记最早是在哪里看到的这句话的,最近深有感悟。
在开发的过程中,我们总是无可避免地会遇到需要在“代码质量”和“产品质量”之间做权衡的时候。作为一个程序员,我们往往会追求代码本身的美感,而忘记这个程序能够产生的价值。从用户的角度来说,除非他脑子进水了或者是一个geek,不然用户永远不会管你服务器用的是Linux系统还是万恶的Windows,服务器端的代码用的是php还是高贵的RoR,你是用Ctrl+C & Ctrl+V从网上到处抄来的代码,复用了别人已经开发好的系统,还是用尽了各种设计模式和PEAA中学来的各种架构模式、绞尽脑汁严格控制代码中空格和tab的区别以及行末是否有多余空格等亲手一行一行敲出代码来。
用户关注的是你这个产品能不能满足他的需求,是不是有很好的用户体验。
这让我想起了Chrome里处理ed2k链接的方式。Chrome现在是我最喜欢的浏览器,但是每次我要到verycd.com上面去找一张专辑或者一部电影(我承认我侵犯版权了,我忏悔……),我都会很不爽。
为什么?因为在找到一个资源之后,我要么需要在页面空白位置点击右键,然后查看源代码或者“检视页面元素”,手动找到这个链接,复制这个链接,填到eMule里;或者我要打开我万不得已才打开的IE,或者我要打开我臃肿的做开发的时候才用到的Firefox。在这个支付宝和建行都已经支持Chrome的年代,这种事情实在让我很难以接受。
为什么?因为Chrome不认ed2k的链接。
为什么?很明显,ed2k的链接对待”|”这个符号不太符合标准,由于Chrome的代码用一种通用并且优雅的方式对待所有URL Scheme,而正好ed2k链接是一个比较尴尬的特例,于是它的“|”符号被转义了。
去读那个issue里面的用户评论吧,我基本上笑死了:)有用户在问这不就是一个if语句么,而马上开发者就说这样很脏,开始讨论是不是有一种通用的方式去对待这一类特殊的URL Scheme。然后有人说貌似只有ed2k链接比较变态啊,不存在一类特殊的URL Scheme,而是只有一个。这下尴尬了,不存在从代码角度来说很“优雅”的解决方案,至少短时间内找不到。而这时一个看起来比较senior的开发者就出来讲了一大堆Chrome内部对URL的处理方式,试图解释为什么这个bug还没有被修掉。后来又有用户出来说了:
Comment by NoamNelke, Oct 30, 2009
I'm all against special-casing in general, but at least until a better solution
is found or agreed upon - please, just do it...
Google code上的Chromium项目已经有了超过29000个Issue,这个Issue的Id是160,是一个在Chrome 0.2时代就存在的bug。
这个Issue在Google code上的chromium项目里的优先级是P3,就算Chrome的用户只有极少数会像我这样去点击ed2k链接,但是
至于么?不就是一条if语句么?
看来Google的APM/PM还不够多呀。
———————————————————–
另外一件事情是,Windows里有一个名字叫abc的数据结构 ,而且还是一个API。
我就想,负责这块代码的工程师们得有多大的毅力和自制力去维护它,并且在MSDN上搞出这么专业的文档。
虽然我很想笑,但是我真的要向你们致敬。
———————————————————–
说到这里,大家应该满清楚了。其实问题就在于,我们写代码是为了满足别人的真实存在的需求,还是自己内心充满寂寞的成就感。
在我精神分裂了一年之后,我不太灵光的脑子终于把这个问题想清楚了:)
当然,这不是意味着,在饿了么产品质量是P1,代码质量是P2。在饿了么,代码质量绝对是P1,而产品质量则是P0。你可以先用dirty hack的方式满足产品的需求,但是回头还是得尽快用重构的方式,避免给将来带来太大的麻烦。
当然,饿了么这个产品现在还远远没有达到及格线的标准。如果满分是100分,现在最多只有30分。
不过幸好目前许多工作正在幕后默默地进行着,预计近期能够越过这条线:)
———————————————————–
Raymond童鞋加入之后,我代码写得越来越少,也逐渐有了许多时间处理各种其他事情,和进行思考。在经历了身兼PM+dev lead,磕磕碰碰惹下无数麻烦,带来无数问题,体质变差精神分裂的一年之后,我终于逐渐开始洗手不写代码了。希望从此大家能重拾对我的信心:)
作为一个*nix programmer(虽然SC和PW童鞋还不赞同),我最近很信奉Unix的一条哲学:do one thing and do it well. 或许真的有人可以很好的身兼PM和Dev Lead的角色,但是我还是太嫩了,并且或许这辈子都不可能做到。
但是这未必就不是一件好事,赫赫。
写了这么多,回头看看自己的网站还是那么的不尽如人意,实在是丢脸啊。我做不成一个好PM+dev,那我就努力至少成为一个好PM吧。
![]()
很赞,一个词:平衡
能不能把开发者也理解为“开发工具的用户”呢?如果是那样的话 应该也会有更多有意思的结论吧
两种不同的开发态度而已
Google 对代码的要求一直都很苛刻
同样创造了很多成功的产品
靠,你居然贴了个 imac 来打击我
chrome是不是一和好产品?如果是的话,你就是标题党。
我觉得Chrome无法自定义安装路径很可恶,有点流氓软件的嫌疑。。。
@michael
chrome有绿色版阿。
阿福大虎~
大赞,第一次来看这个blog,真的很赞,加油加油~
今天是我加入饿了么的第一天。留言以纪念。
向阿福童鞋学习。