摘要: 本文将会讨论如何协调公司内各个工程师团队之间的合作,从而高效地保持系统的弹性和灵活性,以满足敏捷开发的需求。本文选自《Node.js微服务》。

  如果一个公司采用微服务来构建软件系统,那么每个干系人都需要参与决策。
  微服务是一次重大的范式转换。通常,大型组织倾向于使用相当传统的方式来构建软件系统。每个重大发布需要经历数月的研发周期,之后需要一个完备的质量保证阶段以及数小时的部署阶段。
  当一个公司选择使用面向微服务的架构时,方法论就会发生完全的改变:每个小团队负责各自的小功能点,包括它们的构建、测试和部署。每个团队各司其职,并且能够处理好各自负责的单一事项(一个微服务,或更确切地说是数个微服务),每个团队成员将熟练掌握构建软件系统的相关技术与领域知识。
  这通常被称为跨职能团队。这是一个由少数人组成的工作单元,他们都具备了构建高质量软件组件的能力。
  有一点值得注意的是,团队成员应当掌握必要的领域知识来理解业务需求。
  在我的职业生涯中,大多数导致公司失败的主要问题不外乎以下这点(就我个人观点而言)。首先,有一种观点认为开发者是“堆砖器”,即可以在没有提前沟通的情况下却依然能神奇地理解业务流。而且,还有观点认为,如果一个开发者一周可以完成X 量级的工作,那么10 个开发者一周就可以交付10X 量级的产量。这些观点都是错误的。
  为了保持高效以及考虑到康威定律在改变业务流程方面对系统的影响,构建微服务的跨职能团队中的成员必须熟练掌握(不仅仅是了解)相关领域知识。
  每当谈及微服务的组织架构适配时,自治才是关键因素。为了保证构建微服务的敏捷性,每个团队都必须保持自治,这也意味着要确保技术的自主选择权,如下所示:

  • 使用的语言。
  • 代码规范。
  • 解决问题的模式。
  • 各类工具的选择,比如软件的构建、测试、调试及部署工具。

这是非常重要的部分,因为这是我们需要定义公司如何构建软件,并且可能会引入工程问题的部分。
  举个例子,我们来看看代码规范问题,如下所示:

  • 我们需要在所有团队内都保持统一的代码规范吗?
  • 我们应该让每个团队都有各自的代码规范吗?

一般来说,我偏好于“80%准则”:80%的完美度已经足以涵盖100%的使用场景。这意味着放宽代码规范(也适用于其他领域),以及允许一定程度的不完美或者个性化,都有助于减少团队间的摩擦,也能让工程师能够尽快关注到那些极少数的重要准则,比如日志策略以及异常处理。
  如果你的代码规范过于复杂,那么在某个团队想要向其他团队的微服务提交代码时就会遇到很多阻力(切记,一个团队拥有自己的服务,但是其他团队的成员也可以对这个服务做出贡献)。
  本文选自《Node.js微服务》,点此链接可在博文视点官网查看此书。
                     

  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       

