《高效程序员的45个习惯 -- 敏捷开发修炼之道》
英文原书名 《Practices of an Agile Developer : Working in the Real World》“选定了要走的路,就是选定了它通往的目的地。” -- Harry Emerson Fosdick (美国基督教现代主义神学家)
“即使你已经在正确的轨道上,但如果只是停止不前,也仍然会被淘汰出局。” -- Will Rogers (美国著名演员)
“百言不如一行,千虑不如一动。”
1、态度决定一切
将注意力集中在处理做事上。
处理问题时要对事不对人:否定他人无助于事;尊重他人,提出疑虑并进行讨论。
2、唯一不变的就是变化
“唯有变化是永恒的” -- 赫拉克利特
3、把握开发节奏
随意安排的工作计划,没有任何规律,让人根本不知道明天会发生什么。
控制时间,保持开发节奏,是为了避免问题堆积,防止所有事情同时发生。
4、让设计指导而不是操纵开发
“当前阶段的设计只是基于你目前对需求的理解,一旦开始编码,一切都会改变。”
设计可以分2个层面:战略与战术。前期的设计属于战略,通常只有在没有深入理解需求的时候需要这样的设计。它应该只描述总体的战略,不应该深入到具体的细节。
“如果你自己都不清楚所谈论的东西,就根本不可能精确的描述它。” -- 约翰.冯.诺依曼
“故 事:在1804年,Lewis和Clark进行了横穿美国的壮举,他们的“设计”就是穿越蛮荒。但是,他们不知道在穿越殖民地时会遇到什么样的问题。他们 只知道自己的目标和约束条件,但是不知道旅途的细节。软件项目的设计也与此类似。在没有穿越殖民地的时候,你不可能知道会出现什么情况。所以,不要事先浪 费时间规划如何徒步穿越河流,只有当你走到河岸边的时候,才能真正评估和规划如何穿越。只有到那时,你才开始真正的战术设计。”
“好的设计应该是正确的,而不是精确的。”
“计划是没有价值的,但计划的过程是必不可少的。” -- 美国总统,艾森豪威尔
5、使用短迭代,增量发布
“软件开发不是精细的制造业,而是创新活动。规划几年之后客户才能真正使用的项目,注定是行不通的。”
软件在被开发出来之前是不确定的,在开发过程总是存在着变化,短迭代可以防止在错误的道路上走的太远,这样可以及时发现错误并进行纠正。
“短迭代让人感觉非常专注且具效率。你能看到一个实际并且确切的目标。严格的最终期限迫使你做出一些艰难的决策,没有遗留下长期悬而未决的问题。”
“如果每个迭代的时间不够用,要么是任务太大,要么是迭代的时间太短。”
6、敏捷协作:定期安排会面时间
“也许你个人很讨厌开会,但是沟通是项目成功的关键。”
立会:站着开的会议。这可以保证会议快速进行,大部分人不喜欢站着进行长时间的谈话。
定期例会的好处:
- 让团队成员知道项目其他部分的进展。
- 帮助团队识别是否在某些事情上进行了重复劳动。
- 鼓励向前的动力:看到比尔报告的进度都在前进,会对彼此形成激励。
7、敏捷协作:架构师必须写代码
“一个设计要解决的是眼前面临的特定问题,随着设计的实现,对问题的理解也会发生改变。设计会随着时间而演进。”
8、敏捷协作:及时通报进展与问题
“接受一个任务,也就意味着做出了要准时交付的承诺。不过,遇到各种问题而导致延迟,这种情况并不少见。如果等到截止时间才发布坏消息,这就等于是为经理和技术主管提供了对你进行微观管理的机会。他们会担心你再次让他们失望,并开始每天多次检查你的工作进度。
及时通报进展与问题,有情况发生时,就不会让别人感到突然,并且他们也很愿意了解目前的进展状况。他们会知道何时应提供帮助,而且你也获得了他们的信任。”
原文:读书笔记:Practices of an Agile Developer - Working in the Real World
相关推荐
### 敏捷开发者的实践 #### 敏捷软件开发概览 敏捷开发是一种以人为本、迭代、增量的方法,用于管理产品开发过程。它强调快速响应变化、交付可用的产品、客户满意度以及持续改进。根据《敏捷开发者实践》这本书的...
A quick summary of what that means in practice and what life on an agile team looks like. It's a team effort.
《Pragmatic Bookshelf.Practices.of.an.Agile.Developer.Working.in.the.Real.World.Mar.2006.pdf》这本书提供了丰富的实例和实用建议,是希望在敏捷环境中提升工作效率和效果的开发者们的宝贵资源。通过实践书中的...
内容简介: 十年来,软件行业发生了翻天覆地的变化。敏捷方法大行其道,测试和测试驱动开发在很多开发人员的工作中扮演着重要的角色。作为一名程序员,你应该培养怎样的素质,方能对多变的环境应对自如,始终立于...
Chapter 4: Fundamentals of Django App Design Chapter 5: Settings and Requirements Files Chapter 6: Model Best Practices Chapter 7: Queries and the Database Layer Chapter 8: Function- and Class-Based ...
Chapter 3 of the Agile Development teaching material, "Software Engineering: A Practitioner's Approach, 7/e" by Roger S. Pressman, delves into the principles and philosophy behind Agile Software ...
Learn the agile philosophy of lean processes, incremental delivery, deep client participation, decentralized authority, and just-in-time planning to bring speed, creativity, empowerment and increased ...
Writing for project leaders, managers, and executives at all levels, Highsmith integrates the best project management, product management, and software development practices into an overall framework ...
Oracle GoldenGate Best Practices: Instantiation from an Oracle Source Database Version 12c Document ID 1276058.1
### 《互连网络的原则与实践》核心知识点详解 #### 一、引言 《互连网络的原则与实践》作为一本权威的计算机网络教材,由经验丰富的领域专家编写而成。本书不仅涵盖了理论基础,还深入探讨了实际设计过程中的各种...
高效程序员的45个习惯 英文完整版 V.Subramaniam, A.Hunt - Practices of an Agile Developer - Working in the Real World. 2006.pdf
互联网络是现代社会计算机系统的重要组成部分,它支撑着信息的快速流动和数据的高效交换。随着计算机系统性能的不断提升和成本的持续降低,互联网络的影响也越来越大。了解互联网络的基本原理与实践,不仅对于学术...
Learn fundamentals of starting or redesigning an InfoSec program Create a base set of policies, standards, and procedures Plan and design incident response, disaster recovery, compliance, and physical...
英文扫描版,在别人的基础上加了目录
### 知识点生成 #### 一、片上网络(NoC)概述 **片上网络(NoC)**作为一种新兴的技术,在计算机体系结构中占据了越来越重要的地位。它是一种用于在单个芯片内部进行通信的设计方法,旨在解决传统总线架构在面对...
This document is intended to help those with a basic knowledge of machine learning get the benefit of best practices in machine learning from around Google. It presents a style for machine learning,...
Establishing a solid foundation of digital design principles An authoritative introduction to basic digital design, Digital Design: Principles and Practices helps readers build a foundational ...