--

先说下准备这个的背景:

本来是想让我分享下敏捷开发,可能是听我说为as**搭建并完善了敏捷开发体系的原因吧。

我一般分享一个东西,希望大家能真的理解,而不只是知道。

我不大相信有万能的东西,不希望大家因为我说了,所以盲目的去套用,最后出了问题。

所以,这里讲下我对于开发模式这个东西的理解,主要说下敏捷开发的一些经验和小的tips。

可能大家也会对近两年很火的微服务感兴趣,所以顺带提一下。


$ 开发模式的意义

    那么,讲这些有什么意义呢?

    从大的出发点来说,比如灵硅的科技赋能至臻至善、滴滴的美好出行、抖音的记录美好生活、百度的让信息获取平等便捷,一个公司要为社会创造价值,才能受到大家的认可和支持,才能赚钱召集大家一起来创造更多的价值,形成良性循环。

    从小的出发点来说,同样的工作强度,你自己能到大街上卖出公司给你的这么多薪水吗?我想很多人都是不能的。

    人与动物的区别是,人会利用工具。

    很多时候集体对个人的优势在于1+1》2,好的管理、协同方法能够让集体事半功倍,比如古代的战阵、现代的编队和美军的军用数据链。更直观一点,大雁的队形兼容不同年龄、体力,同时利用尾流集体省力;

    开发模式就是软件工程中一种协同方法。

    如果评判一种开发模式好还是不好的?我们要辩证的看待,考虑到现实需求情况和团队情况,包括团队的技能组成、需求的复杂耦合情况、目标的权衡情况等。

$ 首先,什么是敏捷开发

    一般而言,有如下几种传统开发模式:

    1. 瀑布开发;(C的经典开发模式)
      1. 需求 -> 分析 -> 设计 -> 编码 -> 测试
      2. 特点:固定次序、不重叠
    2. 迭代开发;
      1. 迭代增量式开发、迭代固定式开发,俗称小步迭代
      2. 需求完全确定之前就启动开发,开发中不断精修细节
    3. 螺旋式开发;
      1. 计划 -> 风险评估 -> 实施 -> 客户评估 -> 计划 。。。
      2. 比迭代的循环粒度要大

$ 看敏捷开发(Agile program development)

    以上三种开发模式,瀑布开发是顺理成章的,其他可以理解为瀑布开发形式的变种,主要变化在需求的粒度、确定性变化上。

    敏捷开发会复杂点,我们先从几个名词来看(参考Link):

    1. agile - 敏捷的意思。在软件行业的核心:频繁迭代、修正,鼓励团队所有人的责任感、自主性(主人翁意识),快速、高质量的交互符合客户需求的产品。可以说是一个比较抽象的指导思想,我总结两个核心点:充分发挥团队中个人的作用,紧跟用户需求变化。
    2. scrum - 原意是橄榄球里的“列阵争球”,需要很高的技巧,也需要足够的身体对抗性、协调性、平衡感,可以灵活配以各种进攻策略。这里用在软件行业,算是敏捷里最常用的一种轻量级的process framwork,实践形式?

   

    Scrum的几个主要特点:

    1. 生产效率高,耗时短,结果确定性较好;
    2. 能支持频繁变更的需求,甚至是拥抱变化;
    3. 计划和状态可控;

    对于敏捷核心点的理解:

    1. 要快。两种选择,单核更快或者多核并发;一般只能选择并发,并发存在并发调度的问题,必然要拆解需求,小步迭代,小步融合。
    2. 要变。首先得兼容变化,设计的时候就要留有裕量;其次得及时交付上一个版本,才能及时安排下一个变化;再次,每个变化的需求基本都要是可用版本,才能不会为了变而变,丢掉了本质;

    从这个角度来说,scrum在步子大小、拆分逻辑、融合方式、变化节奏、迭代过程上都给了一个确定的指导意见,基本适用于大部分的项目情况。

      

$ 从几方面具体看敏捷的实施的tips

    这里从agile网站上抄过来的,和大家一起看下

    1. scrum的要求
    2. scrum的一些基本概念
    3. scrum有哪些角色
    4. 如何能做好呢?用来衡量敏捷的一些指标
    5. 异地分割的团队如何实施scrum
    6. 敏捷开发中DevOps的重要性

    从腾讯云的漫画抄过来的Link

    1. scrum的要义不是工具,是不听的scrum

    号称最全的agile tips:Link

    来个总结,好落地的tips

    很难有十全十美的事情,需要注意的,agile的问题 —— 合适的团队规模、需求复杂度、人员素质:

    1. 如何准确的评估问题
    2. 如何准确的评估自己的能力
    3. 如何准确的预估兼容性需求
    4. 合理的分工
    5. 合理的合作
    6. 如何合理的拆解
    7. 合理的引入敏捷工具,如git、gtd、wiki、Jenkins、燃尽图、甘特图等

$ 那么轮到微服务;

    敏捷风靡业界,不管技术的老板也都知道敏捷了,所以有了更大维度的敏捷,产品维度的敏捷,其story就是微服务。当然老板来决定这件事是开玩笑的了。

    那么我们来看下“微服务敏捷开发模式”,参考华为的案例,我最近也总结了一些经验

    IBM的微服务简介Link

    

