当前位置: 首页 > 科技观察

在家办公后,技术人员如何在线上发展?

时间:2023-03-16 13:48:48 科技观察

阿里妹导读:响应国家号召,各家“大厂”纷纷发布居家办公、延迟上班通知,“在线协同办公”一时间成为热议话题。与大型集团公司有足够的财力和能力建设远程办公系统不同,中小企业既缺乏足够的预算,也缺乏相应的经验。阿里云云霄一直致力于成为数字化企业的研发效率引擎。在这个特殊时期,我们希望把我们的经验和工具分享给中小企业,让他们在家也能安全、高效地开发软件。为此,我们特地请来了阿里巴巴资深技术专家张燎原,为大家详细讲解“在线协同开发”的要点。在线研发协作的基础是高可见度和快速连接。为应对互联网业务的复杂性和不确定性,现代软件开发逐渐向客户导向、小团队(个人)作战能力、快速环节生产要素转变,持续、快速、高质量地交付有效价值。分工越来越细,整个软件生产过程就是一个分而治之解决问题,然后不断集成发布的过程。采用这种软件开发方式,谁的灵活性、响应性、协作性更高,谁就能在竞争中取得领先。互联网技术让互联变得异常简单。通信技术的发展极大地促进了互联网的应用。即时通讯工具也超越了聊天功能。钉钉项目群、钉钉视频通话、钉钉视频会议、各种OA应用在其平台上演进,实现快速连接。协作的基础之一是连接,从人与人的连接到人与物的连接,快速实现在线组织、在线交流、在线协作。生产工具的发展显着提高了软件生产过程的可见性。在线研发过程使软件工程的可见性达到了前所未有的新高度。生产工具的进步,让生产过程毫无秘密可言,隐藏的工作也逐渐显化。协作的基础是信息共享和生产过程的可见性。在著名的Scrum开发框架中,透明度被列为三大支柱之首。注意:Scrum的三大支柱是:透明度、检查和适应。软件架构和部署方式的演进有利于分工协作。根据康威定律:设计系统的体系结构受产生这些设计的组织的通信结构支配。那么反过来,系统设计的体系结构也会对软件的通信结构和集成方式产生影响。同时,在云开发、中间件、中台战略的大环境下,业务层更加注重业务创新,分工越来越细。部署架构的演进还允许系统的各个部分独立和连续部署。小团队或单兵的价值在不断增加,团队与人的联系也逐渐从传统的树状方式向网络状方式演进。协同就是在这样的网络环境下,可以明确的识别出需要连接的生产需求,然后在线上快速协同。对于以知识为基础的经济活动而言,高可见度和快速连接能力意味着灵活协作的可能性,而在线是这一切的基础。在线为人们提供了随时随地快速聚集、组织和协作的机会,让SOHO远程工作成为可能。在线是数字协作的基础,为未来智能的演进创造了可能的条件。这是现代软件研发方法的演化趋势。接下来,我们将从“研发协同”、“代码协同”、“发布协同”三个方面来讲解如何在线协同,让不同地域、不同时区的人们快速连接起来,真正进入数字化研发时代。在线项目协作需要协作,从端到端价值流的拉通和可视化可以看出,这是协作的基础。通过电子看板,需求是流动单位,端到端的可视化价值流动,流动效率是需求交付的核心组织。可视化端到端的价值流一定是:价值驱动,即每个流单元都反映反映用户价值的业务需求;来回,即可视化的目标是“端到端”的价值流转,从用户提出问题开始,最后解决用户的问题。我们可以用以下三个标准来检验可视化的效果,即:是否能反映端到端的交付流程,是否能立即反映出影响价值流动的瓶颈和问题,是否能协作并根据可视化信息做出决策。从协作到软件发布的整个环节,代码提交和发布信息也可以实时反映在需求卡片上,集中及时同步工作状态,减少沟通的基础套路,让项目管理的目标更加专注价值交付和问题解决。管理价值流转,构建价值回馈闭环,让交付更可控。软件交付的关键是客户价值的流动,组织壁垒、沟通延迟、协作阻塞是主要障碍。基于端到端的可视化价值流看板、产品需求排程,或者团队每日站会的任务分配,围绕需求看板组织日常项目协作。从右到左检查需求交付状态,从测试工程师、开发工程师到产品经理,跨职能协作。同时,将需求的任何风险和问题突出显示在看板上,并通过钉钉等即时通讯工具快速反馈给负责人,做到即时发现、即时响应、及时解决问题。问题的快速链接。从需求计划、需求调度、每日站会、需求评审形成完整的价值反馈闭环。从整体投放节奏上,形成月计划、周调度、日立会的节奏。而这一切都可以通过在线电子看板来完成。限制在线产品数量,加速业务需求的交付。影响需求(价值)流效率的关键是批量和并行。通过限制在制品数量(我们称之为“挤沙”),加快需求交付。同时,数字化协同有利于研发过程中性能数据的沉淀,建立性能提升的基线和愿景,针对客户响应周期和质量提升,驱动问题发现和解决,为持续改进奠定基础.在线代码协作代码协作是集体代码所有权(CollectiveCodeOwnership)团队成员共同对代码负责。基于Git分布式版本控制系统,实现了基本的代码托管管理能力。在目前代码协作的概念中,分支是协作的载体。全球开发者可以根据产品需求建立不同分支,同时开发。合适的分支模式可以让分散的工作快速整合并进行版本追溯。每个代码库的readme信息详细介绍了代码设计,建立了基本的代码质量管理标准(如单元测试和自动化增量代码静态扫描),并确保持续增量代码不会影响现有功能,使协作成为可能。提高代码可见性,助力代码协同无论从简单的复杂度、重复分析、依赖分析,到领域语言识别、安全敏感信息识别等,阿里巴巴代码协议等工具都大大提高了代码的可见性,因此,程序员已经可以掌握来自大量代码的关键信息。同时,借助云端IDE和云端分布式代码托管工具,有效推动社交编程。无论是结对编程还是代码审查,将代码本身和编码过程明确化可以:促进团队内部的知识共享,提高团队整体水平,保证团队统一规范,没有“天上掉馅饼”代码;同时,工具的早期干预可以将潜在缺陷发现率提高30%;透明的代码,多人讨论可以促进积极的鼓励,积极的思考和追求卓越。代码安全代码在线协作、代码共享、重用文化的建立,都依赖于代码平台复杂的权限控制体系。这是一把双刃剑。越开放意味着代码泄露的风险越大,但越封闭意味着协同效率低下。为了让开发者更好地享受代码协作带来的红利,需要注意以下几个方面:代码中的敏感信息:如数据库密码,如果故意泄露,将对公司业务造成致命打击或无意中。访问权限控制:常见的有访问IP控制、离职权限恢复、代码库可见范围设置等。异常行为风险识别:具备事后审计预警能力,如对大量下载代码的异常行为进行检测预警。代码协作是对技术卓越的追求,是培养软件工匠精神的契机。借助先进的代码协作工具和技术手段,提升代码和编码过程的可见性,同时让每一位程序员都能自信地提交每一行代码。在线发布协作现代企业级软件的交付过程往往是多人多角色协作,跨多个系统进行交互。同时,为确保可靠交付,交付过程往往复杂且难以完全标准化。而阿里巴巴之所以能够紧跟市场变化,快速编写出高质量的软件,是得益于多年来积累的一整套DevOps方法论和产品,确保软件交付过程在线高效可靠。从流程标准、流程改进,到建立在线发布协同,在线发布协同需要基于同一个交付流水线。首先,要拉通软件集成和发布的完整流程。打通从变更到交付的完整体系;将流程工具化,通过工具连接整个集成交付流程;同时,明确流程中各阶段的进出标准,下游活动以上游产出质量为准。其次,按流程建立质量保障体系,实现每一道工序的自动化。三是建立反馈机制,做到问题准确定位、第一响应、快速修复。建立相应的测量反馈机制也可以不断优化流程和程序。真正的在线发布协同,应该满足流程工具化、无人化部署、测试自动化、数字化反馈等需求。特性分支驱动多人多角色在线协作为了实现多人研发不间断,代码功能可以自由可靠的组合交付,阿里巴巴积累了一套基于特性变更的AoneFlow代码分支管理方法,usingCI/CDpipelines完整涵盖了从构建、测试到部署的整个持续交付流程。可以通过消息、邮件、钉钉机器人等方式通知和追溯流程中的每一个步骤和任务的信息,实现研发、测试、运维、管道等角色在线协同、异步工作。用云原生技术打破开发和运维的边界,过去一年以Kubernetes、Serverless、ServiceMesh、CloudIDE为代表的一批云原生技术让人印象深刻。这套开箱即用的开源软件可以让中小型企业快速获得以往只有各大互联网公司才有的成熟的软件交付能力,比如复杂的流量管理能力、灰度发布能力、A/B测试能力,以及多环境管理能力,基础设施一键拉起,快速扩缩容能力等。但是,企业在采用新技术的同时,也面临着诸多挑战,比如开放的复杂构建过程源软件、黑屏交互设计、研发管理手段缺失、企业权限管理能力缺失。阿里巴巴也积极将CI/CD工具、测试环境管理方式、应用运维理念、DevOps协同方法论与云原生技术相结合,为开发者提供开箱即用的新技术解决方案。利用“云效应”轻松实现一站式在线研发协同。工欲善其事,必先利其器。CloudEffect可以提供端到端的端到端在线协作服务和研发工具,让您轻松实现一站式研发协作。我们可以利用云效应,这样完成一天的工作:晨会,团队根据精益看板,对接需求和任务,完成任务分配;发展学生根据特点发展,创造变化的分支;通过离线或云开发环境进行编程工作,然后提交代码;代码自动触发自动扫码,发送给指定的代码审核人员进行审核;完成审核的代码自动触发集成发布流水线,自动完成构建,生成Docker镜像,并分别在开发环境、集成环境和预发布环境部署并完成相应的验证工作;验证完成后进入待发布状态,触发在线审核流程,运维在线完成审核发布;过程中的任何问题都会通过钉钉传递,遵循没有消息就是好消息的原则,及时反馈给指定负责人,做到反馈准确、反应及时、恢复迅速。尽量避免垃圾反馈,过多的噪音会降低协作效率。我们希望将云霄多年来积累的实际研发经验和先进工具分享出来,让小企业在家也能快速开发出大智慧软件。关于云霄:云霄,企业级一站式DevOps解决方案,源自阿里巴巴先进的管理理念和工程实践,致力于成为数字化企业的研发绩效引擎!云霄提供从“需求->开发->测试”->发布->运维->运营”端到端的在线协同服务和研发工具,通过人工智能和云原生技术的应用,帮助开发者改进研发效率,持续快速交付有效价值。