标签:
搜索一下“造轮子”或者“程序员为什么喜欢造轮子”,会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年。不过还是有再谈的必要。
“造轮子”的含义:
明知道你做的不可能比前辈做得更好,却仍然坚持要做。
就软件开发而言,“造轮子”是指,“业界已经有公认的软件或者库了,却还坚持要自己做”。
在软件开发过程中,有时你想造轮子老板却极力反对,有时你不想造轮子老板却坚持要造一个出来,为什么会有这种两极状况?
这篇文章就来讨论“造轮子”这件事,包括下列主题:
每个造轮子的程序员都有自己“不得不造”的理由。比如:
有坚持要造轮子的,也有高呼“不要重复造轮子”的。那为什么有人不让造轮子呢?
结合为什么要造轮子以及为什么不让造轮子,就可以理解本文一开始提到的那种反差极大的状况。
看现在的软件发展趋势,越来越多的基础服务能够“开箱即用”、“拿来用就好”,越来越多的新软件可以通过组合已有类库、服务以搭积木的方式完成。这是趋势,将来不懂开发语言的人都可以通过利用现有软件组件快速构建出能解决实际问题的软件产品。
在这种趋势下,软件(服务)就慢慢演化为两极:
比如你在自己的App中需要即时通信功能,完全可以使用融云、环信、网易云信等服务快速集成。
比如你想在自己的App中添加支付功能,完全可以使用Ping++或Pay++来解决诸多支付渠道的集成问题。
比如你想添加分享功能,ShareSDK、友盟SDK可以节省你很多时间。
比如你想做跨平台的游戏,使用Cocos2d-x远比自己在Android、iOS上从底层从OpenGL ES干起要高效得多。
比如你想让你的网站支持更多用户更多并发,能够快速部署、迁移、规模复制,那完全可以借助阿里云、AWS、Azure等而没必要自己搞。
比如你想推送消息给用户,就可以用腾讯信鸽、极光、个推、百度云推送、友盟等。
……
类似的场景很多很多。这种趋势使得一部分厂商集中精力开发基础服务(组件),一部分企业集中精力解决用户需求。对基础服务(组件)厂商来讲,他通过解决更复杂的基础问题为其他厂商带来便利而盈利。对终端软件产品企业来讲,他通过解决用户问题给用户创造价值而盈利,从理论上讲,只要其产品从用户端或第三方获取的价值大于支出给基础服务厂商的价值,生意就可以做下去。
有了这样的认识,什么样时候可以造轮子什么时候最好不重复造轮子就不再是问题了。
对于提供基础服务的软件厂商,很多轮子必须造。因为他要提供服务给其他软件厂商,你拿友商的组件换个包装提供给其他软件厂商,没有竞争力。所以你看到在某个软件服务市场上,会有多家企业各自在造轮子,为的就是自己掌握核心科技有自己的竞争力。比如提供云服务的,有阿里,七牛,百度……比如提供即时通信服务的,有融云、环信、阿里云信……比如提供语音服务的,有科大讯飞、百度、OKVoice、Google、微软……
对于开发满足终端用户的应用类产品的公司,很多轮子就没必要造。比如你提供一个健身类的App,可能需要引入即时通信功能,用第三就好了。
从公司的角度讲是这个样子,那对程序员来讲呢?
对程序员来讲,在一开始的学习成长阶段,造轮子则具有特殊的学习意义,学习别人怎么造,了解内部机理,自己造造看,这是非常好的锻炼。每次学习新技术都可以用这种方式来练习。
当我们掌握了一门技术,可以用于实际产品开发中时,关于造轮子,就有了另外的划分:
一些基础的工具类库,比如String,比如Xml,比如Json,比如Http,比如推送,比如流媒体协议,重新造的必要性不大。而与业务相关的,可以尝试重构、再造,对理解业务有好处,也能更好适应新需求。
相关阅读:
老觉得在混日子?老迷惘找不到方向?老嫌薪水低?关注我的订阅号“程序视界”:
标签:
原文地址:http://blog.csdn.net/foruok/article/details/51403890