开拓性地首次交付软件系统需要勇气和信念,尤其是在替换现有业务关键软件的项目上。 当我担任系统架构师时,我采用了许多技巧来构造功能和技术解决方案,以使我们能够在不夜不眠的情况下完成这些早期交付。 最重要的是找到可以与其余功能一起使用的功能子集,并投资建立新旧功能之间的桥梁。
下周四(4月27日),我在奥斯陆ARK体系结构会议的主题演讲中分享我的经验。 如果您愿意的话,仍有几张票可用。
在这篇博客文章中,我将逐步探讨替换业务关键软件的主题。
作为一名架构师,我并不总是很乐意看到我的项目一直到完成,但是在那些可以尽早地看到用户手中软件的项目中,我最喜欢的就是那些。
本文不是关于精简工作的交付团队以使每几个月发布一次到连续交付。 很多其他人都在谈论这个。 这是关于如何首次在未开发项目上及早投入生产。 我将用我最喜欢的两个项目来说明。
首次进入未开发项目的生产需要勇气和信念,尤其是当您要用新系统替换部分业务运营时。 项目涉众有很多理由等待,并且常常没有令人信服的理由尽早交付部分解决方案。 但是,当您第一次开始生产时,就像太阳终于升起了 。 项目中的优先级和讨论完全改变。 现在是真实的!
我要谈论的第一个项目是与挪威电力传输系统运营商Statnett合作。 我们花了4年的时间更换了处理挪威电网上所有电力储备容量的系统,但是在签订合同不到一年的时间内,用户开始使用我们的软件来控制电网。 没有任何不眠之夜。 实际上,他们认为这不是一件小事,以至于忘了通知开发团队!
我要谈的第二个项目是面向私营部门内部移动工作人员的应用程序。 由于这是我的客户竞争策略的一部分,因此我无法提及软件的用途,但可以描述技术。
移动劳动力应用程序特别有趣。 就像Statnett一样,我们正在替换现有的业务用途系统,并将其与其他业务功能集成在一起。 但是在这个项目中,我们与3个月后的第一批用户一起使用,大部分用户群都在半年后,其余的用户则在9个月后。
这是我们所做的:
- 意识到旅途会很漫长, 为缓解旅途而进行的临时投资通常是值得的。 在这两种情况下,我都确保新系统与新系统集成良好。 当您可以说:我为什么不尝试新系统,如果您遇到问题,您可以在旧系统中继续相同的过程,那么它可以降低每个人的压力水平。
- 隔离功能要小到可以交付的总项目费用的一小部分,却足以引起人们的关注。 就Statnett而言,我们能够替换旧系统中最常用的功能(同时保留撤退路线)。 尽管该功能仅占系统的一小部分,但仍占使用量的很大一部分。 在移动员工应用程序中,我们发现了旧系统中缺少的业务流程,并首先实施了该流程。 这个过程对客户来说很有趣,他们花了几个用户才执行此任务。
- 不要等待世界其他地区完成他们的工作。 我参与的所有项目都是更大的变革前景的一部分,其他项目仍在开发您的一些依赖项。 就移动员工应用而言,我们依赖于仍在开发中的系统所拥有的核心数据。 意识到我们的集成模型无论如何都将基于数据副本的同步,因此我们决定核心数据的副本将具有以下几种来源:1.由sysadmin导出的手动CSV文件,2.从旧版自动转储半年后我们建立的来源3.来自新系统的供稿(仍未完成)。
- 花费精力使您的系统更快地部署并且更易于监视 。 当您进行未开发项目时,实际上没有什么可以阻止您立即创建生产环境(只要您在硬化之前不将生产数据放在其中!)。 我从来不后悔花几个小时使部署新版本更容易或使日志记录更流畅。 当前,我在Slack上收到错误日志,其中包含可单击的堆栈跟踪以及指向遇到问题的用户的链接。
当您对建筑物进行大修时,您可能最终会花费大量的精力来设置脚手架,以确保工作安全有效。 在构建新的软件系统时,您应该做同样的事情!
如果这样做的话,您也许可以早日(而不是稍后)让用户使用新系统,而不会失去睡眠。
当您让真正的用户使用您的系统时,项目的主要问题将从“何时完成”变为“下一步我们可以做什么以交付价值”。 这更有趣。
翻译自: https://www.javacodegeeks.com/2017/04/deliver-early-without-sleepless-nights.html