一群共同享有幸福生活的成长伙伴

2023-11-26 19:59

本文主要是介绍一群共同享有幸福生活的成长伙伴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

敏捷个人是一个自助式的全面自我成长体系和实践练习指南,帮助有成长意识的你去更好的认识自己、创造自己,开始变得爱学习、懂生活、要行动,成为一个快乐、平衡、高效的自己



敏捷开发之 4句敏捷宣言

敏捷开发都听过吧?敏捷宣言呢?那可能就不一定了。其实做敏捷也没必要去理会什么敏捷宣言,不过呢,如果你不知道敏捷宣言就不太好意思说你接触过敏捷了,所以呢,还是了解一下吧,而且如果你真的静下心来去了解,你也许会得到更深层的理解,这对你实施敏捷来说是必须的。

敏捷宣言

  • 个体与交互           胜过     过程与工具
  • 可以工作的软件   胜过     面面俱到的文档
  • 客户协作              胜过     合同谈判
  • 响应变化              胜过     遵循计划

在谈敏捷方法之前就必须先对敏捷宣言有所理解,在2001年由17位世界轻量级方法学家提出了一份敏捷联盟宣言,这个宣言只是上图上面部分的简单四句话,但可不要小看了,这可是敏捷方法的精髓。一般有思想的人都喜欢弄一些简练的话,提纲挈领,也易于扩展和变化,正如敏捷个人的快乐、高效、平衡,到现在的爱学习、有目标和懂生活:)

在和一些人员交流中,我发现大家都知道敏捷,但是能说出这个简单的敏捷宣言的并不多,即使现在知道,过不了多久也就忘记了。因为这个又不需要考试,谁吃的没事去死记硬背这些话呢,公司也不会因为我们知道这个而涨工资。而我们又知道,这其实是敏捷开发的精髓,最好需要通过自己的思考形成自己的理解来记住这四句话。

下面我将对这四句话进行解释,希望大家跟 随我的讲解也能对这个宣言有所认识。

合同谈判 

项目开发一般都是跟随着合同开始的,由客户经理同客户交谈,在合同中确定一些法律条文以及交付产品包含的功能,然后客户经理拿着合同回到公司由开发团队完成开发后再交付给客户使用。在开发期间,如果需要变更合同,则需要经过一系列变更流程,遇到一些客户过程不参与,或只是简单的询问一下进度,有的甚至是到最后交付日了直接来问你要东西,这时产品不是他们想要的时候就麻烦大了,这可能就需要进行谈判商讨解决了。

仅仅通过合同谈判来开发产品,客户在开发过程中就不会进行实质性的反馈,导致最终的产品不满意也就很正常了。也许你说你们做的产品,暂时没有客户使用,其实也不是这样的,产品开发在早期市场不成熟的时候一般为公司领导(产品经理、LPDT)驱动,后期转变为用户驱动、销售驱动、服务驱动,在矩阵式管理模式下,产品事业部和开发管理部作为两个部门时,在做产品开发的时候就会类似在进行合同谈判,从一开始就会在两个部门之间产生争执而不是合作,这势必会影响产品的开发。

遵循计划

当项目或产品开始之后,这时候就会组建一个开发团队了。负责人制定出明确的计划,详细列出需求、设计、开发、测试、部署的各项任务,并将看似完整齐全的计划提交给公司,公司以此不变的计划作为对客户的承诺。

然而软件实在是一个太复杂的东西,业务、技术和人员是影响复杂的主要三个要素:X轴表示技术(成熟度),Y轴表示业务(一致度):

从图中可以看到,业务和技术是正交的,各自对复杂度都有影响,我们在开发过程中需要做的通过各种办法尽量确保从Anarchy-Complex-Complicated-Simple进行转移。技术和业务最终都需要人来执行,而每个人拥有不同的技能、经验和观点,当这些人在一起合作时又会使得开发过程变得复杂。

这些复杂性将导致开发过程中存在很多不确定性,所以项目初期制定的计划其实基本上不能真正的坚持下来。而当项目开发遇到困难时,项目组可能会为了表明自己做计划的能力,或者不想经历复杂的变更过程,而继续努力的坚持这个已经错误的计划。范围、时间和成本,这 个金三角几乎没有领导不知道,而项目组为了保证”遵循计划“,对外宣称项目组运行状况良好,保证当前人员在预计时间肯定能保质保量的完成开发。而代码质量 只有开发人员知道,领导们容易忽略和难以控制这个环节,所以最后一味的遵循计划就势必导致提供给客户的是一个不满意的产品。

过程与工具

计划制定后,项目组需要在类似ISO9000、CMMI、IPD等一些常用的项目管理方法下进行开发管理,而且还需要找到很多工具来支持开发,需求阶段有原型工具、需求管理跟踪工具,设计阶段有Rose、PD,开发阶段有各种IDE和辅助插件等。

合适的工具能很好的帮助开发,但当在开发人员面前出现大量庞大笨重甚至不好用的工具和开发环境时,就会开始像拉着重重的行李走在沙漠一样,效率开始降低,甚至死在路上。在开发过程中,可能会出现夸大了工具的作用,当反应说开发工具对开发起起决定性的影响时, 这很有可能是在计划阶段就开始错了,就像衣服扣错的时候,一般都是扣第一个扣子的时候,而不是你发现扣错的那个扣子。

