1.代码维护
有一个古老的幽默文章已经在线传播了多年,标题为“如果架构师必须像程序员一样工作”。它写得好像是一个想要架构师建造房子的故事。这是一个摘录:
“请设计并建造一所房子。我不确定我需要什么,你应该自行决定。我的房子应该在两间和四十五间卧室之间。只需确保卧室计划是可以轻松添加或删除。当你把蓝图带来时,我会做出我想要的最终决定。我还带来了每个配置的成本,所以我可以任意选择一个。“
这是幽默的,因为它听起来像程序员所获得的软件要求的方式。由于软件可以在创建之后进行修改,所以雇主假定它很容易做到这一点,而且它们不需要具体对他们想要的东西特定。
通过创建越来越多的抽象,软件开发领域的人们在多年来一直努力容纳这一点,以便更容易更改,组合,升级或交换软件。
雇主想要这一点,因为它使他们能够在经济实惠的时间表上获取软件,而无需强迫雇主编写他们可能在预先知道的详细规范。
程序员希望这是因为他们想要仍然雇用。
2.代码可重用性
在不增加计划的情况下提高代码质量的好方法是编写更少的定制代码,而是在项目之前使用更多已编写和测试的代码。我们调用这些库,框架,模板或代码生成器。
您可能已经使用了乐高玩具,您可以使用简单可重复使用的砖块或其他特种碎片来构建精心制作的模型。您可以使用足够的砖块构建任何东西。还有一些专业的形状,以及大量的指南,向您展示如何将它们组合以构建所需的模型。
它是代码重用性的类似概念。软件开发随后成为学习所有不同碎片的活动和使用它们的方法。
代码是因为抽象而重复使用。就像使用标准尺寸和连接按钮的乐高碎片,这样它们就可以固定在其他件上。
3.功能,功能,功能
我曾经为一位非常挑战的经理制定了一个应用程序。每次我问他,“你想要这个应用程序这样做或那种方式吗?”我经常询问两个互斥的替代品。例如,您是否希望报告以行或列中的数据排列数据类别?
他总是回答“两者”。他不知道如何选择,他害怕做出错误的选择。所以他让我能够实现两个替代方案,并使软件可配置。他想保留自己的选择,以便尽可能多地改变主意。
这至少加倍努力实现代码,并将测试所需的测试加倍,以确保其工作。
但是,每当他说的时候,这一切都更糟糕了,这一倍的测试用例的数量翻了一番,因为我不得不确保一个新的功能与过去特征的每个替代品的组合合作。
当雇主想要一些功能时,程序员不能说“不”。他们可以说,“好的,但这就是它的时间和金钱的成本,你还想要吗?”