硝烟中的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. servlet初识servletConfig

    package day09; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; ...

  2. oracle中常用函数

    1.oracle中 trunc 是截取的函数,用在日期类型上,就是截取到的日或时间. select trunc(sysdate) from dual   默认是截取系统日期到日,得到 2012-12- ...

  3. rollup 使用babel7版本的插件rollup-plugin-babel,rollup-plugin-babel使用报错解决办法。

    最近在研究rollup,想吐槽下rollup的官方文档写的真的太简单了,而且照着文档一步步来还报错,说明文档年代有点久远啊... 照着文档使用rollup-plugin-babel报错,首先打开rol ...

  4. Java基础和常用框架的面试题

    前言 最近学校也催着找工作了,于是刷了一些面试题,学习了几篇大佬优秀的博客,总结了一些自认为重要的知识点:听不少职场前辈说,对于应届毕业生,面试时只要能说到核心重要的点,围绕这个点说一些自己的看法,面 ...

  5. PyQt4制作GUI

    时间:2018-11-30 记录:byzqy 标题:PyQt4入门学习笔记(一) 地址:https://www.cnblogs.com/chuxiuhong/p/5865201.html 标题:PyQ ...

  6. MySQL存储结构及SQL分类

    MySQL目录结构 bin -- mysql执行程序 docs -- 文档 share - 各国编码信息 data -- 存放mysql 数据文件 * 每个数据库 创建一个同名文件夹,.frm 存放t ...

  7. ELK数据迁移,ES快照备份迁移

    通过curl命令或者kibana快照备份,恢复的方式进行数据迁移 环境介绍 之前创建的ELK 因为VPC环境的问题,需要对ELK从新部署,但是还需要保留现有的数据,于是便有了这篇文档. 10.0.20 ...

  8. git01_常用命令

    git与github介绍 Git是什么 Git是一个开源的[分布式][版本控制系统],用于敏捷高效地处理任何或小或大的项目 版本控制器 CVS/SVN/Git SVN 客户端/服务器 GIT 客户端/ ...

  9. Djangoform组件——ModelForm的基本使用

    from django.contrib import admin from django.urls import path from app01 import views urlpatterns = ...

  10. K8S集群架构的组件组成

    1.Master--主控节点 (1)apiserver:集群统一入口,以restful的方式,交给etcd存储 (2)scheduler:节点调度,选择node节点应用部署 (3)controller ...