Skip to main content

我想做互联网的开发的。或者是有了几年网龄的用户,都认识腾讯的QQ。上个月的末的360和QQ之争刚刚算是平息;今天在PHP100.com的网站上面看到这篇文字《我们应该偷代码还是思想》。着实让我有些自己的感触。整篇文字不长,字里行间讲的都是现在互联网的开发中碰到的实际的问题。我觉得很有意思,尽管我不是一个做开发的人员,但是我圈子周围每次听到“这个代码以前我写过的,只要Ctrl+C一下,再Ctrl+V一下“即可搞定。每次我听到这样的声音我都在怀疑真的是这样吗?

这里我将这篇稿子的地址放出:《我们应该偷代码还是偷思想》文字也引用过来,至于作者,文章没有著名,这里就省略方便阅览:

————————————————————————————————————
我想很多人最开始的学习就是模仿,有的人模仿能成功,有的却只是一个学习过程。学东西容易。化为己有难。

我发现自己在最近的几个项目中偷窃了其它项目的思想。当然,并不是真正的“偷”,而是浏览和学习你欣赏的项目和开发者,从中窃取思想。诸如设计模式,重构方法等。Chris是如何处理hub里的命令行参数的?shell脚本和rvm上的Ruby是如何进行韦恩转化的?

当你遇到问题,有点难度、需要你动一下脑子时,你要问“嗨,我怎么实现这个呢?”,这是个不错的问题入手点。

一旦你遇到这种问题,当然,你可以在Google上搜索出一篇文章,找到方案。但如果你从别人哪里“偷”来,你会收获两点:

你的理解和那个特别的项目之间建立了思想上的连接。

你“拥有”了那个思想。

“拥有”你偷来的东西是一种潜移默化的过程,但你可以想象出:你花大量的时间去理解这些思想,你把它应用到解决自己的问题里。这种思想上的过程是很有满足感的。突然灵光一闪,你开始明白为什么作者要重构这个方法,为什么他们需要一个辅助类了。

不要误解;能够自己创造东西当然是最好。这是学习知识达到了另外一种完全不同的级别,大多数情况下都需要我们这样。但有时,从他人哪里学习优秀的经验是一种最快的启蒙方式——不是为了要解决你手头上的问题,而是要本质上理解其中的精髓。

观察别人是如何解决你的问题的,要自己能够理解其中体现的思想,按照自己的观点重新塑造它,让这思想成为“你的”思想,你把它装在自己的脑袋里,以备下一个项目中使用。这也就是“学习”这个词的另一种说法,但就在我想到这种想象的、异样的说法时——哦,这正是几个月前在另外一个项目中从Homebrew哪里偷到的继承策略吗 —— 我接受知识的能力提高了。

一旦你对知识的吸收消化达到了这种水平,那这些外来的思想就成为了你脑海里捻之即来的自有思想了。
—————————————————————
作者的原文到这里就结束了。其实身为一个每天都和互联网混迹在一起的人,抑或是献身于互联网的人,都是从学习观察模仿开始的。从具象的界面对话框,到抽象层的对象,包括前端也是一样。我们很多时候,在做一款和互联网类似的产品的时候,都会先观察去把玩一下它的产品。话说国内的新浪微博、我相信它在国内或者说是大陆,它是继国外的twitter之后,应该是最早做这款产品的。当然按照自己的使用感受,我觉得它是走在前沿的,腾讯不出半年就将其抄袭出来了。速度和效率还是保持以往的风格。当然我们都知道腾讯的微博的推广是不用愁的。只是真正作为名人一辈的,用它的就少了。关于它的创新,我看到就更少了。以至于我开通完了。用了不到几天,立马就不在更新了。

抄袭的背后,在我看来你可以研究别人的模式和思路,然后融入自己的产品。特别是一些用户已经习惯的模式。在我自己看来,做产品一定要有自己的亮点,而且一定要是前沿的。符合自己产品,如果抄袭的东西多余自己主创的,那么你就是在把用户当傻瓜了。所以我提倡先学习,在在一定的积累下面去摸索和总结研究。因为很多东西都是随时间演变的,要与时俱进的去维护一款产品,那么就要做到首先在自己这款产品的亮点上面,去观察自己的产品的缺陷,然后才是去统计研究。再推成出新,一步一步来。这也是我半年来开发cms开发的一点点经验。同样我也看了很多后台,从国外的再到国内的,开源的到公共使用的平台。我会去观察研究,研究他们的框架和模块。现在回头看来,当时的开发还是有些盲目,更多的是少了对作为一款cms应该具备的最基础性的东西。当然,现在的开发出来的产品运行和维护时基本没有问题,不过现在进入后台操作几篇文章,更新几个分类,问题就出来了。所以想想很多借鉴过来的东西,不一定适合自己,唯一可以做的是,是把一些解决常规性的问题的模式,总结下来,下次即可使用。这样是可取的,照搬是没有的。

所以,我不是一个偷代码的人。我最多做的是打开firebug去看别人的网页的源代码的结构。去对比研究。

我思故我在….




Ciga Tang

This is Ciga, who loves reading and sharing interesting things, and has been working as a product designer.

Leave a Reply