持续改进-《高效程序员的45个习惯》读后感

简介: 原书标题为《Practices of An Agile Developer》。中文名为《高效程序员的45个习惯-敏捷开发修炼之道》。敏捷这个词已经烂大街了,关于敏捷的书籍俯拾皆是。很多人是敏捷的狂热粉丝,而另一些人却讨厌敏捷,认为只是个噱头。

原书标题为《Practices of An Agile Developer》。中文名为《高效程序员的45个习惯-敏捷开发修炼之道》。敏捷这个词已经烂大街了,关于敏捷的书籍俯拾皆是。很多人是敏捷的狂热粉丝,而另一些人却讨厌敏捷,认为只是个噱头。我觉得很可能的原因之一是敏捷这个名字没起好。它的原名为“轻量型软件开发过程”(”lightweight process”),但后来阴差阳错成了agile(敏捷)。

既然书名是敏捷开发者的实践,那么就必须认识敏捷。只有深入的理解了这些实践的来源和目的,才能更好的践行甚至改进实践。

敏捷可以用一句话来概括:敏捷开发就是在一个高度协作的环境中,不断的使用反馈进行自我调整和完善,最终交付用户想要的软件。

从这句话中可以得出很多东西。

首先,项目适不适合敏捷有两个先决条件:

  1. 项目是以价值为导向的。也就是整个团队有一个总体一致的目标,那就是产出高质量、高价值、符合用户需求的软件。以价值为导向,看似简单,实则很难,甚至某些时候要要求公司的组织架构做出一定的调整。试想在一个等级森严、官僚化严重、各种无谓的考评泛滥的公司,有多少人能静下心来好好的搞开发,搞产品?只有打造一个相对扁平的组织,给予充分的信任和自由度,才有利于敏捷的实施。这反过来又要求团队中的每个人有高度的自律性。

  2. 团队能够达到高度协作。必须能够保证团队中的成员能够流畅的交流。如果在团队中大搞一言堂,信息不透明,很容易打击团队人员工作的积极性,致使团队分崩离析。另外,客户也属于团队中的一员。我们做出的产品最终是给客户看的,如果客户不能保证与团队紧密的合作,那么很容易使产品偏离客户的期望,最终交付失败。

再次,可以看到敏捷的基础:反馈。

一旦你意识到走错了路方向,就要立即做出决策。举个例子,办公室另个团队给我们分享了这样一个故事。在项目刚开始时他们设计了叫做CoreService的类来封装所有的服务。随着项目的进行,CoreService类由于需要处理的服务越来越多,导致类越来越庞大。每个人在修改这个类时,写单元测试要建立对N个服务的mock,苦不堪言。问题在于,没人及时的提出这个bad smell,导致了人们花费了大量的时间来维护它。

这说明了及时反馈的重要性。反馈包含提出反馈和接受反馈。

提出反馈需要勇气和时机。要勇敢的提出自己的想法,这既需要自身具有对项目负责的精神,还要团队提供安全的环境。要及时的指出项目中不好的地方,千里之堤,毁于蚁穴。大灾难是逐步演化而来的,项目中切忌温水煮青蛙。

接受反馈需要气度和行动。这就要求团队成员做事要有专业的态度,对事不对人,重结果轻过程。同时要拿出具体的行动,否则很容易打击积极性。

其次,可以看到敏捷的精髓:拥抱变化。

软件开发行业是一个不停发展和永远变化的领域。现在没有将来也不会有一个人能够了解你的项目的方方面面。

变化无处不在,这就要求我们不断的学习。而迭代和增量式的学习则不失为一个好办法。一个学习型的团队才是较好的团队。当然,在学习的同时,你也要懂得丢弃。打破旧习惯很难,更难的是自己还没意识到这个问题。丢弃的第一步,首先是意识到你还在使用过时的方法,这也是最难的部分。

同时,变化意味着我们要主动应对。德国陆军元帅Helmuth von Moltke说过一句话“没有任何计划在遇敌后还能继续执行。”在软件开发中,我们可以这样理解,任何设计在开发中只是一个起点,它如何你的代码一样,会不停地进一步发展和提炼。

最后,敏捷的目的:交付用户想要的软件。

试想客户将需求交付给你,要你几年后交付系统。然后,你基于这些需求构建了系统并按时交付。客户看了软件以后连声称赞。从此你多了一个忠实客户,接着开心的投入到下个项目中。请问这样的事情在你的项目中发生过吗?

