`
hnylj
  • 浏览: 210940 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

谈谈“不要重复发明轮子”

阅读更多

只身在他乡,常常想起我的父亲,在我们当地他是出名的木匠师傅,一手掌脉设计建造了许多建筑物,留下了很多赞誉,不过现在人年龄也大了,就没有当木匠师傅了。他曾经给我说过,在工程领域,文官永远要输给武将。其意思就是说,一个纸上谈兵的人永远要输给一个不断实践的人。这样的道理或许有些绝对,也不会有人不懂,也许是因为从小就在这样的氛围中耳闻目染,所以我一直都是一个乐于动手实践的人。

 

在软件工程领域,有一句著名的话,叫做“Don't Reinvent the Wheel”--不要重复发明轮子。这句话说得非常经典,也非常有道理。但在生活中,我就发现时常有些人常常被这些名言所束缚,其实我觉得“不要重复发明轮子”也只是站在某一个角度告诉IT人员的一个道理,如果将其奉为不可叛逆的金科玉律,就会束缚我们的思维,阻碍我们的步伐。

 

我是一名从事Java相关开发工作的IT人员,回忆当初自己自学java走过的路,我戏剧性地发现自己就是一个典型的在不断重复发明轮子的人。一个东西别人已经写过了,我将其下载下来,理解他的思路,重新自己再写一遍,或者再改造一遍,通过这个过程,我有很迅速的提高和积累,收获真的不是一点两点。

 

在论坛中,当一些热爱软件开发的同行们贴出一个自己写的东西,下面的留言总会出现,“又是一个重复的轮子”之类的跟帖,但我发现更多的留言是热心指出“如何如何。。。会更好”之类的跟贴,后一种跟贴是抱着一种欣赏交流的态度,非常好,因为我也是这样。

 

试想一下,如果你写了一个数据库连接池的小组件,你将对jdbc有深刻的认识;如果你写了一个IoC容器,你将对各种设计模式,反射机制等有更深的认识;如果你写了一个缓存框架,你将至少会在软件性能优化上加入自己的思考;如果你写了一个js library,你将对js的使用有更深刻的体会。如果......。这些工作永远比每天写几个Ation,几个service,几个DAO让我们提高积累得更快,从而也更清楚地认识自己真正匮乏的是什么。

 

我们不追求一定要让自己的小组件大范围推广,只因为我们还有几分对软件开发的热情,我们乐于学习,愿意研究,我们愿意付出一点时间来不断提高自己,因为这样不仅能让人体会到作为一个男人的那种充满斗志的“孤芳自赏”,也更让我们变得更有价值和竞争力。你觉得呢?

 

 

分享到:
评论
44 楼 hnylj 2010-05-27  
发这个贴,主要是从另一个角度来浅谈“不要重复造轮子”这个话题,从该话题引申出如何来提升自己、发现自己的不足,从而引出“不要重复造轮子”这个话题的另一种思考。

一方面,在实际的应用中,我的思想也一样地保守,也一样的谨小慎微,我并不认为“不要重复造轮子”这观点有问题,甚至我觉得它非常有道理,它用前人的经验告诉后来者应该如何避免问题。而另一方面,我则不想将其视为不可修正的信条,成为不思进取的借口,就如我帖子上所说,你觉得呢?
43 楼 iaimstar 2010-05-27  
fantasybei 写道
iaimstar 写道
我觉得有点扯远了

重复造轮子 是说不要在已经成熟的技术上浪费精力,把精力用在真正 需要解决的问题上

lz说的只不过是学习和提高java水平 的 方法之一

和不要重复造轮子这句话 一毛钱干系都没有啊


-_-!!!im,还在家里蹲着么?


没有了,找了一个喜欢的行业,不做j2ee之类的了,虽然工资奇低 T_T
42 楼 lyw985 2010-05-27  
zhxing 写道
原来的轮子是四方形的


我保留意见
41 楼 itlangqun 2010-05-27  
我支持楼主的想法。很多事情,做事的人反而只会被那些说话不怕腰疼的人指指点点。
要是你真觉得是在做重复的工作,请引用现今流行的或者成熟的东西做对比分析,要是真有理我们自然支持。但是无论怎样我们都得尊重别人的劳动成果,这个是我们同级别人员之间应有的素质(当然有其他情况我就不列举)。
40 楼 select*from爱 2010-05-27  
取其精华,去其糟粕
39 楼 tou3921 2010-05-27  
轮子总是不一样的。
38 楼 lnaigg 2010-05-27  
还是那句话,不要把自己山寨的东西拿到公司
37 楼 fast 2010-05-27  
“不要重复发明轮子”
的意思LZ没理解对。
36 楼 hankesi2000 2010-05-27  
iaimstar 写道
我觉得有点扯远了

重复造轮子 是说不要在已经成熟的技术上浪费精力,把精力用在真正 需要解决的问题上

lz说的只不过是学习和提高java水平 的 方法之一

和不要重复造轮子这句话 一毛钱干系都没有啊


我觉得说重复早轮子的也是这意思

至于从学习角度,每个人都应该是LZ说的这样,一步一步来的嘛,牛顿还站在巨人的肩膀上呢。

发帖的人如果素质好的话,还是对实际问题做实际对待的。比如说新手,刚知道个皮毛就开始造轮子的我不赞成,但是有一定的理解之后再造轮子,加上了自己的见解的,我觉得这样的轮子才是有意义的。
35 楼 renwolang521 2010-05-27  
我很支持 LZ!
我曾经在Javaeye上浏览过些帖子,发现有些人,回帖子口气很“NB”啊,我以为这人很NB,可后来又碰见其一些回帖,那个代码写的 ...
后来倒是看过很多人的回帖很好,可是一点都没有那种老子很NB的口气,后来才发现这些人是真有两把刷子的人。
34 楼 zhxing 2010-05-27  
原来的轮子是四方形的,后来发明的人才发明圆形的轮子,现在的人用了磁悬浮-没轮子。。

轮子都在前个轮子的基础上升级的。。

对于企业,造轮子有风险。。没钱还是省省。。

对于个人,造轮子可以更好的理解轮子,从而升级轮子。。
33 楼 jameswxx 2010-05-27  
如果轮子不好,那为什么不能发明新的轮子?历史车轮滚滚向前,不多几个轮子怎么滚?嘎嘎
32 楼 huangtian549 2010-05-27  
skydream 写道
darkelf9 写道
不要重复发明轮子 是从工程角度出发说的

在实际项目中,尽量用已经通过工程证明 的可用的轮子
如果一定要做一个,那也必须要在对已有轮子充分了解下,能够保证自己做的轮子 比已经有的轮子 有非常明显并且本质的好处


至于个人通过做轮子学习,自己的时间当然自己可以支配,愿意去读源代码愿意去造轮子去冒险都可以,只要自己觉得值得就行
但是不要让公司和团队为个人的轮子去冒险




这个说明很中肯,我很赞成。

不过现在某些人明显有些过了,已经到了除了会用轮子其他什么都不会的地步,而且这些一个一个的轮子,慢慢变成叶子,遮挡眼睛的叶子......

这个很对,我赞成
31 楼 fantasybei 2010-05-27  
iaimstar 写道
我觉得有点扯远了

重复造轮子 是说不要在已经成熟的技术上浪费精力,把精力用在真正 需要解决的问题上

lz说的只不过是学习和提高java水平 的 方法之一

和不要重复造轮子这句话 一毛钱干系都没有啊


-_-!!!im,还在家里蹲着么?
30 楼 gen30 2010-05-27  
别人的轮子不一定适用自己的车子。
29 楼 djb4ke 2010-05-27  
突然发现我可以发铁了!!!!
可能是上次不经意间做了论坛测验,happying...

我的想法是:能区分实际应用,兴趣和求知欲很重要。
对于实际应用的项目来说,当有很多现成的成熟的轮子可以用,自己还要造个轮子是有待商榷,除非是在是有自己独特的需求,不过即使这样,大部分还是在开源代码的基础上修改。

如果是对框架本身非常有兴趣的,自己想造个轮子有何不可,因为有强烈的兴趣,本身有自我强大的驱动力,做个轮子可能是件有乐趣的事情。既锻炼了编程功力,又满足了自我的成就感。(除了框架,学校里的编程狂热爱好者自己写操作系统的也不少呀。。)

不过就我所见,很多人很有激情,刚开始学一些计算机技术的时候非常兴奋,也会想自己写操作系统之类的事情,但是课程一结束就立刻冷却了,我觉得这就是兴趣和求知欲的之间区别。

小弟拙见o(╯□╰)o
28 楼 divenLai 2010-05-27  
我觉得 “不要重复发明轮子” 说的是怎么样提高开发效率。

和你去研究轮子的结构来提高自我并没什么矛盾。
27 楼 jnoee 2010-05-27  
一个好的轮子的产生:
1. 对现有的轮子不满意。
2. 研究了现有轮子后觉得自己能做得更好。

有的轮子发明者根本都说不出与现有的轮子相比自己的轮子有哪些优势,这就是我觉得没必要发明的轮子。
26 楼 greatghoul 2010-05-27  
学习的话,我觉得还是发明轮子比较好,项目中,还是考虑下再说。。。
25 楼 lib 2010-05-27  
<p> </p>
<p><span style=""><strong>我们重复发明轮子,不是为了证明什么,而是为了学到什么!!</strong></span></p>

相关推荐

    Django是否存在重复制造轮子

    很多时候,都听人家在说不要重复制造轮子,要站在巨人的肩膀上等....不过让我感到有点困惑的是,怎么样才叫做不要重复制造轮子?如何才能站在巨人的肩旁上?现在网络如此发达,资源如此丰富,开源社区也发展的很好。...

    决不重新发明轮子.docx

    【决不重新发明轮子】这个概念源于创新策略中的一种智慧,即避免不必要的重复劳动,有效利用已有资源进行改进和优化。在IT行业中,这一理念尤为关键,因为技术更新迅速,不断有新的产品和服务出现,而大部分创新往往...

    重复造轮子,表单验证

    在IT行业中,"重复造轮子,表单验证"是一个常见的议题,特别是在软件开发中。当我们谈论表单验证时,通常是指在用户提交数据到服务器之前,在客户端(通常是Web浏览器)进行的数据验证过程。这个过程确保了用户输入...

    发明轮子之“红黑树 二”

    通过阅读博客文章"发明轮子之“红黑树 二”",我们可以期待作者对红黑树的深入解析,包括更复杂的操作如旋转和颜色调整,以及如何在实际编程中应用这些概念。"redblacktree"这个文件名可能是该系列教程的源代码示例...

    记录用的好的插件,开源项目,代码等等。不重复造轮子_Notes.zip

    记录用的好的插件,开源项目,代码等等。不重复造轮子_Notes

    个人项目,将维护起来,方便以后重复造轮子,同时也开源出来给广大强大的程序员们一起优化更新代码_tools.zip

    个人项目,将维护起来,方便以后重复造轮子,同时也开源出来给广大强大的程序员们一起优化更新代码_tools

    省力的轮子PPT课件.pptx

    轮子作为人类历史上重要的发明之一,它的出现极大地改变了人类的生产和生活方式,提升了工作效率,减轻了人力负担。 首先,轮子的主要特点包括圆形结构、旋转运动和滚动摩擦。圆形设计使得轮子在转动时具有连续性,...

    本项目本着避免重复造轮子的原则,建立一套快速开发JavaWEB项目(asurplus-layui),能满足大部分后台管理系统基础

    本项目本着避免重复造轮子的原则,建立一套快速开发JavaWEB项目(asurplus-layui),能满足大部分后台管理系统基础开发功能,使得开发人员直接可从业务模块开始,减少大量的重复开发工作。前端框架使用 layui-mini ...

    了不起的轮子PPT课件.pptx

    综上所述,这个课件虽然简短,但足以引发我们对轮子这一简单却又至关重要的发明的深度思考。通过深入探讨轮子的科学原理、历史演变及其在各领域的应用,我们可以更好地理解和欣赏这个“了不起的轮子”带给我们的便利...

    SolidWorks小轮子

    本主题聚焦于使用SolidWorks设计的一款"小轮子",这款轮子是标准尺寸,配备了轴承,并且采用实心橡胶材料,适用于手推车等应用。 首先,我们来看看"roue_41-312-100b08.SLDPRT"这个文件。SLDPRT是SolidWorks的零件...

    百度地图毕业设计源码-WheelPlan:重新发明轮子来训练我们的代码技能

    造轮子的目的,不是去重复的发明轮子,而是实际的去动手制作轮子。把一些公认的算法,优秀的思想,用自己的方式表达一下,锻炼一下,让知识成为自己思想的一部分。而不总是去google去百度,xxx好还是zzz好,而是能够...

    了不起的轮子小班科学详细内容PPT课件.pptx

    【了不起的轮子——小班科学教学内容】 在幼儿教育阶段,科学启蒙是非常重要的一个环节,它能够激发孩子们对周围世界的探索兴趣,培养他们的观察力和思考能力。本课件“了不起的轮子”旨在让小班的孩子们了解轮子的...

    中班科学轮子PPT学习教案.pptx

    轮子是人类历史上的一项重大发明,极大地推动了交通运输和生产力的发展。在PPT的第一部分,讲述了原始人如何从滚动重物如圆木的过程中得到灵感,将滚木切割成轮子,从而减少了搬运的难度。这一创新体现了人类对工具...

    轮子哥安卓开发框架,非常好用

    轮子哥安卓开发框架,一个非常优秀的开源框架。 各项界面,对话框,全面的内存优化、布局优化、代码优化、瘦身优化。 项目中常见的代码进行了封装,或是封装到基类中、或是封装到工具类中、或者封装到框架中,不...

    幼儿园小班科学活动教案《轮子工程师》含反思.docx

    《轮子工程师》是一份针对幼儿园小班的科学活动教案,旨在通过有趣的方式引导幼儿认识轮子的特性和功能,并初步理解不同形状如圆形、三角形、正方形的特点及其在日常生活中的应用。活动的设计旨在激发孩子们的好奇心...

    重新发明轮子:这些是我遇到的一系列面试问题的集合,我被要求重新发明轮子

    在IT行业中,"重新发明轮子"通常是指在已有成熟解决方案的情况下,重新设计或实现一个功能,这在面试中常用来考察候选人的基础理解、问题解决能力以及编程思维。本篇将围绕Go语言,深入探讨可能出现在面试中的相关...

    小班语言轮子歌.pptx

    7. **重复记忆**:儿歌常以重复的形式出现,帮助孩子通过反复听和唱来加深记忆,提升记忆力。 然而,由于实际的课件内容未知,以上推测可能并不准确。如果需要更具体的知识点解析,建议提供详细的课件内容或更详细...

Global site tag (gtag.js) - Google Analytics