硝烟中的Scrum和XP

初次接触Scrum和XP(更加准确的说是“看到”),心里不免有些疑问,软件开发为什么会有如此多的方式,难道软件开发、软件工程不就是写写代码的事儿吗?直到后来,才明白,一个庞大的软件工程,不会只是一个人的事儿,倘若我们现在(学生时代)还是只有着一种写代码是自己的事儿的态度来看待软件工程这样的“工程”,是低端的,是不全面的。

作为一名软件工程的学生,编写代码的能力是一方面,理解计算机对于代码编辑、编译、链接、运行过程是一方面,理解算法、数据结构有事另一方面。这些当然是我们软件工程学生应该有的素质,但同时,我们还应该明白,一个只有几个人能胜任的软件工程的小组毕竟只是少数,少数中的少数,更多的则是庞大的集合体,我们(对于一般的程序员、工程师)只这个庞大的集合体中的一两个小小的元素。所以,我们应当有团队意识。

说了一大堆空白话,让我们回到《硝烟中的Scrum和XP》来。

何为Scrum?这里我不想复制某度百科一堆,我只想说说我的理解(拙见),在我看来,Scrum更加给人一种具有技术的高效开发团队组织的感觉,这个组织拥有对于时间掌控的能力,能够充分利用时间的分割来进行项目的开发、管理,从这一点来看,Scrum更加注重管理,注重一种形式,一种规则。XP则是在另一番景象,XP所做到的是注重了编程的实践,注重强有力的工程实践,是实际的,具有技术的。为什么二者能够和谐的处在一起,因为它们都是在处理软件工程领域不同的部分,而不同的部分,则是软件工程如今所面临的重要之处,同时,它们都强调了个人与组织的关系,强调了个人应当与组织形成一种高效的交流。本书序章中看到了一句话“实际上,Scrum和XP都关注如何把事情做好”。的确如此,所以才造就了如今的敏捷开发与极限编程所拥有的魅力。

Scrum与XP的共同点:实践与交流。正如书中所说“但在纷乱芜杂的信息中,我感到最有价值的就是那些真枪实弹的故事。它们把‘原则与实践’变成了‘如何真正动手去做’”。理论知识就是动动嘴皮子,在此我并非贬低理论的形成过程,是的,理论也是需要动用你的大脑去真正的考虑设置一种想法的“实现”,这种“实现”并不是简单想想就能搞定的。但是,现实是残酷的,时间是不等人的,在如今的软将工程这个领域里,你永远不知道“下一个巧克力是什么味道的”。甜的,恭喜你“侥幸”度过了软件工程实践里的难处;哭的,很遗憾,你的项目,你的工程将很有可能面临淘汰。(胡乱扯了一通,拙见)

在书中我还看到了一个很有意思或者说确实也出现在我身上的事例。就是在backlog这一部分,书中所讲的就是“需求,或故事,或特性等组成的列表”,理解一下就是贴了一些便条的梗概,这些都是业务层次上的(产品负责人来负责),不需要你添加一些技术性的问题在其中(技术人员的事儿)。然而(比如我)在写这个backlog的时候,常常就会添加一些技术性的比如这里用某某算法、这里用某某结构体等来描述,这实际上已经突破了业务的层次,这在实际过程中应当避免。

本书中还提到了Scrum Master:负责监督整个Scrum进程。是的,Scrum确实需要这样的Master存在,Scrum Master并非团队的领导,而是一个负责屏蔽外界对开发团队干扰的角色。Scrum Master是规则的执行者,他是Scrum团队中的服务型领导。不难看出,SM的需要非常熟悉敏捷开发模式,同时还需要很强的能力。

我在看这本书的时候,其实并没有太关注Scrum与XP的过程,而是在思考Scrum与XP的思想,这样的思想是如何体现的。其实作为一名程序员,我们不能仅仅关注于技术,而是应当在做技术的同时,思考一些理念,一些想法,一些蕴藏在软件开发之中的文化(当然实在已经有较好的技术的前提下,否则就是理想主义者了)。

