开始新项目

为什么强大的基础比赶向市场更重要

在创建满足市场需求的全新应用程序时,很容易将其推向市场,而这是他们为争取到这一点而永无休止的努力。 作为软件开发人员,我主要负责编写将来易于适应的软件,而通过编写无法维护的代码而冲向市场则完全与该责任背道而驰。

可维护性

当然,冲向市场会带来暂时的好处,但对我而言,这只是暂时的,而收益却很小。 Google并不是市场上第一个搜索引擎,它们可以说是,现在仍然是最好的搜索引擎,这是一个更强大的优势。 只需快速浏览一下Wikipedia,我们就能看到征服世界的搜索引擎随着时间的流逝而大大改善,这更好地解释了为什么它们仍然是搜索引擎市场的王者。 首先到达那里并不是永久的魔术优势,而是暂时的利益。 能够以比竞争对手更快的速度不断改进产品,这对我而言确实将赢家和输家区分开了。 如何获得这一优势? 不是急于推向市场,而是从头开始以可持续的方式构建软件。

建立基础

在通过艰难的方式吸取了一些教训之后,我们决定从一开始就做所有增加可维护性的选项,它们不是可选的,而是强制性的。 为了向我们的客户提供最佳解决方案,我们需要为我们的产品奠定基础,使我们能够随着时间的推移轻松地适应不断变化的客户需求。 我们希望每次迭代都能提供比以前更好的软件解决方案,直到永远。 这需要一个可以随时间轻松更改产品的基础,这就是我们决定为最新项目构建的基础:房地产注册和iTax。 它们都是房地产市场中的解决方案,房地产市场经常变化并且变化很大。 为了描述我们是如何开始的,我们将重点介绍一些使我们能够可持续进入市场的要素:

  1. 质量检查:务实而有效地实现自动化
  2. 仅是最新技术,即使它要求团队适应新技术,但这些新技术会延迟我们进入市场
  3. 从一开始就进行持续集成,直到可以进行持续集成时才构建任何功能

显然,还需要更多的步骤并采取了更多的步骤,但是为了简洁起见,我们仅重点介绍一些步骤。

第一步:质量检查

即使没有要测试的东西,也没有功能,但这仍然是我们迈出的第一步。 粗略地说,这就是整个设置所包含的内容:

换句话说:它将连续不断地在不同级别上运行自动化测试,并测量和监控测试覆盖整个产品的程度。 为此,我们使用了几种技术,但主要是量角器,因果报应,安心保证和Junit进行了测试。 每个版本都运行所有测试,因此我们始终从一开始就就一切是否按预期工作获得足够的反馈。

仅最新技术

与其专注于团队已经了解并希望更快地交付的内容,我们专注于最适合我们对可维护性的长期承诺的技术。 我们决定大致使用以下堆栈:

尤其是在前端,这意味着要培训我们的人员,但要以一开始就快速行动为代价,但这对我们来说是非常值得的。

从一开始就不断整合

更改产品中的任何内容都应始终导致完整的构建,包括编译,静态代码分析和自动化测试:

从一开始就确保覆盖率很高,并尽快解决静态代码分析问题,这有助于我们不断提供出色的代码,从而又有助于我们交付出色的产品。 附带说明的是,此管道上还没有显示更多连续的集成部分(例如发布产品),但是图像准确地描述了该方法。

结论

矛盾的是,即使我们投入大量资金来建立一个强大的基础来构建该功能,比建立一个薄弱的基础要花费更多的时间,但我们仍然相信这将导致早日完成。 但是主要目标是拥有一个长期的优秀产品,这需要代码从一开始就立即可维护,而不是在以后。 这正是我们希望通过投入大量时间而不是建立任何功能而是建立坚实基础来实现的目标。