网站首页 程序人生 资源汇 学建站 源码 织梦模板 特效代码 技术手册 IT头条 电商 创业 运营 站长

特色栏目 视频下载 织梦模板 教程书籍 职业生涯 正能量 美图

程序员为什么热衷造轮子收藏挑错

2018-06-13 16:22 采编:程序人生 阅读 投稿赚币
搜索一下造轮子或者程序员为什么喜欢造轮子,会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年。不过还是有再谈的必要。 造轮子 的含义: 明知道你做的

搜索一下“造轮子”或者“程序员为什么喜欢造轮子”,会看到很多相关的讨论,这是个老生常谈的话题,很多人谈过了,谈了很多年。不过还是有再谈的必要。

造轮子”的含义:

明知道你做的不可能比前辈做得更好,却仍然坚持要做。

就软件开发而言,“造轮子”是指,“业界已经有公认的软件或者库了,却还坚持要自己做”。

在软件开发过程中,有时你想造轮子老板却极力反对,有时你不想造轮子老板却坚持要造一个出来,为什么会有这种两极状况?

这篇文章就来讨论“造轮子”这件事,包括下列主题:

  • 程序员为什么会重复造轮子
  • 为什么有人不让“造轮子”
  • 什么时候可以造轮子

为什么会重复造轮子?

每个造轮子的程序员都有自己“不得不造”的理由。比如:

  • 以为自己的需求独一无二,现有的库就是在某个点上满足不了
  • 老轮子没有规格说明书,或者接口太复杂,不知道怎么用,搞明白太难
  • 需要在老轮子上添加新功能,然而老轮子代码难读无人可问,不知道何时能弄明白,看不到结果,容易放弃
  • 眼界有限,不知道已有这样的轮子
  • 版权原因无法使用第三方库,比如Google Android实现JVM(Google曾因为一行代码而和Oracle打官司),比如阿里YunOS自己实现JVM
  • 就想锻炼自己,因为造轮子对自己的设计、编码能力有很大好处,对理解业务也有很大好处
  • 自己造轮子,有“控制感”,看得见摸的着,可以一步一步来,一个一个小目标迭代出大目标,不断成功的小激励,会带给自己前行的动力
  • 创新成分多(对自己而言),有成就感
  • 不相信老轮子,譬如老轮子可能有后门、漏洞(想想OpenSSL的心脏出血漏洞)、后期万一要修改没把握等,反正是觉得自己造轮子心里更踏实
  • 不想让自己产品的关键技术掌握在别人手里,也不想让自己的核心用户数据流经别人的系统
  • 别人的轮子不开放,我就是要赶紧造(山寨)一个出来以便获得话语权或商业利益

为什么有人不让“造轮子”

 
遵循惯例

有坚持要造轮子的,也有高呼“不要重复造轮子”的。那为什么有人不让造轮子呢?

  • 项目(产品)时间紧张,用第三方库搭积木快,能节约时间
  • 领导上(或队友)认为想造轮子的程序员水平就那样,不可能造出比现有库(软件)更好的轮子,显然会漏洞百出推高维护成本
  • 造轮子是个看上去很美做起来很操蛋的事儿。复杂一点的轮子,造出来很费劲,道阻且长,很可能骑虎难下或半途而废,导致精力和时间的浪费
  • 待造的轮子不是产品的关键(比如一个字符串类、一个XML解析类),不属于核心竞争力,不值得花费人力,要把精力放在最重要的事情上

结合为什么要造轮子以及为什么不让造轮子,就可以理解本文一开始提到的那种反差极大的状况。

什么样的轮子可以重新造?

看现在的软件发展趋势,越来越多的基础服务能够“开箱即用”、“拿来用就好”,越来越多的新软件可以通过组合已有类库、服务以搭积木的方式完成。这是趋势,将来不懂开发语言的人都可以通过利用现有软件组件快速构建出能解决实际问题的软件产品。

在这种趋势下,软件(服务)就慢慢演化为两极:

  • 满足终端用户的应用类产品
  • 解决软件产品通用问题的基础服务(组件)

比如你在自己的App中需要即时通信功能,完全可以使用融云、环信、网易云信等服务快速集成。

比如你想在自己的App中添加支付功能,完全可以使用Ping++或Pay++来解决诸多支付渠道的集成问题。

比如你想添加分享功能,ShareSDK、友盟SDK可以节省你很多时间。

比如你想做跨平台的游戏,使用Cocos2d-x远比自己在Android、iOS上从底层从OpenGL ES干起要高效得多。

比如你想让你的网站支持更多用户更多并发,能够快速部署、迁移、规模复制,那完全可以借助阿里云、AWS、Azure等而没必要自己搞。

