72. 经常重新造*

时间:2022-06-24 00:43:58

经常重新造*

        “用一些已有的东西就可以了,重新造*是很傻的...”

        你否曾经听说过这句话或者类似的说法?肯定的!每个开发人员和学生都可能经常听到这样的论调。然而为什么呢?为什么重新造*这么不被赞同?因为,通常情况下,已有代码是管用的。它已经经过了一定的质量控制、严格测试,而且成功应用了。此外,投入重新创造的时间和精力的回报不太可能比使用已有的产品和代码库更值得。你应该为重造*而费心吗?何故?何时?
        也许你已经读过了软件开发模式相关的刊物,或者软件设计的著作。不管里面包含的信息多么精彩,这些书籍都可能催人入睡。看一部航海的影片与真正去航海是完全不同的,同样,使用已有的代码与你自己重头设计软件、测试它、弄坏它、修复它并一直改进它也是完全不同的。
        重造*不只是编码练习,是如何从各种已存在的内部组件中获得丰富知识。你知道内存管理是如何工作的吗?虚拟分页法?可以自己实现这些吗?双向链表呢?动态数组类?ODBC客户端?你可以自己写一个类似某个自己熟悉又喜欢的图形用户界面吗?你能不能创建自己的浏览器小工具?你知道何时写一个时分利用系统,而何时写多线程系统吗?如何在文件数据库和内存数据库中选择?大多数程序员从来没有自己创建过这些软件实现的核心部件,因而也没有它们如何工作的详细知识。结果是所有这些软件都被看成像是能工作的神秘黑盒子。只了解水的表面不能发现下面的危险,不深入了解软件开发底层的东西会让你创建优秀作品的能力大大受限。
        重造*并在其中犯错比一开始就做对更有价值。在尝试和犯错的过程中取得的教训是有情绪成分的,这是阅读一本科技书籍无法取得的!

        学习到的知识和书本中的理论是很重要的,但要成为一名伟大的程序员,积累经验和学习知识同样重要。重造*对于程序员的教育和技能就如同举重对于健美的人来说一般重要。

原文:Reinvent the Wheel Often by Jason P Sage