19

不得不在家办公后,技术人如何在线研发?

 4 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA%3D%3D&%3Bmid=2247493749&%3Bidx=1&%3Bsn=3c8abb7c437a009578443df117bb10ac
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

yiINneR.jpg!web

阿里妹导读 为响应国家号召,各“大厂”纷纷发出在家办公,延迟上班的通知,一时间“在线协同办公”成为热点。不同于大型集团公司,有足够财力和能力构建远程办公系统,中小企业既缺乏足够的预算又缺乏相应的经验。阿里云云效一直致力于成为数字企业的研发效能引擎,在这个特殊时期,我们希望可以将自己的经验和工具分享给中小企业,让他们在家也能安全高效地开发软件。 因此我们特别邀请了阿里巴巴高级技术专家张燎原,详解“在线协同开发”的要诀。

在线研发协同的基础是高可见性及快速连接

为了应对互联网业务的复杂性和不确定性的特点,现代软件开发,逐步过渡到以客户导向, 小团队(单兵)作战能力,快速链接生产要素,持续快速高质量地交付有效价值的方式 分工越来越细,整个软件生产的过程,就是分而治之地解决问题,然后持续地集成发布的过程。

这种软件开发方式,谁拥有更高的机动灵活响应能力,和更高的协同性,谁就能在竞争中抢占先机。

互联网技术让互联互通变得异常简单。 通信技术的发展,对互联网应用起到了极大的促进作用。 即时通信工具,也已经超越了聊天的功能,钉钉项目群、钉钉视频通话、钉钉视频会议,再到其平台演化出来各种OA应用,助力快速连接。

协同的基础之一就是连接,从人之间的连接,到人与物之间的连接,快速实现组织在线、沟通在线和协同在线。

生产工具的发展,显著提升了软件生产过程的可见性。 研发过程的在线化,让软件工程的可见性到了前所未有的新高度。 生产工具的进步,已经让生产过程没有任何秘密可言,隐性的工作逐渐显性化。 而协同的基础,就是信息的共享,生产过程的可见性。 为人们所熟知的Scrum开发框架中,将透明性(Transparency)列为三大支柱之首。

注:Scrum三大支柱分别是:透明(Transparency),检视(Inspection)和适应(Adaption)。

软件架构与部署方式的演进,有利于分工协同。 根据康威定律: 设计系统的架构受制于产生这些设计的组织的沟通结构。 那么,反过来,系统设计的架构,也反作用于沟通结构及软件的集成方式。 同时,在云开发、中间件、中台化策略的大环境下,业务层更多关注在业务创新上,分工变得越来越细。

aInqYrn.png!web

部署架构的演进,也让系统中的局部,可以独立持续部署。 小团队,或单兵的价值体现越来越大,而团队与团队之间,人与人之间的连接,也从传统树状的方式,逐渐往网状的方向演进。 协同,就是在这样的网状环境里,能够清晰地识别出需要连接的生产要求,然后快速在线协同。

对于知识经济活动, 高可见性,快速连接能力意味着灵活协作的可能 ,而在线化是这一切的基础,在线化让人们有机会在任何时候任何地方,快速集结、组织协作,让SOHO这样的远程办公方式成为可能。

在线化,是数字化协作的基础,为未来智能化的演进创造了可能的条件,这是现代化软件研发手段演进的趋势。

下面,我们将从 “研发协同”, “代码协同”及“发布协同” 三个方面,阐述如何在线协同,身处不同地域,不同时区的你我他,能够快速连接起来,真正进入到数字化研发时代。

在线项目协同

需求协作,从拉通和可视化端到端的价值流动开始

可见,是协作的基础。通过电子看板,以需求为流动单元,端到端可视化价值流,以流动效率为核心组织需求交付。可视化端到端价值流必须做到: 价值驱动 ,即每一个流动单元体现的都是体现用户价值的业务需求; 前后拉通 ,即可视化的目标是“端到端”的价值流, 始于用户问题的提出,终于用户问题的解决。

faiA73Z.jpg!web

我们可以通过以下三个标准来检验可视化的效果,即:

  • 是否能反映端到端的交付过程

  • 是否能即时体现影响价值流动的瓶颈和问题

  • 是否能依据可视化的信息进行协作和做决定

