jjzjj

业务与研发一体化最佳突破口在何处?

lydia77 2023-03-28 原文

近年来,一方面业务应用的开发逐渐走向简化,企业更加注重业务应用实质的提效性。另一方面,各企业的研发效能也在逐步提升。而这两者也促进了研发一体化管理、业务模版化等软件(平台)的发展。


从前端业务应用开发层面,我们见证了众多解决前端开发效能的软件工具或平台的诞生:

  1. 解决营销活动快速上线的业务效率问题--HTML5营销模版工具,如易企秀

  2. 解决前端页面从设计稿到前端CSS代码层面的转换效率问题,如Code.FUN

  3. 解决小程序页面开发过程中的组件复用问题--微信小程序组件,图鸟UI组件

  4. 解决前端复杂图表的开发问题,如:uCharts插件


另外,前端业务应用开发偏底层一些的,就是遍地开发的低代码或零代码平台,如:腾讯云微搭,百度爱速搭等。以上这些工具(平台),都在进一步降低开发者的应用开发门槛,加速业务应用的研发-上线周期。


再看看后端,随着mongoDB等后端服务编排,容器技术的出现,许多可视化的服务端管理工具应需而生,这些工具平台的出现,是为了解决降低后端开发门槛,进而加速业务上线周期的效果。


研发流程中,前后端的开发只是研发流程的一部分,就好比瓷器的销售,前后端开发好比完成了瓷器的0.1阶段,后续还会有测试及上线管理流程,再往前置扩展一下,应用研发前还会有产品需求提炼,原型设计,高保真设计等步骤。于是乎,所谓的”研发效能管理平台“便出现了,如:PingCode,Ones等。

 

工具太多,效率反而不升反降?


好比一个家,有一两件能够便利生活的家具,例如床、桌子、椅子,或者一些必需的白色家电(冰箱、洗衣机、电饭锅等),的确可以极大提高生活的便利性。但如果东西一多,在做每件事情的时候,可能都会下意识的想到是否需要用一些买回来没啥用的工具,人会犹豫不决,产生或多或少的内耗。


企业是由人组成的,在软件开发过程中工具的使用也是类似情况,如果有太多的,解决不同场景问题的工具叠加,先不说每款工具给到员工使用前就有培训及学习的成本,每个工具都有可视化的管理后台,登录账号和权限需要重新配置,业务配置流程配置一遍,然后基于软件的使用,可能现有丝滑无比的工作流还需要进行微调.....这是多么痛苦的一件事情,同时企业人员精力也耗费在毫无意义的软件应用上。

小程序技术的发展,给研发领域带来了许多想象空间


技术层面,从Web 1.0进化到2.0之后的十几年间,移动App都是各大软件提供商用于争夺消费者碎片化时间的主战场。HTML5这种标准化的、普适的文本化内容编码格式,被广泛应用,并最终成为了互联网的基石之一。Web2.0向3.0的进化过程中,软件技术标准的扩展,小程序类技术的编码和内容格式,整体基于HTML5基础上,更加轻量,也更加开放有生命力。


从标准的角度看,当前互联网上的小程序类技术,几乎都借鉴了这个领域的先行者微信的规范。可以说,微信小程序就是这个领域的“既成事实”标准。故此互联网系列全球标准的制定者W3C,也正在通过其Mini-Apps工作组制定国际标准。


业务生态层面,从2017年微信首次推出小程序开始,经过四年发展,各大互联网巨头纷纷推出自己的小程序应用平台,小程序成为真正意义上的“互联网新技术标准”。截至2021年上半年,全网小程序数量突破700万个,其中,微信小程序是行业主流,数量超过430万个,占比高达约61.43%。
既有技术生态及周边硬软件的支持,又有业务生态的蓬勃发展。正所谓”分久必合“,是否研发管理工具不再”精神分裂“式的发展,而是兼顾业务和研发属性,提供真正意义上的业务-研发一体化管理平台?

”新型“业务-研发协同武器