面面俱到的文档

瀑布式开发下,文档承载着各阶段之间的信息传递。需求文档中定义详细用例,每个细节,原型中定义界面表现,甚至每个控件的具体位置,设计中的UML图,数据库设计图,测试用例文档等等,如果没有文档,开发将不能在过程中顺利依次展开。

编写和维护一份详尽的需求文档总是一个好主意,然而就像前面所说业务复杂性带来的不确定性,除非给我们充足的时间,否则我们不可能一开始就想清楚所有细节。另一方面,编写文档需要花费大量的时间,如果考虑和代码的同步时,工作量更是急速上升,如果不考虑同步时,过多的文档反而比过少的文档还糟。当我们花大部分时间浪费的文档,仍旧只能以降低质量来遵循计划的执行。

更重要的一点是,变化是永恒的真理,文档并不能运行,写太多了也不能用来交付。当然,大家不要看到这又走极端了,认为敏捷是不要文档、不要规格说明书的,这个需要具体情况具体分析,切勿太偏执了

瀑布和敏捷

在我的一个敏捷开发培训课程中,我有一张瀑布和敏捷对比的PPT可以简要说明瀑布和敏捷的区别:

瀑布式开发是计划驱动的,合同谈判后项目组制定计划并且遵循计划,在过程与工具支持下通过面面俱到的文档来定义不变的需求和其他文档,在时间不够时可以通过增加人员来缓解压力。而敏捷开发是价值驱动,通过自组织团队短期迭代过程中不断的交付对用后有用的功能来进行产品开发。

从上图的正反三角形图形可以看出两者的驱动是不同的,虽然宣言中右项(过程与工具、面面俱到的文档、合同谈判、遵循计划)也很有价值,但是我们认为左项(个体与交互、可以工作的软件、客户协作、响应变化)更有价值,同时为了防止有些人学了敏捷之后而认为右边的没有价值了,我会在每条说明后重申一下右边的仍旧需要。以下我将继续对敏捷宣言中的左项内容进行解释。

客户协作  胜过   合同谈判

寻求客户合作的价值重于对合同的谈判。软件开发的最终目标是提供给客户满意的软件,而只有客户才更清楚怎么样才能满意,敏捷开发提倡客户和开发团队密切的在一起工作,并尽量经常行得提供反馈。各种不同的敏捷方法都会利用短期迭代,通过尽早提供软件来达到与客户频繁沟通和反馈的,这也可以把问题及早暴露出来,以免隐藏的问题在后期造成更大的影响。

虽然我们致力于客户协作,但为了双方利益和需要仍旧需要进行合同谈判。

响应变化  胜过    遵循计划

计划赶不上变化,敏捷项目承认开发过程中的不确定性,所以不会在开发中制定长时间的复杂计划,它们的成功都是建立在现实反馈的基础上的。Scrum依照一组简单实践及规则,实施经验性过程控制方法的检查、适应和保证可视性等步骤,处理软件开发项目中的复杂问题。通过迭代开发,每次迭代都是基于上一迭代的完善基础之上进行的,通过不断的响应变化来消除开发中的不确定性。

作出的计划常常会出错,面对这样的问题,开发小组往往会走上两个极端:要么根本不做任何规划,要么在计划中投入大量的精力直到自己确信计划是正确的。不做规划的小组对一些最基本的问题,例如“你们什么时候能完成?”以及“我们可以在6月份安排产品发布吗?”都无法回答。而做了大量计划的小组会自欺欺人地认为某个计划是“正确的”。他们的计划也许更全面,但这并不一定意味着它更准确或更有用。这两种极端都是敏捷需要避免的,最开始漫画所说的“我们实施敏捷,不再需要计划和文档了”的论调是及其错误的。

敏捷不是不需要计划,相反它需要更多的规划。不确定性是影响计划正确的主要因素,对大部分不确定而言,在获取知识、减少不确定性的唯一办法是通过执行-作一些事情、构建一些东西或模拟一些东西-然后获得反馈。许多项目管理方法是“规划、规划。规划-执行”,而敏捷开发方法是“规划-执行-调整”、“规划-执行-调整”。一个项目的不确定性越高,敏捷开发方法对取得成功就越是至关重要,不断学习和调整是敏捷开发的核心。

虽然我们致力于响应变化,但并不是不需要计划了,只是变得更多规划了。

个体与交互   胜过    过程与工具

方法和工具是死的,人是活的,如何没有优秀个人和团队协作,再强大的方法和工具都是摆设。一个使用普通工具的优秀人员会比使用优秀工具的普通人员做得更好,一个具有合作精神、自组织的团队比通过过程规范的团队工作得更好。敏捷项目首先拥有一个小规模但拥有各种不同职能的成员,每个成员都需要定时和团队的其他成员一起查看团队的整体进度,计划下一步工作,并一起探讨所遭遇问题的解决方案。自组织团队通过个人能力和协作能力,可以自发的通过各种途径解决开发过程中遇到的问题。