## 我欣赏以人为本、灵活变通的处事逻辑,但是千万记得灵活变通,万变不离其宗 —— 基于现实的效率提升!

    

从敏捷开发到微服务,maybe再到中台的更多相关文章

  1. Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务

    Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,Spring Cloud是一个基于Spring Boot实现的云应用开发工具:Spr ...

  2. EMIS快速开发平台 - 微服务版技术选型

    http://demo.zuoyour.com/system/login EMIS快速开发平台 - 微服务版技术选型 开发框架:Spring Boot 2.1.3.RELEASE 微服务:Spring ...

  3. Otto开发初探——微服务依赖管理新利器

    [编者按]时下,Vagrant 被 DevOps 软件开发商广泛作为开发阶段的本地软件开发环境,而在本文,CERT Division高级研究员介绍的 Otto 则是 Vagrant 开发团队 Hash ...

  4. zooland 新开源的RPC项目,希望大家在开发的微服务的时候多一种选择,让微服务开发简单,并且容易上手。

    zooland 我叫它动物园地,一个构思很长时间的一个项目.起初只是觉得各种通信框架都封装的很好了,但是就是差些兼容,防错,高可用.同时在使用上,不希望有多余的代码,像普通接口一样使用就可以了. 基于 ...

  5. springcolud 的学习(二).微服务架构的介绍

    什么是微服务微服务架是从SOA架构演变过来,比SOA架构粒度会更加精细,让专业的人去做专业的事情(专注),目的提高效率,每个服务于服务之间互不影响,微服务架构中,每个服务必须独立部署,互不影响,微服务 ...

  6. Spring Cloud 微服务架构整理记录与示例首页

    ---------------------------目录-------------------------------- 一.SpringCloud系列组件实战(Eureka.Ribbon.Hyst ...

  7. Dapr微服务应用开发系列0:概述

    题记:Dapr是什么,Dapr包含什么,为什么要用Dapr. Dapr是什么 Dapr(Distributed Application Runtime),是微软Azure内部创新孵化团队的一个开源项目 ...

  8. 浅谈微服务架构、容器技术与K8S

    关注嘉为科技,获取运维新知 企业应用系统:从单体应用走向微服务架构:从裸金属走向容器. 如果在诸多热门云计算技术诸如容器.微服务.DevOps.OpenStack等之中,找出一个最火的方向,那么可能非 ...

  9. Spring Cloud与微服务构建:Spring Cloud简介

    Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...

随机推荐

  1. Java爬虫一键爬取结果并保存为Excel

    Java爬虫一键爬取结果并保存为Excel 将爬取结果保存为一个Excel表格 官方没有给出导出Excel 的教程 这里我就发一个导出为Excel的教程 导包 因为个人爱好 我喜欢用Gradle所以这 ...

  2. 致Java初学者

    致Java初学者 精心整理资料点击获取 前言 ​ 能看到这篇文章的朋友,应该都或多或少的了解Java,也许你现在是个菜鸟还在成长的路上.再此期间你一定遇到了很多困惑疑虑,对未来的学习方向感到很迷惑.作 ...

  3. 让vue-router渲染为指定的标签

    <router-link :to="{name:'cart'}" tag="li"> cart </router-link> 在rout ...

  4. python递归(函数)

    递归:一个过程或函数调用自身的一种方法. 1. 效果图 2. 代码 def factorial(n): ''' 该函数用来求任意数的阶乘 参数: n 要求阶乘的数字 ''' # 基线条件 判断n是否为 ...

  5. linux入门系列7--管道符、重定向、环境变量

    前面文章我们学习了linux基础命令,如果将不同命令组合使用则可以成倍提高工作效率.本文将学习重定向.管道符.通配符.转义符.以及重要的环境变量相关知识,为后面的shell编程打下基础. 一.IO重定 ...

  6. Mixing Milk 混合牛奶 USACO 贪心

    1009: 1.3.1 Mixing Milk 混合牛奶 时间限制: 1 Sec  内存限制: 128 MB提交: 9  解决: 9[提交] [状态] [讨论版] [命题人:外部导入] 题目描述 1. ...

  7. vue vuex开发中遇到的问题及解决小技巧

    1.在vue的开发中,如果使用了vuex,数据的组装,修改时在mutations中,页面是建议修改变量值的,如果强制修改,控制台就会出现错误.如下: 这种错误虽然不会影响结果,但是是vuex不提倡的方 ...

  8. 让现有vue前端项目快速支持多语言 - 用.net core程序快速替换中文为资源Key,咱不干体力活

    前言 最近应公司上层要求,需要将现有项目尽快支持多语言,而中文内容可以找专业人员翻译.那么咱们说干就干,首先我们项目的前端是用vue写的spa程序且组件方面用的element ui,那么自然而然想到用 ...

  9. Java8 Stream用法详解

    1.概述 Stream 的原理:将要处理的元素看做一种流,流在管道中传输,并且可以在管道的节点上处理,包括过滤筛选.去重.排序.聚合等.元素流在管道中经过中间操作的处理,最后由最终操作得到前面处理的结 ...

  10. 华硕win10U盘重装系统进入pe

    1.先要制作一个U盘的PE启动盘,建议使用WIN8 PE 2.将制作好的PE启动盘接上电脑,开机按F2键进入BIOS ,先将[Secure]菜单下[Secure Boot Control]选项设置为[ ...