“不要重复发明轮子”,软件工程大师如此告诫。然而在我看来,很多情况下重复发明轮子是非常必要的,按现在流行的话就是“必须的”。当然,重复发明轮子是需要特别慎重的,有意义并且值得做方可,而且这个要发明的轮子要具备足够的创新。
前些日子,一个师弟要来我们公司实习,由于没什么相关经验没能如愿。然后他就问,如何积累原始经验呢?我当时又是怎么积累经验的呢?“实践”,我用这两个字回答。做计算机技术这行,必须要不断实践,不断学习,方能持续性地进步。从大学本科到研究生期间,我一直在兴趣的引导下写些小软件,比如五子棋游戏、PHP相册、启动U盘制作工具、个人网站等,另外还做了不少兼职项目,包括以前大学的招生网、招生语音查询系统、某公司后台管理系统、某WAP流媒体应用平台等等。此外,我还在学习和研究工作中,实现了一系列算法程序,网络存储、数据挖掘和分布式计算相关的软件。这些实践为我积累了很多很多经验,使得我在毕业找工作面试时,显得很有经验,并且很有信心。其实,这些实践大多都是在“重复发明轮子”。对于我来说,重复发明轮子为我积累了经验,而且时常对轮子的改进或者完全重新设计轮子,让我认识了创新的重要意义。
对我而言,为了学习和实践,为了积累经验,我不断重复发明着轮子,改进着轮子,也会发明全新的轮子。但是,很多人都没有意识到,很多情况下发明全新的轮子都是以重复发明了前人的轮子为前提的。创新是需要土壤的,而实践是这个土壤的主要组成部分。单从软件工程的角度来看,考虑软件质量、开发成本、开发周期等因素,我们需要尽量不重复发明轮子。对于IT公司,核心技术往往是企业的命脉,不能因为已经有轮子了,就不发明轮子。当关系和影响到公司的生存时,必须要发明自己的轮子,把命运牢牢掌握在自己手里。想想咱们中国,通用CPU、操作系统、编译器、办公软件...,就是因为我们没有发明自己的轮子,而处处受制于国外,甚至还威胁到国家的安全。在开源领域,中国对开源界的贡献是非常非常小的,就是因为我们大家都习惯于拿来主义,自由地享受着别人发明的轮子,而很少去重复发明或者全新发明轮子。
其实还是那句老话,“走自己的路,让别人去说吧”,该重复发明轮时就重复发明一下又何妨!如果再在轮子上来点创新,或者创新性地发明新的轮子,那说不定别人就会重复发明你的轮子了。
(Aiguille LIU / 刘爱贵 / aigui.liu@gmail.com)
分享到:
相关推荐
如何避免产品设计中的「生造方案」和「重新发明轮子」? .doc
不过让我感到有点困惑的是,怎么样才叫做不要重复制造轮子?如何才能站在巨人的肩旁上?现在网络如此发达,资源如此丰富,开源社区也发展的很好。有很多源代码可以下载,使用。那是不是说当我们在写一个程序的时候就...
决不重新发明轮子.docx
NULL 博文链接:https://changzhiwin.iteye.com/blog/505946
NULL 博文链接:https://basil1292.iteye.com/blog/459911
重新发明轮子这些是我遇到的一系列面试问题的集合,我被要求重新发明轮子。
不要再重复造轮子了,Hutool这款开源工具类库贼好使(csdn)————程序
它跟常用的开源运维工具( ansible , saltstack , puppet )没有本质区别,那为什么还要重复造轮子呢? 运维通道有那些特点? 运维通道简单,高效,安全,可靠,可扩展。 简单:只有一个初始化文件,无需第三方...
我从未使用过COBOLcopybook,但是曾见过大量的技术出现又消失,所以我可以理解这个问题。在本文中,我将说明隐藏在SOA背后的主要驱动力,以及如何改进技术以支持SOA。我将在概念层面上进行讨论,并在最后给出一些...
数据描述符(descriptor)和存取描述符均具有以下可选键值:当且仅当该属性的 conBgurable 为 true 时,该属性描述符才能够被改变,同时该属
造轮子的目的,不是去重复的发明轮子,而是实际的去动手制作轮子。把一些公认的算法,优秀的思想,用自己的方式表达一下,锻炼一下,让知识成为自己思想的一部分。而不总是去google去百度,xxx好还是zzz好,而是能够...
特斯拉凭借Model S在电动车市场声名大振,但这款汽车的独到之处远非只是电动传动系统、电池组和未来派的车身。许多人不知道的是,据IHS Technology公司的拆机分析服务,特斯拉的非传统设计无处不在,一直到汽车信息...
Python 3.9 中下载Dlib包的轮子
Python轮子 非常好用Python轮子 非常好用 Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用Python轮子 非常好用
tinyregex 用Javascript实现正则表达式的实验。重新发明轮子。
thewheel-js 停止重新发明轮子。 它在这里 ;)
1、App/Common/Conf/db.php 数据库连接参数修改; 2、App/Api/Conf/config.php 微信小程序的appid、secret、mchid、key、notify_url,SELF_ROOT的参数修改; 3、ThinkPHP\Library\Vendor\wxpay\lib\WxPay.... ...
了不起的轮子小班科学详细内容PPT课件.pptx
SolidWorks小轮子,标准轮子,带轴承,实心橡胶轮,用于手推车