通常情况是客户看到后暴跳如雷,这根本不是我想要的。这是因为用户的需要、技术和我们对需求的理解,都会随着时间的推移而变化。

那么,如何解决这个问题那?方法之一就是采用敏捷的迭代式开发。每个迭代至少有两个活动不可或缺。一个是展示会议(show case),向客户展示目前的项目进展,已完成的功能,从而收集客户的反馈,即时对产品的方向做出调整。另一个是回顾会议(retro)。回顾会议则是提出反馈的一个好时机。通过回顾会议分析出这个迭代中的做的好的地方和不好的地方,并提出具体的改进行动。

要将团队带入新的领域,必须首先要以身作则。我们需要的是领导者,而不是管理者。无论你目前的项目是否是敏捷项目,这本书中你都可以找到能够借鉴和提高的地方。敏捷中的持续改进不仅局限于项目开发,其实更适合于个人。通过持续改进自己的习惯、处事方法,保持一颗好奇心,勇敢的尝试未知领域,只要自己能力提高了,何惧其他?

改变从自身做起,不能自暴自弃,而要奋起直追。

相关文章
|
1月前
|
弹性计算 Java 程序员
推荐程序员必知的四大神级学习网站
今天给大家整理一些小编经常学习和访问的学习网站,供大家参考学习。
|
1月前
|
机器人 程序员 C++
Scratch3.0——助力新进程序员理解程序(难度案例一、节奏大师)
Scratch3.0——助力新进程序员理解程序(难度案例一、节奏大师)
69 0
|
16天前
|
机器学习/深度学习 分布式计算 算法
【活动】程序员的核心职业素养:技术与人文并重的探索之旅
在数字化浪潮席卷全球的今天,程序员作为构建未来世界的“魔法师”,其职业素养不仅关乎代码的优美与效率,更深层次地体现在对技术的持续追求、团队合作的能力、解决问题的创新思维以及对社会责任的担当上。本文将探讨我认为对于程序员最为重要的几种职业素养,并结合实际案例,分享我在职业生涯中的体会与思考。
29 4
|
1月前
|
安全 开发者
这些职场潜规则帮你做高效技术人
作者是一个从一线技术人摸爬滚打一步步成长起来的技术管理者,也算是慢慢积累了一些做事和管理的经验心得,三年的管理者快照能侧面佐证作者通过学习和实践从管理小白到逐渐摸到了一些管理门道的自我修炼之路是怎么走过来的。
|
1月前
人生没有捷径,专注做好一件事就是捷径——《元智慧》读后
人生没有捷径,专注做好一件事就是捷径——《元智慧》读后
17 0
|
前端开发 程序员 开发者
开发者要想走更好的出路必须选全栈工程师这条路吗?
虽然说“技多不压身”,“术业有专攻”,但是作为程序员,尤其是做业务场景的开发者来说,并不是会的面越广越好,而且现在的技术迭代速度太快,不管是前端领域还是后端领域,技术栈或者技术框架更新迭代的周期越来越短、越来越快,学习成本越来越大,尤其是要做资深的全栈工程师,需要学的知识是非常的多,而且还需要各个方面的时间沉淀,考虑到人的精力会随着年龄的增长而递减,成反比例,所以虽然全栈工程师有着丰富的工作从业经验和经历,但是如果想要具备各个方面都差不多,难度是很大的。
172 1
开发者要想走更好的出路必须选全栈工程师这条路吗?
|
安全 算法 程序员
高效能程序员的修炼札记:安全基础,保护用户数据
高效能程序员的修炼札记:安全基础,保护用户数据
125 0
经验分享:5个可以轻松实践的高效工作秘诀
工作产出 = 单位时间产能 × 有效工作时间,本篇文章介绍了如何提高工作效率,希望每个人都能找到属于自己的高效之路。
1095 0
经验分享:5个可以轻松实践的高效工作秘诀
|
开发者 前端开发 运维
据说搞算法的在尝试让影视后期人员“下岗”| 开发者必读(038期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
1464 0
高效职业发展的七个习惯
静下心来对照自身,体验一些常讲常新的道理,建立一些实实在在的习惯,最后你只需做一件事:等待晋升的好消息。   Elena Gong   经理人要获得更好的职业机会,在职业发展上持续前进,除了需要不断学习来提高相关的知识和技能之外,还需要培养以下七个习惯:   一、充分地认识自我   一个人能否取得事业上的成功,关键在于是否能准确识别并充分发挥自身的优势。
1936 0