全栈必备 敏捷基础

相对于软件开发流程,有一门专门的学科——软件工程。最早接触软件工程,是20年前在北电贝尔北方实验室工作的时候,当时的开发流程是这样的:

一种瀑布式开发

其他主流的瀑布式开发流程也大致如此。然而,随着技术的演进,尤其是互联网的发展,BS架构的广泛应用,用户反馈的及时响应成为了可能。从90年代开始逐渐引起广泛关注的一些新型软件开发方法出现了,如XP ( Extreme Programming ),Scrum 等,统称为敏捷开发。敏捷开发主要是通过高透明性、可检验性和适应性来管理复杂性、不可预测性和变化。

以Scrum为例,典型的开发模型如下:

scrum 开发模型

这是一张被广泛引用的图片,还有一张烂大街的图片就是Sprint 的流程图:

sprint开发周期

难点在于一个sprint周期有多长,个人觉得Sprint周期的长度要依赖于你能在多长时间内保证在Sprint期间的需求不发生变更。

敏捷是一种方式,不是单纯的方法,通过各种的行为方式来实现目标。

首先是,Sprint 计划会议。计划会议要有足够的时间,最好至少8个小时。取出部分产品需求做成sprint需求,并写成索引卡。确定并细分每一个索引卡的故事(User Story), 然后进行工作认领(不是分配)。同时,确定每日站立会议的时间和地点,确定好演示会议和回顾会议的日期。

站会是敏捷中的一个显著特点,每次10-15分钟,迟到将接受惩罚,每个成员自问自答三个问题:昨天做了什么,今天要做什么和遇到了什么问题,会后再沟通问题的解决方案,最重要的是更新燃尽图。

在开发过程中,要使用好任务看板,关注产品的整个生命周期:需求,设计,开发,测试和维护。注意燃尽图,对于小团队而言,建议不要使用软件取代看板,可以选择性的和XP或其它敏捷的某些方式相结合。

演示会议是至关重要的。演示是跨团队的,会产生不同团队之间的交流。不要关注太多的细节,以主要的功能为主,一定要让老板或者客户看到。演示会议非常的重要,绝对不可以被忽略。

回顾会议的时间一般在1-3个小时,要找最舒适的地方(最好有回顾看板)。开始的时候轮流发言,而不是主动发言。记录问题并总结,并讨论改进的方法,放在回顾看板上。每人将最重要的2-3个改进点,成为下一轮产品需求的一部分。

还是那就话,“没有银弹”,敏捷也不是万能的。Scrum的主要缺陷有,团队压力大,不方便跨时区和跨语言的协同团队,而且一旦启动无法被中断,更重要的是程序维护的成本偏高,对工程师的要求较高,尤其是应用的架构和可扩展性。

但是,敏捷开发的12个准则还是应该理解的,个人总结成一句话,按花生酱,赞不绝口。
Clic 按
Concise:简洁开发
要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
Lean:精益求精
对技术的精益求精以及对设计的不断完善将提升敏捷性
Iteration:高速迭代
要不断交付可用的软件,周期从几周到几个月不等,且越短越好
Change:拥抱需求变更
欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。


Jif 花生酱
Join:全员参与
项目过程中,业务人员与开发人员必须在一起工作
Incentive:员工激励
要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
Face2Face:当面沟通
无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。


Raves 赞不绝口
Rethink:反思
团队要定期反省如何能够做到更有效,并相应地调整团队的行为
Availabiltiy:可用第一
可用的软件是衡量进度的主要指标。
Value:尽快给用户带来价值
最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
Evenly:匀速前进
敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
Self-orgnazation:自组织团队
最佳的架构、需求和设计出自于自组织的团队。

敏捷开发乃至一般的开发过程都会涉及到一件事,任务估点,就如何见招拆招。个人觉得,一个task 最好以2个小时为单位,半小时设计,半小时编码,半小时测试,半小时文档、注释以及重构。原因可能是这样的,互联网上流传着一句名言——3个月就是一年,也就是1周相当于1个月。那么,2个小时就相当于1天了,也就是说,我们的团队要将每两个小时当成一天来计算。众所周知,所有的估算都是不准确的,以2小时为单位是为了降低误差。就像我们度量的时候,以米为单位度量,误差就是米,以毫米来量,误差就是毫米。2个小时一个task,就相当于开发中的“毫米”。

敏捷开发中最重要的还是代码,优秀的代码质量决定着产品或者服务的质量。个人以为,有四种手段可以提升一下代码质量:
1)意图导向编程,简单地说,就是把注释变成代码,让代码拥有自解释性
2)测试驱动开发,尤其是对后端而言更为重要,可以结合日志系统可以更快捷定位问题
3)创建和使用分离,这就是大家常说的“高内聚 低耦合”了
4)单点修改原则,单点修改可能只是一种理想状态,但应该铭记在心

至于敏捷团队,就是我提倡的ABC了,具体的,我在旧文《和 <创时代>》中有描述,这里不在重复。对于团队敏捷,我只想澄清项目和产品开发(project developement vs product developement)的区别,这两者在目标上还是又着区别的,例如持续演进,架构的可扩展性等等。

老曹眼中的敏捷开发,还是以我喜欢的一行python 代码作为共勉:
$ python -c "import this"

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.Although never is often better than right now.
If the implementation is hard to explain, it's a bad idea.If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

微信扫一扫关注该公众号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容

  • 软件工程发展历史上, 当软件变得越来越复杂时, 规模变得越来越大时, 失败的机率由此递增, 许多项目一再延期, 软...
    老瓦在霸都阅读 1,244评论 0 3
  • 傍晚的平静,被一个新闻所打破。 我们都说,孩子是未来的希望,是祖国的花朵。 可是新闻中,这些给予孩子最基础知识的老...
    午小阳阅读 1,951评论 0 0
  • 执手望月,家隔千阙。 楚时若盈,秦时或缺。 昔我往兮,融雪未冻。 今我思兮,秋风已倦。 韶光终逝,顿首难寻。 白驹...
    郑峰阅读 474评论 0 0
  • 一、查找地点 百度地图:周边的大学、路名、小区名都用文字平铺,显得界面信息杂乱;突出了学校内图书馆、附中和周边的地...
    Estella_UX阅读 1,981评论 1 8
  • 2017年03月08日 雨转多云: 学习: 跟读内容:《伤寒论》(二)辨太阳病脉证并治下第八05;《庄子》5-03...
    磊蔡阅读 194评论 0 3