人们在解释自身环境时非常糟糕。我们倾向于忽视那些我们不相信的事情,并且对于与自己心智模型不符的任何东西,我们一概视而不见。这也从一定程度上解释了为何我们不能准确地预测实际发生的事情。
根源分析难道一无是处吗?它有许多价值,但它只能帮你回顾过去,可以使用它来解决已经发生的问题,并防止它们再次发生,然而,它不能帮你预测未来的问题。
敏捷软件开发(部分)根植于复杂性理论,只有不断接受失败并从系统中清除问题的根源,才能使软件项目稳步增长并成功执行。这同养儿育女几乎如同一辙。
很多人认为,敏捷宣言是对那些正式的,按部就班的官僚化方法的反击。然而,几乎没有人意识到它也反对软件开发世界中那些不和谐的地方,无纪律的程序员,混乱的流程,低劣的质量产品。
敏捷的基本原则中首先最重要的是人,人的最大价值不在于他们的头脑,而在于交互和合作。敏捷要求不同角色组成跨职能的小团队,并且最好处于同一个房间内。团队获得信任从而可以用他们认为最好的方法去完成工作-前提是他们知道怎么做,并对结果负责。
关注质量是产品成功的关键,所以精益求精在敏捷核心中找到了自己的一席之地。我们可以借助下列实践达到目的:测试驱动开发,code review(可以结对编程实现),定义完成的标准(检查清单),迭代开发,重构(持续改进代码,即使没有需求变化的时候)。涌现式设计的必要,最好的架构不是预先就定义好的(可能有一个基本的形式),它可以在产品开发过程中逐步浮现出来。
敏捷开发团队需要自我激励,重复性劳动会使人缺乏动力,因此每日构建,持续集成,自动化测试需要辅助。而开放的办公环境,信息透明化工具,如大的任务板和燃尽图都是为了促进交流合作激励。
人胜于流程,但这并不意味着流程不重要。它本身就包括许多必要的流程:最小计划(递进式计划),每天面对面的交流(站会)。通过评估可以工作的软件来衡量项目进度(客户签收的功能),定期回顾反思持续改进不断评估调整过程本身。
冲突,内部冲突是复杂系统固有的一个方面,同时也是创新的土壤。对于那些乐于持续改进的人来说,它将是一种巨大的特权。
行动:人,功能,质量,工具,时间,价值,流程,检查你的项目是否都考虑了,是否这7个纬度都是敏捷的,如果不是,你有什么改进计划?
管理3.0就是要确保所有团队成员都能够关心他们的工作,试着每天都让事情变得更好,以及客户能够保持开心。其中管理者的目标就是确保,最终人们可以做好工作而不需要他的帮助。那么管理者就可以去玩玩高尔夫啥的,或者可以把关注点放在新的一群人身上。管理3.0“只是”不断处于变化之中的一些游戏、工具和实践的集合。它是一种看待工作系统的方式,一种思考和行动的方式。另外,管理是所有人的责任,而不仅仅是管理者的。这项工作如此重要,以至于不能仅仅交给管理者。
敏捷的竞争
良性的~竞争~包括:Scrum与XP,Scrum与看板,甚至Scrum与Scrum。一个比较大的竞争对手是精益软件开发。
精益软件开发旗帜鲜明的集中于消除浪费和整体优化,从管理学的角度对敏捷世界做出了巨大的贡献。
软件工艺运动是一个规模略小却颇具实力的竞争对手,其指导思想是软件工艺宣言,该宣言既是对原有敏捷宣言的扩展,也是对它的挑战。
软件工艺宣言
精益求精
作为胸怀大志的软件工匠,我们在亲身实践专业化软件开发,也在帮助他人掌握这一工艺,我们要设立更高的目标。我们认为:
“可以工作的软件”犹不足,尚需精益求精;
“响应变化”犹不足,尚需稳步增加价值;
“个体与交互”犹不足,尚需专家社区;
“客户协作”犹不足,尚需卓有成效的伙伴关系
在追求左项的过程中,我们发现右项亦不可或缺。
个人读书笔记:1~2章感想。印象颇为深刻的是:
1.人的最大价值不在于他的头脑,而在于交互和合作。这是我也常常在经历的,合作的能力也是性格品格的体现。可见,一个人是否有清晰和和谐的交互,合作能力,是尤为重要的,你是团队合作中的麻烦吗?你在交互中被动,表达混乱吗?
2.软件工艺宣言像是一群非常有匠人精神的程序员提出的,致敬。
3.敏捷重新解读的7个原则会让人更好的理解这个伟大的管理方式。它的确是完全革新的管理方式。