虽然我们致力于个体和交互,但并不是不需要过程与工具了。Scrum、XP等方法本身也有一些方法和过程,每日构造等敏捷实践也需要工具的支持,需要哪些过程和工具由自组织团队制定,而不是由领导制定。

可以工作的软件   胜过     面面俱到的文档

在合同中有时会看到分别在需求、设计、开发、测试阶段提供什么文档,支付多少金额等内容,而这些文档对用户来说是不是真的有价值呢?面面俱到的文档对客户来说确并不重要,用户需要的是一个能够运行起来,能够实质解决工作中问题的可以工作的软件。面面俱到的文档对开发团队也不重要,上百页的报告没有人愿意写,更没有人愿意去读,对开发团队来说最好的两份文档就是代码和团队。通过频繁的提供可以工作的软件,我们也可以更为频繁的搜集对产品和开发过程的反馈,保证开发小组始终是在处理最具有价值的功能,而且这些功能可以满足用户的需要。

虽然我们致力于提供可供做的软件,但并不是不要文档。我们在开发过程中仍然需要进行内部交流, 也需要和客户交流,我们仍旧可能需要制作原型,书写一些主要需求和算法,只要自组织团队认为足够就行了。

这四句价值观用语句表达就是:

  • 自组织团队与客户紧密协作,通过高度迭代式、增量式的软件开发过程响应变化,并在每次迭代结束时交付经过编码与测试的有价值的软件

胜过

  • 与客户确定合同后在初期制定并遵循基于活动的完整计划,在重型过程和工具指导下,通过完成大量文档进行知识传递,最后交付需求


转载自:http://www.zhoujingen.cn/blog/2591.html

这篇关于一群共同享有幸福生活的成长伙伴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/426236

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab

【生日视频制作】酒吧一群美女车展模特大屏幕视频改字AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程酒吧一群美女车展模特大屏幕视频改字AE模板修改文字特效广软件告生成神器素材祝福玩法AE模板工程 怎么如何做的【生日视频制作】酒吧一群美女车展模特大屏幕视频改字AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出视频

AI产品经理成长蓝图:从入门到精通的学习路径指南

AI产品经理区别于普通产品经理的地方,不止在懂得AI算法,更重要的是具有AI思维。 人工智能产品设计要以操作极度简单为标准,但是前端的简单代表后端的复杂,系统越复杂,才能越智能。 同样,人工智能的发展依赖于产业生态的共同推进,上游芯片提供算力保障,中游人工智能厂商着力研发算法模型,下游应用领域提供落地场景。 一、人工智能产业链结构 人工智能产业链结构上可分为基础层(计算基础设施)、技术层(

科研小白成长记40——第三个五年计划

小gap期间,拼命玩和拼命休息的同时,仔细思考了下我期望的五年之后的样子,gap结束,算是目标愈发清晰起来。曾经,读博的目标是成为一名independent researcher,并且具备发至少一篇顶会的能力。而现在,希望五年后的自己,成为一名good independent researcher。当然,这里的good,根据现阶段的科研榜样,已经有了具体的metrics。 首先是随时在线的深度理解

【百日算法计划】:每日一题,见证成长(010)

题目 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 思路 引入一个带虚拟头结点和tail指针的结果链表,把原节点的值比较大小后加入到结果链表中。 public ListNode mergeTwoLists(ListNode l1, ListNo

作为面试官的一点点感悟,谈谈技术人的成长之路

因为工作上的原因,做过几次面试官,面试的同学有应届生,也有工作3-5年的老技术人。最近也频繁作为面试官帮助筛选候选人,中间有很多值得深思的东西,我记录了下来分享给大家。 以下观点仅为个人观点,不代表任何公司的立场。        01 面试不是简单的你问我答 一般来讲,作为面试官和候选人进行沟通的第一个问题是一般是自我介绍,整个自我介绍的情况应该控制在2分钟左右,阐述自己的教育背景,项目经历

我写过的关于成长/面试/职场进阶的文章

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 如果我说,程序员是这个时代最好的职业之一。估计有一堆人要来喷我。 但是,你静下心来想想。实际上这个职业才是当下最享受时代红利的职业。所以除了坚持学习,刻意练习,加强自身技能和护城河还需要在红利期迅速积累软实力。 在写技术文章的这近两年时间里,我一直坚信的一个理念是,技术能力的提升只有一个途径:无他,唯手熟尔。 而且极少数的人会一直从

可交互、会学习、自成长机器人——李德毅院士

在以“农业无人农场”为主题的中国工程科技论坛上,中国工程院院士、欧亚科学院院士、中国人工智能学会和中国指挥与控制学会名誉理事长,中科原动力首席科学家李德毅院士应邀做题为《机器具身交互智能》的演讲。李德毅院士表示,智能机器不但把人从繁重的、重复性劳动中解脱出来,更好地符合相应工作岗位规范化要求,更重要的是可以暴力计算,人机交互协同创新。他认为,智能农机的硬核已经跃过了算力、算法和数据阶段,可交互、会