在几乎所有开发团队的生活中,都有一段时间,我们自己的框架的创建从“我们到底该浪费时间什么呢?”的状态转变。 状态为“很酷的想法!”。 大约两个月前,我们有了一个这样的时刻,当我们开始将使用Siri的语音传输控制权强加给PSB Mobile的客户端移动应用程序PSB Mobile时。 我们分析了我们的经验,并在此基础上告诉您如何理解框架的时机已经到来。

“什么框架,您在说什么?”
以前,银行的iOS个人客户端是外包的。 然后决定从头开始自行重写所有内容。 我们用两周的冲刺构建了一个SCRUM过程,工作开始沸腾了-我们一直在积极寻找并添加新功能,芯片。 在主动搜索的这一阶段,很难预测什么会扎根,什么不会扎根。 计划所有40个步骤的步骤毫无意义。 没有人想到像通用性这样的多余装饰-创建您自己的框架,将部分代码分配到单独的库中以供重用。 这没有道理的可能性太高了。
WWDC连接了我们
为什么SCRUM很好-我们经常以客户身份联系企业。 同时,重要的变化开始发生。 我们开始更好地了解涉及该应用程序的银行的产品,业务任务,业务流程。 最重要的是,对于企业而言,它开始将应用程序开发视为一个过程,开始更好地了解我们的工作方式,开始同意我们存在重要任务,而这些任务的解决方案不会产生明显的瞬时影响。
它帮助我们与企业相处... WWDC会议。 我们的商业客户以某种方式观看了新的苹果机会的公告,并出于好奇而爬上了Apple Developer。 令人惊讶的是,事实证明那里的一切都比预期的要清晰得多。 从那时起,我们不仅参与业务任务,而且业务不再害怕技术:他们尝试自己阅读规格,深入了解问题,提供分析帮助并解决开发问题。 他们开始意识到,每两周等待产品明显增加是没有用的-毕竟有服务冲刺,而从那里没有具体的增长。 相互理解达到了这样的地步,我们同意为重构提供20%的冲刺时间。
自行车的演变
随着开发部门的增长,应用程序具有新功能的填充,同时处理不同任务的几个团队的出现,新的细微差别开始出现。 团队的一些子任务可能是相似的,并且立即希望不要重新发明轮子,而是首先要弄清楚是否有人有现成的代码。
通常,我们的开发人员不会抱怨代码,因此可以重复使用它-不仅可以在常规代码重用方法的框架内使用。 也许在我们这个阶段的头脑中已经出现了为共同利益将某些东西分离到单独的库中的想法。 但是在现有任务的框架内,不可能为这些过程找到时间。 它需要某种原因,很快业务就将它扔给了我们。
触发扩展
支持语音界面是一项任务-因此您可以通过Siri通过电话号码向银行的其他客户付款。 他说:“向这样的人转移这么多钱。” 如果此人是Promsvyazbank的客户,那么该人的卡就会出现在屏幕上,汇款金额,问题是“汇款?” 并提交按钮。 在某些银行应用程序中已经存在类似的功能,但我们希望做到这一点,以便一方面是安全的,另一方面,客户无需进入银行应用程序。

使用Siri涉及编写单独的扩展,当我们开始计划它时,我们意识到是时候开发我们自己的框架了。 在我们的应用程序项目中,实现了一个网络层,但出现了一个选择(实际上没有):再次编写该层或将其放在单独的容器中,该容器在主应用程序和单独的扩展中均可用。
在此过程中,出现了一个架构子任务,以在单独的框架中提取部分代码。 总共有四个:
- 网络(中间)层-这是有关网络,模型类和API服务的所有工作。 该层是完全自动生成的。
- 登入
- 实用程序-实用程序和助手
- 存储-安全存储
显然,这不是我们的专有技术。 因此,在这种情况下通常这样做,这是所有自重的开发人员的最佳实践。 但是重要的是我们如何做到这一点。 正是在这时,
三个关键标志合在一起创建了该框架:
- 我们已经开发了足够的代码库
- 企业开始了解我们(即,它)的架构需求。
- 合适的任务已经出现
新视野
意识到之后,一切都变得很简单。 在下一次开发人员会议上,我们讨论了详细信息,选择了将要参与主要重构
的负责人的
受害者,并分配了他的时间-这项任务的全部时间。 其余的开发人员几乎没有受到影响。 但是,当我们开始将网络层放入框架中时,想法立即出现,应该将哪些代码中其他经常使用的部分放入库中。 我们的建筑可能性突然扩大。 我们以额外的自由度开始生活。
但是我们使用它时没有狂热。 为了确定是否在单独的模块中编码代码,我们查看了积压的订单,并确定该模块是否将在多个地方重用。 如果没有,那就不要打扰。
我们看到使用我们的框架的好处了吗? 绝对可以。 现在,我们看到存储库中已经有新任务所需的代码的哪些部分。 新服务的开发速度更快,编程错误更少,最终服务的质量更高。
如果您需要iOS的新扩展,我们已经拥有必要的框架,您可以立即尝试。 至于已经使用Siri实现的服务,银行用户已经可以使用它一个多月了-现在我们正在收集评论,包括为了了解使用语音界面的方式和用途。
一点未来主义
Siri的故事使我们不仅考虑框架,还考虑一般的接口。 人类尚未学会以某种方式间接地衡量注意力的集中度。 例如,UX和UI越差,注意力的浪费就越大,转换漏斗在每个步骤中的缩小幅度就越大。 通过银行应用程序进行常规汇款需要用户执行一系列操作:打开应用程序,登录,在一个列表中搜索,在第二个列表中,输入收件人。 使用Siri,这是一个解锁功能以及语音命令。 授权通过Face ID在前台进行。 在某些情况下,您甚至都不需要将手机随身携带。 例如,当您驾车且手机安装在附近时,相机可以轻松识别您。
环顾四周:语音助手开始积极征服周围的空间。 Yandex智能扬声器周围的炒作,说话和理解命令的洗衣机,识别声音的电视遥控器。 语音界面所包围的用户越多,他们与银行应用程序进行通信的准备就越多。
在这种情况下,图形界面将失去它们的垄断地位,而从主要的通信方式来看,它们将简单地转变为对操作的视觉确认,从而成为一种信号,表明计算机正确地理解了您。
对于开发者来说,这样的改变原则上并不可怕。 通过正确的体系结构,该应用程序可以具有任意数量的界面:视觉,语音,神经。 最主要的是使用与当前团队成熟度相对应的方法。