这里的”新型“并不是说真的要颠覆市场技术的创新,而是工具管理平台能够考虑到业务-研发在同一个平台,对于真实上线业务的协同管理。


最近试用了FinClip小程序管理平台,发现它已经有类似概念的雏形:
降低应用开发成本从研发侧来看,它提供的FIDE调试工具,能够将企业已研发好的小程序,上传进行线上调试及编译,一站式的管理业务需要的小程序。与此同时,IDE工具中会有一些预设的插件,供开发时便捷启用,或者动过自定义API自行研发,以更好的调用App自身的能力。这一点来看,作为混合App的解耦式开发,时非常好的开发管理平台:开发一次,运行至多社交平台及App,甚至不同屏幕尺寸、不同场景的多终端设备。


提高业务管理效率从业务侧来看,它提供的小程序管理后台,能够对已有小程序(不管是自研的还是第三方的)进行便捷的上下架及应用端侧关联,满足业务人员在实际的运营当中,什么业务需要出现在什么合作的App中,以进行业务投放的个性化控制。与此同时,其灰度发布的功能,便是在人群控制方面,进行业务营销的人群个性化投放,保证营销颗粒度的精细程度。

写在最后


兼顾研发及业务协作,又能够关注生态连接的工具,似乎在市面上还没有见到接近完美的产品。当然,万物皆在不断的进化,没有最好,只有更好。希望能够在不久的将来,能够看到更多能够兼顾研发及商业运作流程一体化的管理平台。这种兼顾多角色运作的管理后台,初衷一定是以”连接“,”开放“为主基调进行产品功能的设计及能力的拓展,在加以时间及市场的扶持下,相信会被挖掘出更大的市场价值和业务价值。

有关业务与研发一体化最佳突破口在何处?的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. ruby-on-rails - Enumerator.new 如何处理已通过的 block ? - 2

    我在理解Enumerator.new方法的工作原理时遇到了一些困难。假设文档中的示例:fib=Enumerator.newdo|y|a=b=1loopdoy[1,1,2,3,5,8,13,21,34,55]循环中断条件在哪里,它如何知道循环应该迭代多少次(因为它没有任何明确的中断条件并且看起来像无限循环)? 最佳答案 Enumerator使用Fibers在内部。您的示例等效于:require'fiber'fiber=Fiber.newdoa=b=1loopdoFiber.yieldaa,b=b,a+bendend10.times.m

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  6. ruby-on-rails - Rails 中同一个类的多个关联的最佳实践? - 2

    我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来

  7. ruby-on-rails - 向 Rails 3 添加 Ruby 扩展方法的最佳实践? - 2

    我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion

  8. Ruby - 如何处理子类意外覆盖父类(super class)私有(private)字段的问题? - 2

    假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案

  9. ruby - 最佳原则中的原则 - 2

    我似乎经常遇到一些设计问题,但我不知道是什么是真的很合适。一方面我经常听到我应该限制耦合和坚持单一职责,但当我这样做时,我常常发现它很困难到在需要时将信息获取到程序的一部分。为了例如,classSingerdefinitialize(name)@name=nameendattr:nameend那么Song应该是:classSongdefnew(singer)@singer=singerendend或classSongdefnew(singer_name)@singer_name=singer_nameendend后者耦合性小,按道理应该用。但如果我以后发现宋有什么需要了解更多歌手,我的

  10. ruby-on-rails - 与 ActiveMerchant 一起使用的最佳支付网关是什么? - 2

    我需要使用ActiveMerchant库在我们的一个Rails应用程序中设置支付解决方案。尽管这个问题非常主观,但人们对主要网关(BrainTree、Authorize.net等)的体验如何?它必须:处理定期付款。有能力记入个人帐户。能够取消付款。有办法存储用户的付款详细信息(例如Authotize.netsCIM)。干杯 最佳答案 ActiveMerchant很棒,但在过去一年左右的时间里,我在使用它时发现了一些问题。首先,虽然某些网关可能会得到“支持”——但并非所有功能都包含在内。查看功能矩阵以确保完全支持您选择的网关-http

随机推荐