有坚持要造轮子的,也有高呼“不要重复造轮子”的。那为什么有人不让造轮子呢/p>
- 项目(产品)时间紧张,用第三方库搭积木快,能节约时间
- 领导上(或队友)认为想造轮子的程序员水平就那样,不可能造出比现有库(软件)更好的轮子,显然会漏洞百出推高维护成本
- 造轮子是个看上去很美做起来很操蛋的事儿。复杂一点的轮子,造出来很费劲,道阻且长,很可能骑虎难下或半途而废,导致精力和时间的浪费
- 待造的轮子不是产品的关键(比如一个字符串类、一个XML解析类),不属于核心竞争力,不值得花费人力,要把精力放在最重要的事情上
什么样的轮子可以重新造/h2>
看现在的软件发展趋势,越来越多的基础服务能够“开箱即用”、“拿来用就好”,越来越多的新软件可以通过组合已有类库、服务以搭积木的方式完成。这是趋势,将来不懂开发语言的人都可以通过利用现有软件组件快速构建出能解决实际问题的软件产品。
在这种趋势下,软件(服务)就慢慢演化为两极:
- 满足终端用户的应用类产品
- 解决软件产品通用问题的基础服务(组件)
比如你在自己的App中需要即时通信功能,完全可以使用融云、环信、 易云信等服务快速集成。
比如你想在自己的App中添加支付功能,完全可以使用Ping++或Pay++来解决诸多支付渠道的集成问题。
比如你想添加分享功能,ShareSDK、友盟SDK可以节省你很多时间。
比如你想做跨平台的游戏,使用Cocos2d-x远比自己在Android、iOS上从底层从OpenGL ES干起要高效得多。
比如你想让你的 站支持更多用户更多并发,能够快速部署、迁移、规模复制,那完全可以借助阿里云、AWS、Azure等而没必要自己搞。
比如你想推送消息给用户,就可以用腾讯信鸽、极光、个推、百度云推送、友盟等。
……
类似的场景很多很多。这种趋势使得一部分厂商集中精力开发基础服务(组件),一部分企业集中精力解决用户需求。对基础服务(组件)厂商来讲,他通过解决更复杂的基础问题为其他厂商带来便利而盈利。对终端软件产品企业来讲,他通过解决用户问题给用户创造价值而盈利,从理论上讲,只要其产品从用户端或第三方获取的价值大于支出给基础服务厂商的价值,生意就可以做下去。
有了这样的认识,什么样时候可以造轮子什么时候最好不重复造轮子就不再是问题了。
对于提供基础服务的软件厂商,很多轮子必须造。因为他要提供服务给其他软件厂商,你拿友商的组件换个包装提供给其他软件厂商,没有竞争力。所以你看到在某个软件服务市场上,会有多家企业各自在造轮子,为的就是自己掌握核心科技有自己的竞争力。比如提供云服务的,有阿里,七牛,百度……比如提供即时通信服务的,有融云、环信、阿里云信……比如提供语音服务的,有科大讯飞、百度、OKVoice、Google、微软……
对于开发满足终端用户的应用类产品的公司,很多轮子就没必要造。比如你提供一个健身类的App,可能需要引入即时通信功能,用第三就好了。
从公司的角度讲是这个样子,那对程序员来讲呢/p>
对程序员来讲,在一开始的学习成长阶段,造轮子则具有特殊的学习意义,学习别人怎么造,了解内部机理,自己造造看,这是非常好的锻炼。每次学习新技术都可以用这种方式来练习。
当我们掌握了一门技术,可以用于实际产品开发中时,关于造轮子,就有了另外的划分:
一些基础的工具类库,比如String,比如Xml,比如Json,比如Http,比如推送,比如流媒体协议,重新造的必要性不大。而与业务相关的,可以尝试重构、再造,对理解业务有好处,也能更好适应新需求。
相关阅读:
- 怎样新学一门技术
- 问答 | 学习编程语言最好的方法是什么
老觉得在混日子迷惘找不到方向嫌薪水低注我的订阅 “程序视界”:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!