硝烟中的Scrum和XP的更多相关文章

  1. 《硝烟中的Scrum和XP》:作者主导Scrum过程的实战经验,四星推荐

    本书作者是开发团队Leader,本书记录了他带领团队实施Scurm过程中的经验教训.全书短小精悍,言简意赅. 以下是书中一些观点信息的摘抄: 1:Nokia总结出的迭代开发的基本要求:1.1:迭代要有 ...

  2. 硝烟中的scrum和xp学习笔记 - 怎样编写产品backlog

    产品backlog是scrum的核心,也是一切的起源. 从根本上说,它就是一个需求/故事/特性组成的列表,按照重要性的级别排序. 我们叫它story, 或者backlog(条目). Backlog I ...

  3. 硝烟中的Scrum和XP-我们如何实施Scrum 12)发布计划 13)组合XP

    12 怎样制定发布计划, 处理固定价格的合同 一次只计划一个sprint的事情会显得提前量不足, 提前做计划是个好习惯; 尤其是签了固定价格的合同之后, 不得不预先计划好, 防止无法按期交付的危险情况 ...

  4. 硝烟中的Scrum和XP-我们如何实施Scrum 15)多团队 Part 2/2 16)地理分散 17)检查列表 18)其他

    引入"团队领导"角色 假设有3个团队开发同一个产品 红色的P是PO, 黑色的S是SM, 蓝色是其他团队成员; 如何决定哪些人属于哪个团队? 怎么分配成员? 有人觉得让PO来做人员分 ...

  5. 硝烟中的Scrum和XP-我们如何实施Scrum 4 (Part 1/2)

    4 制定Sprint计划 计划是Scrum中重要的一环; 是为了让团队获得足够信息, 不受打扰地工作, 增加团队的信心; Planning的成果: 1) Sprint目标 2) 团队成员名单(时间百分 ...

  6. 硝烟中的scrum学习笔记 - 怎样制定Sprint计划(Plan Meeting)

    1. 如何估算我们这个sprint能做多少个故事点 1) 本能反应 2) 生产率计算  估算生产率/实际生产率  看看团队的历史,看看他们在过去几个sprint里的生产率是多少  然后假定在下一个sp ...

  7. SCRUM与XP的区别和联系

    相同点:SCRUM和XP都是敏捷开发的方法论,都体现了快速反馈,强调交流,强调人的主观能动性等基本原则,而且多数“最佳实践活动”都互相适用. 不同点:Scrum非常突出Self-Orgnization ...

  8. 敏捷开发中的Scrum流程和术语【转】

    任何人力流程都离不开人来执行,所以在讲解Scrum流程之前,有必要先把Scrum中的角色讲一下. 一天,一头猪和一只鸡在路上散步,鸡看了一下猪说,“嗨,我们合伙开一家餐馆怎么样?”,猪回头看了一下鸡说 ...

  9. erl_0019《硝烟中的erlang》 读书笔记005 “进程信息"

    对一个运行中的Erlang系统来说,进程绝对是重要的组成部分.正因为进程是所有运行实体的基础,因此会想去了解它们的更多信息.幸运的是,VM提供了大量的可用信息,其中有些可以安全使用,有些在生产环境中使 ...

随机推荐

  1. mysql复制内容到一张新表

    -- 1.复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表 -- 2.只复制表结构到新表 CREATE TABLE 新表 SELECT * FROM 旧表 WH ...

  2. cookie实现访问时间查看

    package day01.cookies; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEn ...

  3. 深入Pulsar Consumer的使用方式&源码分析

    原文链接 1.使用前准备 引入依赖: <dependency> <groupId>org.apache.pulsar</groupId> <artifactI ...

  4. CNN的Pytorch实现(LeNet)

    CNN的Pytorch实现(LeNet)   上次写了一篇CNN的详解,可是累坏了老僧我.写完后拿给朋友看,朋友说你这Pytorch的实现方式对于新人来讲会很不友好,然后反问我说里面所有的细节你都明白 ...

  5. 项目中经常用到的sass语法汇总

    1.定义变量 使用:$(符号定义变量) 注意:使用时要带有'$'符号,定义变量的方式与PHP相同 $变量:数值; $color_r : red; div{ color:$color_r; } 2.if ...

  6. k8s笔记0528-基于KUBERNETES构建企业容器云手动部署集群记录-2

    三.ETCD集群部署 类似于走zookeeper集群分布式协调服务,可做以key v形式存储在ETCD中. 官方链接:https://github.com/coreos/etcd 分布式kv存储,为分 ...

  7. Redis-技术专区-帮从底层彻底吃透AOF技术原理

    AOF持久化方式 AOF持久化方式是将redis的操作日志以追加的方式写入磁盘文件中.AOF持久化是以日志的形式记录服务器所处理的每一个写.删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看 ...

  8. Vue Abp vNext用户登录(Cookie)

    因为Abp vNext没找到Vue的模板,网上也没找到相关vNext的例子,只能自己试着写写,asp.net core abp vue都是刚学不久,所以很粗糙也可能有错误的地方,如果您看到请指正,谢谢 ...

  9. 将dict.define转化成dict.txt

    在使用捷通智能灵云外呼系统V6.1时.需要大量使用到模式码,也就是正则表达式.而老版本365还是使用场景文件. 当要将老版本改编成新版本的时候,需要需要将dict.define文件中的一行行的词条用& ...

  10. 网络前置任务(Pretext task)和下游任务(downstream tasks)

    Pretext task 可以理解为是一种为达到特定训练任务而设计的间接任务. 比如,要训练一个网络来对 ImageNet 分类,可以表达为 $f_{\theta}(x): x \rightarrow ...