全栈必备 敏捷基础

简介: 版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。 https://blog.csdn.net/wireless_com/article/details/53725385

世界上不存在这样一种方法:

只要套用,就可以写出完美的软件,无论使用的哪种设计模式;


但确实可能存在一种开发方式,可以帮助我们一步步构造出需要的软件和架构——这有可能就是敏捷开发。


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




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


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




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




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


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


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


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


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


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

非常的重要,绝对不可以被忽略。


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


还是那就话,“没有银弹”,敏捷也不是万能的。Scrum的主要缺陷有,团队压力大,不方便跨时区和跨语言的协同团队,而且一旦启动无法被中断,更重要的是程序维护的成本偏高,对工程师的要求较高,尤其是应用的架构和可扩展性。但是,敏捷开发的12个准则还是应该理解的,个人总结成一句话,按花生酱,赞不绝口(参见http://blog.csdn.net/wireless_com/article/details/40622377)。



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


敏捷开发中最重要的还是代码,优秀的代码质量决定着产品或者服务的质量。个人以为,有四种手段可以提升一下代码质量:

1)意图导向编程,简单地说,就是把注释变成代码,让代码拥有自解释性

2)测试驱动开发,尤其是对后端而言更为重要,可以结合日志系统可以更快捷定位问题

3)创建和使用分离,这就是大家常说的“高内聚 低耦合”了

4)单点修改原则,单点修改可能只是一种理想状态,但应该铭记在心


至于敏捷团队,就是我提倡的ABC了:


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



微信扫一扫
关注该公众号

目录
相关文章
|
1月前
|
人工智能 运维 监控
运维之道:从基础到精通的旅程
【10月更文挑战第25天】 本文深入探讨了运维领域的核心概念、关键技术和最佳实践,旨在为初学者和有经验的专业人士提供一份全面的指南。通过分析当前运维面临的挑战和趋势,文章揭示了持续学习和适应新技术的重要性。此外,文章还强调了团队合作和沟通在解决复杂问题中的作用,以及如何通过自动化和监控工具提高系统的稳定性和效率。
106 56
|
2月前
|
运维 监控 Cloud Native
运维之道:从基础到进阶的实战指南
【10月更文挑战第20天】 在数字化时代,运维作为保障系统稳定运行的重要环节,其重要性不言而喻。本文将带你深入探索运维的核心领域,从基础概念解析到进阶技能提升,通过一系列实用的技巧和策略,帮助你构建高效、可靠的运维体系,确保业务连续性和数据安全。
100 6
|
2月前
|
测试技术 Android开发 开发者
移动应用开发之旅:从概念到上线的全栈探索
【9月更文挑战第36天】在这个数字时代,移动应用已经成为我们生活中不可或缺的一部分。本文将带领读者踏上一场精彩的旅程,从最初的构想到最终的应用上线,深入探讨移动应用开发的各个环节。我们将一起揭开移动操作系统的神秘面纱,了解它们如何支撑起整个移动生态系统。通过具体的代码示例和实操建议,本文旨在为初学者提供一份实用的指南,同时给予有经验的开发者一些新的启示。让我们一起构建更智能、更互联的世界吧!
|
4月前
|
运维 监控 Devops
DevOps 入门:基础知识与核心理念
【8月更文第30天】随着软件开发的复杂性和速度不断增加,传统的开发模式已经无法满足市场需求。DevOps 应运而生,它不仅是一种实践方法,也是一种文化和理念,旨在通过自动化和持续改进来提高软件交付的速度和质量。
96 1
|
4月前
|
运维 Devops 持续交付
自动化运维之路:从脚本到DevOps探索后端开发:从基础到高级实践
【8月更文挑战第28天】在数字化时代的浪潮中,企业对于IT运维的要求越来越高。从最初的手动执行脚本,到如今的自动化运维和DevOps实践,本文将带你领略运维的演变之旅。我们将探索如何通过编写简单的自动化脚本来提升效率,进而介绍DevOps文化的兴起及其对现代运维的影响。文章将为你揭示,通过持续集成、持续部署和微服务架构的实践,如何构建一个高效、可靠的运维体系。准备好让你的运维工作变得更加智能化和自动化了吗?让我们一起踏上这段旅程。 【8月更文挑战第28天】 本文旨在为初学者和有一定经验的开发者提供一个深入浅出的后端开发之旅。我们将一起探索后端开发的多个方面,包括语言选择、框架应用、数据库设计
|
4月前
|
运维 监控 安全
探索运维世界的奥秘:从基础到高级的运维之旅
【8月更文挑战第23天】在数字化时代,运维(Operations)是确保企业技术平稳运行的关键。本文将深入浅出地探讨运维的核心概念、日常任务、以及如何通过持续学习和实践,提升运维技能,从而在职业生涯中不断前进。我们将从运维的基础工作谈起,逐步深入到高级运维的策略和技巧,旨在为读者提供一个全面而清晰的运维职业发展蓝图。
130 8
|
4月前
|
Cloud Native Java 开发者
探索后端开发:从基础到高级的演进之路
【8月更文挑战第23天】 在数字时代的浪潮中,后端开发扮演着支撑整个互联网世界运行的关键角色。本文旨在通过浅显易懂的语言,为初学者揭开后端开发的神秘面纱,同时为有一定基础的开发者提供进阶的指引。我们将一起回顾后端技术的演变历程,探讨当下流行的后端框架,并展望未来可能的技术趋势。无论你是编程新手还是资深开发者,这篇文章都将为你的职业发展之路提供宝贵的思考和灵感。
53 3
|
4月前
|
Cloud Native 持续交付 云计算
云原生之旅:探索现代软件开发的未来之路
在数字时代的浪潮中,云原生技术如同一艘承载梦想的巨轮,正引领着软件开发的实践走向更加灵活、高效和创新的彼岸。本文将带你走进云原生的世界,从基础概念到实际应用案例,一步步揭示这一变革性技术如何重塑我们的开发模式和思维。准备好启航,一起见证软件工程的新篇章。
|
5月前
|
前端开发 JavaScript 数据库
全栈开发者的成长之路:从基础到精通
【7月更文挑战第25天】全栈开发者的成长之路是一条既充满挑战又充满机遇的旅程。通过广泛积累基础知识、精进专业技能和积累实战经验,你可以逐步成长为一名优秀的全栈开发者。在这个过程中,保持对新技术的好奇心和学习热情是至关重要的。同时,也要注重团队合作和沟通能力的培养,因为在软件开发领域,一个人的力量是有限的,而团队的力量是无穷的。希望本文能为你的全栈开发之旅提供一些有益的启示和帮助。
|
5月前
|
前端开发
全栈技术实践问题之全栈开发带来的主要好处是什么
全栈技术实践问题之全栈开发带来的主要好处是什么