同时,打通从项目协作到软件发布的全链路,代码提交和发布信息同样可以即时反映到需求卡片上,集中及时的工作状态同步,减少沟通基本靠吼的套路,使得项目管理的目标更关注在价值交付和问题解决上。

管理价值流动,构建价值反馈闭环,让交付更可控

软件交付的关键,是客户价值的流动,而组织壁垒、沟通延迟、协作阻塞是主要障碍。基于端到端可视化的价值流看板,产品需求排期,还是团队每日站会的任务指派,围绕需求看板,来组织日常的项目协作。自右往左检视需求的交付状态,从测试工程师、开发工程师到产品经理,跨职能协同。同时,需求的任何风险及问题,高亮显性地展示在看板上,以钉钉等即时通信工具,快速反馈到责任人,做到即时发现、即时响应,就问题快速链接集结。

形成从需求规划、需求排期、每日站会,再到需求复盘的完整价值反馈闭环。从整体交付节奏上,形成月规划、周排期、日站会的节奏。而这一切,完全可以通过在线化的电子看板进行。

Nzuau2E.jpg!web

限制在线品数量,加速业务需求交付

影响需求(价值)流动效率的关键是批量和并行,通过限制在制品数量(我们称之为束水攻沙),加速需求交付。同时,数字化协作,有利于研发过程中,效能数据的沉淀,建立效能改进的基线和愿景目标,以客户响应周期和质量提升为目标,驱动问题的发现和解决,建立持续改进的基础。

在线代码协同

代码协作是代码集体所有制(Collective Code Ownership)

团队成员共同为代码负责 。基于Git分布式版本控制系统,实现了基本的代码托管理能力。在当前的代码协作概念中,分支即是协作的载体,世界各地的开发者们可以根据产品需求,建立不同分支,同时开发。恰当的分支模式,让分散的工作,快速集成在一起,并在版本上可追溯。每个代码库的readme信息详细说明代码设计,建立基本的代码质量管理标准(如单元测试和自动化的增量代码静态扫描),保证持续增量代码不会影响到已有功能,让协作成为可能。

提升代码的可见性,助力代码协作

无论从简单的复杂度、重复度分析、依赖分析,再到领域语言识别,安全敏感信息识别等,像阿里巴巴代码规约等工具,极大提升了代码的可见性,程序员们已经完全可以从大量的代码中,抓住关键信息。

n6rUruI.jpg!web

同时,借助云端IDE、云端分布式代码托管工具,有效地促进社交化编程,无论是结对编程,还是代码评审,让代码本身及编码过程显性化,可以:

  • 促进团队内部知识共享,提高团队整体水平,确保团队统一规范,不出现“天书”代码;

  • 同时,工具的早期介入潜在缺陷发现率可以提升30%;

  • 透明的代码,多人的讨论可以促进正向鼓励,主动思考和追求卓越。

代码安全

代码在线化协同,代码共享、复用文化的建立都依赖于代码平台复杂的权限控制体系,这是一把双刃剑,越开放意味着代码泄露的风险越大,但是越封闭意味着协同效率低下。为了让开发者可以更好地享受代码协作带来的红利,需要重点注意以下几个方面:

  • 代码中的敏感信息:比如数据库密码,被有意或无意泄露后会导致公司业务出现致命打击。

  • 访问权限控制:常见的有访问IP控制,离职权限回收,代码库可见范围设置等。

  • 异常行为风险识别:拥有事后审计,事前预警的能力,比如大量下载代码异常行为检测和预警。

代码协作是技术卓越的追求,是培养软件匠艺精神的机会,借助先进的代码协作工具及技术手段,促进代码及编码过程的可见性,同时,让每一位程序员能够有信心地提交每一行代码。

在线发布协同

现代化企业级软件交付过程常常是多人多角色协作,跨越多个系统交互,同时为了保障交付可靠,交付流程往往也是复杂和难以完全标准化。而阿里巴巴为什么能紧跟市场变化,快速写出高质量软件,这得益于多年沉淀出的一套完整DevOps方法论和产品,确保软件交付过程在线高效可靠。

从流程标准,工序改进,建立在线发布协作

6V7ZfeV.png!web

