代码重用成为问题
我一直在思考有关软件交付的问题,并且我一直回到可重复性和/或可再现性的问题。它们很重要,因为如果您不重复一个项目,那么改善用于构建项目的流程就变得更加困难。工程涉及不断改进与设计和施工有关的过程,以产生更高质量的项目。
由于其数字形式,软件可能严重依赖于重用。无需重写模块,我们只需再次调用它或将其复制到另一个系统即可。一些示例是身份验证/登录或登录功能。这些类别有许多众所周知的示例,并且传统的智慧是重用现有内容而不是自己动手做。
与其他学科的一些比较
施工
相反,物理系统(建筑物,桥梁)的构建远没有可重用的范围。确实,房屋的蓝图可以重复使用多次以建造房屋的相同副本,但是必须每次都执行建造。剪切和粘贴在模拟世界中不像以前那样工作。桥梁的蓝图比房屋的可重复使用性差,因为场地条件会有所不同。
大师级建筑商是公认的专家,他们在他们所在的地区设计和/或建造了数十,数百或数千个事物。例如,世界著名的建筑师兼设计师Frank Lloyd Wrightdesigned more than 1,000 structures and completed 532 works
。与设计了“仅”五种语言(Turbo Pascal,Delphi,J ++,C#,Typescript)的Anders Hejlsberg形成对比。在很多方面,这是不公平的比较,因为域是不同的。但是从广义上讲,两个非常有才华的人的可量化生产差异很大。
武术
武术家会说,对动作的精通仅来自数千次重复。在完成大部分重复之后,许多武术家对于以前被认为是复杂的kata或形式变得如此简单感到惊讶。这些学生的讲师还将注意到运动如何变得更加流畅和有目的性,以及运动的经济性。同样,与没有经验的学生相比,经验丰富的武术家能够更快地拾起更复杂的kata。重复的经验为他们提供了一个框架或过程,使他们可以更快地学习。
木工
木工经历了类似的转变。业余爱好者木工总是回想起他们的第一个需要大量抽屉的项目。如果他们完成了该项目,他们将对装配线产生的效率重新获得赞赏。还有其他好处,例如更好地了解如何在单张纸料上放置抽屉部件,以最大程度地利用木材。与业余爱好者相比,专业的木工可以更快地设计,开始和建造他们以前多次制作的物品。他们还具有查看他人设计中固有错误的能力,而这些错误是他们工作中的错误。
那么,软件重用会阻止软件开发人员变得更加熟练吗?
在许多方面,软件设计和构建始终是新的。我们不会重复过去的工作,因为如果我们可以重用模块,库或系统,那么我们会做。在从头开始重写整个内容之前,我们将优先扩展现有系统。但是重复是使我们能够发现设计和构造效率的原因。任何进行过体育锻炼或体育锻炼的人都会告诉你,重复锻炼是成为一名优秀练习者的关键。
我的问题:软件的重用能力是否会阻止重复项目带来必要的流程改进和效率?