比如你想推送消息给用户,就可以用腾讯信鸽、极光、个推、百度云推送、友盟等。

……

类似的场景很多很多。这种趋势使得一部分厂商集中精力开发基础服务(组件),一部分企业集中精力解决用户需求。对基础服务(组件)厂商来讲,他通过解决更复杂的基础问题为其他厂商带来便利而盈利。对终端软件产品企业来讲,他通过解决用户问题给用户创造价值而盈利,从理论上讲,只要其产品从用户端或第三方获取的价值大于支出给基础服务厂商的价值,生意就可以做下去。

有了这样的认识,什么样时候可以造轮子什么时候最好不重复造轮子就不再是问题了。

对于提供基础服务的软件厂商,很多轮子必须造。因为他要提供服务给其他软件厂商,你拿友商的组件换个包装提供给其他软件厂商,没有竞争力。所以你看到在某个软件服务市场上,会有多家企业各自在造轮子,为的就是自己掌握核心科技有自己的竞争力。比如提供云服务的,有阿里,七牛,百度……比如提供即时通信服务的,有融云、环信、阿里云信……比如提供语音服务的,有科大讯飞、百度、OKVoice、Google、微软……

对于开发满足终端用户的应用类产品的公司,很多轮子就没必要造。比如你提供一个健身类的App,可能需要引入即时通信功能,用第三就好了。

从公司的角度讲是这个样子,那对程序员来讲呢?

对程序员来讲,在一开始的学习成长阶段,造轮子则具有特殊的学习意义,学习别人怎么造,了解内部机理,自己造造看,这是非常好的锻炼。每次学习新技术都可以用这种方式来练习。

当我们掌握了一门技术,可以用于实际产品开发中时,关于造轮子,就有了另外的划分:

一些基础的工具类库,比如String,比如Xml,比如Json,比如Http,比如推送,比如流媒体协议,重新造的必要性不大。而与业务相关的,可以尝试重构、再造,对理解业务有好处,也能更好适应新需求。


 

程序人生if98.com,专注IT人成长、所需、职场,欢迎参与撰稿、分享资源!

扫一扫关注程序人生公众号

免责声明:本文内容由[程序人生]用户自行发布或编辑转载,本站不拥有所有权、不承担相关法律责任。 如发现有涉嫌抄袭的内容,可邮件 web@if98.com 举报,并提供证据,一经查实,本站将立刻删除涉嫌侵权内容。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
-->

站长推荐文章

  • 我的编程之路:从好玩到

    我的编程之路:从好玩到玩好

    先解释下标题吧:好玩指的是爱好、觉得有趣,玩好指的是把事情搞定、让事物变得更好。 第一次接触电脑 我最早接触电脑是小学四年级的时候,...

    07-17发布346人阅读学习心得

  • 给未来程序员的15个顶级职

    给未来程序员的15个顶级职业建议

    好吧,我觉得10条不够,应该有15条职业建议。不过首先,我想解释一下出色的职业生涯是什么样的。 他们的进步曲线并不是每个月都会上升一点的...

    07-17发布326人阅读学习心得

  • 程序员你为什么迷茫?

    程序员你为什么迷茫?

    你曾经充满热情,是一位开源软件倡导者,你崇尚全栈工程师才有未来的理念,你渴望改变世界。但是现在你每天都处于焦虑之中,你每天不断地学...

    07-17发布190人阅读学习心得

  • 如何伪装成一个年薪20万刀

    如何伪装成一个年薪20万刀以上的码农?

    年轻的程序猿朋友们,从东岸、中部、南加迁徙到硅谷的你,是否希望远处的美女向你投来崇拜的目光?希望身边的朋友觉得你很酷很牛逼?今天我...

    09-28发布144人阅读学习心得

  • 如何成为一名成功的程序

    如何成为一名成功的程序员

    编程是一个仅靠兴趣仍不足以抵达成功彼岸的领域。你必须充满激情,并且持之以恒地不断汲取更多有关编程的知识。只是对编程感兴趣还不足以功...

    10-31发布139人阅读学习心得

  • 做博士还是做一个专业的

    做博士还是做一个专业的程序员?

    当我从大学毕业获得计算机科学学位的时候,我就想继续学习并获得博士学位。但是,我又想作为一个软件开发者去参与工作,所以我在这一行中工...

    07-17发布103人阅读学习心得

  • 程序员的工作总结

    程序员的工作总结

    在新的公司工作半年了时间飞逝,作为一名工程师,也要时刻对自己反省,这样才能够有所提升,在工作中我总结了一下几点,这个可能也是大家常...

    06-13发布102人阅读学习心得

阅读排行

论坛信息推荐 更多 >>

关于我们

微信公众号

扫码关注官方微信

返回顶部