组织架构适配下的敏捷开发相关推荐

  1. 深度案例 | 纷享销客:用户需求精准洞察下的敏捷开发

    2018 年,企业级服务仍处于高速增长时期. 经过几年的市场洗礼后,企业级服务的市场格局正在逐步明朗.无论是垂直型还是通用型的企业级服务厂商,公司发展核心问题主要围绕客户满意度.产品成熟度.企业健康度 ...

  2. 如何在开发资源或能力不足的情况下进行敏捷开发?

    背景:本文来源于某用户在PMCAFF论坛的提问,当时做了回答.后发现遇到此问题的朋友不少,所以整理成文章. 以下为正文: 许多产品经理可能会经常面临这样的问题:公司现有技术资源不足以支持自己的产品设计 ...

  3. 倒三角组织架构模式下的赋能方式

    以前一名士兵要想呼唤炮火支援,需要向上级层层申请,甚至需要大BOSS亲自下达命令才能调动炮兵,但是现在该命令由一线战斗小组下达,其具备了调动后方资源的能力,后方资源围绕前端进行作战,特种作战正在改变以 ...

  4. VSTS 下的敏捷开发模板

    在codeplex上看到这个模板,挺不错,拿来给大家分享一下,这个模板里没有agile那么多的角色,也没有那么多的工作项类型,非常适合xp开发和小型项目组 下载地址 www.msf4xp.org 如果 ...

  5. 开发人员能力不足的情况下如何推进敏捷开发?

    本文整理自PMCAFF产品问答社区,未经许可,禁止转载. 开发人员能力不足的情况下如何推进敏捷开发? 来自 @克劳德|亚信产品经理 的回答 我经历过这样的情况:某个项目中,研发团队由一个5年的研发带队 ...

  6. 敏捷开发一千零一问系列之九:总体架构什么时机进行?(上)

    这是敏捷开发一千零一问系列的第九篇.(在这里提问,之一,之二,之三,问题总目录) 问题 总体架构设计在什么时机进行?是每个迭代做还是先做完再迭代? 这是少数几个被提到的技术问题.在两天的培训课程之后, ...

  7. 外包模式下的精益敏捷开发 (人员能力篇)

    前言: 本文主要探讨在产品外包的模式下, 精益敏捷开发如何能迅速, 有效的提升外包人员的能力◦ 本文: 许多的产品当采用外包的开发模式时, 所面临的最大的挑战便是: 外包人员的能力, 素质参差不齐◦ ...

  8. 敏捷开发 我的经验(一)基本概念

    敏捷开发中的一些概念 scrum team: 整个组织架构中可进行独立开发的最小团队, 一般人数控制在5~10人左右 sprint:项目开发过程中最小迭代周期,根据同的项目周期不同:现有产品维护1~5 ...

  9. 软件工程结课论文 敏捷开发在软件工程中的应用 大学编程作业(TUST 天津科技大学 2022年)

    软件工程结课论文 敏捷开发在软件工程中的应用 大学编程作业(TUST 天津科技大学 2022 年) 软件工程结课论文 敏捷开发在软件工程中的应用 大学编程作业(TUST 天津科技大学 2022 年) ...

  10. 读书笔记 -《高效程序猿的45个习惯-敏捷开发修炼之道》

    <高效程序猿的45个习惯-敏捷开发修炼之道> 一本2010年出版的书,当时敏捷还仅仅是在国外開始流行,像我这样的菜鸟级根本听都没听过. 这次通读了这本书,受益良多.回想自己的职业生涯,多是 ...

最新文章

  1. JupyterLab 3.0发布:支持中文界面,安装插件无需Node.js
  2. Shell--shell中的判断
  3. nohup: 忽略输入重定向错误到标准输出端_Linux 重定向与管道
  4. Ajax POST请求获取后台返回的数据
  5. C语言基础知识(一)-------C++语言结构
  6. MySQL运行一段时间后自动停止问题的排查
  7. vs2017项目配置
  8. 为什么无法建立过程性能模型?
  9. 数据库课程设计报告——书店管理系统
  10. 课程设计题目:电力系统运行方式分析和计算
  11. ANSYS 有限元分析 概述
  12. PS-第五天-图层样式
  13. 记录一个错误Failure to find org.eclipse.m2e:lifecycle-mapping:pom:1.0.0的解决过程
  14. 示波器基本原理之一:带宽
  15. 【王道】计算机组成原理第三章存储系统(三)
  16. GetLastErr返回值ErrCode的宏定义以及含义
  17. KendoUI学习笔记
  18. 微信公众号网页授权域名证书验证位置
  19. html5教程渐变效果,科技常识:html5教程实现Photoshop渐变色效果
  20. 一 马尔可夫决策问题

热门文章

  1. easyUI 数据表格datagrid的使用
  2. 04-cmake语法-STREQUAL
  3. 20155207第十章课下测试补交
  4. 回家_洛谷U3427_dfsbfs
  5. The constness of a method should makes sense from outside the object
  6. (补充知识)DLL 中 .DEF文件的使用
  7. SQL 语句 - Select(2): 指定表中的字段
  8. 为什么需要消息队列(MQ)
  9. Jzoj4831 方程式
  10. Linq实战 之 Linq to Sql及Entity Framework操作详解