Article Image
read

随着网络上优秀的开源代码越来越多,很多时候做项目更像搭积木,拼拼凑凑就能得到一个看起来很美的大产品。比如做一个游戏社区,我需要一个论坛让大家能讨论游戏,一个CMS去管理每个游戏的主页,一个游戏管理系统去管理我的游戏,这3个需求几乎都有开源产品可以用,大体功能上也不会差,还可能能够省下很多研发成本,注意这里我使用了“可能”。

于是很多团队的带头人会常常抛出这样的话语:这个需求用那个啥啥啥做就行了,功能都满足,不要自己开发了,我们要短平快。或者是这样的很不友好的话语:轮子就在那里,你为什么要重复创造轮子呢?这样的话,我听了好多次,最近两年在开源代码的使用上纠结过,走错过,感觉现在对这个事情似乎有一些新的认识:开源代码是一把双刃剑,用得好可以让你的开发进度跃进好几个时代,用的不好,会让你的研发人员苦不堪言。提高开发进度的优点自不必说,好些个开源产品里面的业务逻辑优化之精,使用者在最初的需求设计里都没有想到,极好的体现了术业有专攻的优势。这里还是结合自己的经验谈谈不好的方面,也给自己将来在工作中可能出现的纠结提前提个醒。

你的思路会被局限

是的,你的产品思路会被这个开源产品的思路所左右,人都有惰性,自己苦思一个交互细节的感觉必然不太好,所以如果选用的开源产品里有可用的交互了,那么人就会停止在这个事情上过多的思考,即便这个交互并不是一个好的实现。你大可说等我产品跑起来了我来优化这里就好,但事实是当产品跑起来的时候,你会发现你有更多看起来更重要的事情需要关注,虽然这个实现不好,但是它还能工作,只不过大家用起来不那么顺手而已,那么优化它的优先级会被你无限的推后,当这样的问题多起来,整个产品的体验就完蛋了。

同时,在一个项目中,你使用的开源产品可能还不止一个,于是你不得不接受多个开源产品开发团队的思路完全不同甚至背道而驰。你会说,那么我干脆彻底把他们的思路在我强大的意志下统一起来好了,无非就是多些开发工作嘛。当你这么想的时候,你也许就离开了选择这些开源代码是为了节省研发成本的最初道路,最后发现还不如自己“重复造轮子”来的实惠。

你所能做的事情会被局限

如果你运气够好,这样一个拼凑起来的产品切中了用户的需求痛点,虽然体验有点不流畅,他们开始使用你的产品了,如果你的运气更好,可能已经开始有大量的用户使用你的产品了,不用怀疑,这个现象会被其他团队发现,于是你的产品被“学习”了,竞品出现了。糟糕的是,他们微创新了,体验上也比你的产品更好。

你痛定思痛决定要优化你的产品,这时候你会时常听到你的研发人员告诉你:XXXX(开源产品的名字)的底层就是这么写的,你要的改变不改动底层代码无法实现,改动底层可能会有意料之外的影响,因为这个开源产品太大了,我不知道修改底层会对上层逻辑带来什么样的后果。相信我,你的工程师不是在找借口,这个开源产品有30,000行代码,他真的无法一行一行都看过,每个函数的作用他也无法在短时间内了解清楚,最重要的,可能这个工程师已经不是当初整合这个开源产品的工程师了!他所面对的是开源产品团队+最初的整合团队所挖的一个大坑,深不见底,不幸的是,你所面对的也一样。

开源产品改变了

就在你历经千辛万苦克服了上面两个问题——这个时候可能连这个开源项目的创始人都不认识这个项目在你这里的代码了(因为你可能改了很多很多)——的时候,这个开源项目更新了,在他们的changelog里说,我们修复了如下严重的bug,堵上了N个安全漏洞,同时为了解决这些问题,我们修改了整个项目的底层框架,让它效率更高,更安全,你应该更新它。

那么你更新,还是不更新?我想我不用再说更多了。

你的工程师会讨厌你——如果你真的很想你的产品变好

这是结合上面三个问题导致的第四个问题,你想尽一切办法去把事情变好,那么最辛苦的人会是你的工程师,他们为了满足你的需求,需要在思路不同的几个开源项目的代码中来回穿梭;为了完成一个小小的要求,他们可能不得不翻阅大量的代码和文档;为了写一个优美的用户界面,他们可能不得不用你使用的产品的各个模板系统。他们会觉得自己的效率太低了,时间被浪费了,精力被耗尽了,而你为了产品,还在努力的Push,他们开始讨厌你了。甚至他们撂挑子不干了,只剩下你痛苦的抱着头。

还是总结吧(我说不下去了)

所谓的短平快,只不过是“投机”的美丽外衣,如果你真的想好好做好一个产品,该自己研发的部分,千万不要凑合,甚至条件允许的情况下,尽量全部自己开发,拿过开源项目的代码来看,来学习,然后让自己的团队吸收其中的经验然后自己写。重复造轮子的意义在于:那是一个合适你的轮子,重复造4个轮子,可能会避免你重复造轴承,甚至避免重复造车身。

注:这里提到的开源产品,指可以直接给最终用户使用的开源产品

Blog Logo

Westy Hu

Lousy Programmer, Lazy Blogger, OKay Product Designer


Published

Image

鴕鳥誌

Curiosity is what makes this world better.

Back to Overview