在线发布协同,需要基于同一个交付流水线进行,首先,需要拉通软件集成发布的完整流程。打通从变更到交付的完整系统;将流程工具化,通过工具串起整个集成交付过程;同时,明确流程中各阶段的准入准出标准,下游活动基于上游产出质量。其次,按工序建立质量守护系统,并使每一道工序自动化。再次,建立反馈机制,有问题能够精准定位,即时响应,快速修复。建立相应的度量反馈机制,还能对流程和工序进行持续优化。

真正的在线发布协同,应该是满足:流程工具化、部署无人化、测试自动化、反馈数字化的要求。

特性分支驱动多人多角色在线协作

为了实现多人研发不打扰,代码功能可以自由可靠组合交付,阿里巴巴生产经验积累出一套AoneFlow代码分支管理方法,以特性变更为单元,使用CI/CD 流水线完整的覆盖了从构建、测试到部署整个持续交付过程,过程中的每一个步骤和任务的信息都可以通过消息、邮件、钉钉机器人等告知和追溯,使研发、测试、运维、配管等角色能在线协同,异步工作。

用云原生技术打破开发与运维的边界

以Kubernetes、Serverless、Service Mesh、Cloud IDE为代表的多项云原生技术在过去一年让人印像深刻。这套开箱即用的开源软件,让中小公司快速的获得了以往互联网大厂才有的精项软件交付能力,比如复杂的流量治理能力,灰度发布能力,A/B测试能力,多环境管理能力,基础设施一键拉起,快速扩缩容能力等等。但在企业采纳新技术的同时,也面临着诸多挑战,比如开源软件复杂的搭建过程,黑屏化的交互设计,缺乏研发管理方法,缺乏企业权限管理能力等。阿里巴巴也在积极将CI/CD工具、测试环境管理方法、应用运维理念、DevOps协同方法论等与云原生技术融合贯通,为开发者提供开箱即用的新技术解决方案。

使用“云效”轻松实现一站式在线研发协同

工欲善其事必先利其器,云效可以提供从“需求 ->开发->测试->发布->运维->运营”端到端的在线协同服务和研发工具,让你轻松实现一站式研发协同。

7VjmmaQ.jpg!web

我们可以这样使用云效来完成一天的工作:

  • 晨会上团队基于精益看板进行需求、任务对齐,完成任务指派;

  • 开发同学根据特性开发,创建变更分支;

  • 通过线下或云端开发环境进行编程工作,然后提交代码;

  • 代码自动触发自动的代码扫描,并发送给指定的代码评审员进行评审;

  • 完成评审的代码自动触发集成发布流水线,自动化的完成构建,生成Docker镜像,分别在开发环境、集成环境及预发环境进行部署,完成相应的验证工作; 验证完之后处于待发布状态,触发上线审核流程,运维完成审核发布上线;

  • 过程中任何问题通过钉钉,遵循no news is good news的原则,及时反馈到指定负责人,做到准确反馈、即时响应,快速恢复。 尽量避免垃圾短信式反馈,过多的噪音,反而会降低协作的效率。

我们希望将云效多年积累的研发实战经验和先进的工具分享出来,让小企业,具备大智慧,快速开展在家研发软件工作。

关于云效: 云效,企业级一站式DevOps解决方案,源于阿里巴巴先进的管理理念和工程实践,致力于成为数字企业的研发效能引擎! 云效提供从“需求 ->开发->测试->发布->运维->运营”端到端的在线协同服务和研发工具,通过人工智能、云原生技术的应用助力开发者提升研发效能,持续快速交付有效价值。

像阿里巴巴一样远程办公

这些资源+工具+方案都好用

对抗疫情,阿里技术人们众志成城,上线了许多战疫方案。 今天,我们为大家整理了一些有助于疫情治理、远程办公和学习的产品与工具,希望可以给予社会各界一些帮助。 扫描下方二维码,或点击文末 “阅读原文” ,了解和使用所有工具。

n6ZJN36.png!web

你可能还喜欢

点击下方图片即可阅读

bYrEjyR.jpg!web

技术阻击疫情,开发者在行动

Jfeaemr.jpg!web

从淘汰边缘到阿里资深前端技术专家,他总结了 8 点

7rAJ3qQ.jpg!web

关注 「阿里技术」

把握前沿技术脉搏

Vvq2e2a.gif

戳我,对抗疫情,使用这些工具


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK