Daniel-Journey Daily Dose-2010/2/18
敏捷
- 让整个小组参与。
- 在不同层次上进行规划。
- 使用不同度量单位,让对规模和持续时间的估计保持独立。
- 用功能或者日期来体现不确定性。
- 经常重规划。
- 跟踪进度并沟通
- 承认学习的重要性。
- 规划具有适当规模的功能。
- 确定功能优先级。
- 把估计和计划建立在事实上
- 保留一些松弛度。
- 通过前瞻规划协调做个小组。
- 缺乏技术实践:Scrum是一个项目管理框架,在技术方面没给任何建议。Bob建议团队“需要从其他诸如XP的方法中借鉴技术实践。这套技术实践可能包括:TDD、持续集成、验收测试、结对编程、重构。”
- 30天的冲刺周期太长:多数讲师现在建议冲刺周期1-2周,大多数团队采用的是2周。
- Scrum教练有时变成了项目经理:有些Scrum教练把Scrum当作微管理和控制的一种形式。“这不是Scrum固有的问题,而是Scrum发展中遇到的问题。或者这要怪‘master’这个单词了。”
- 对产品Backlog的指导太少:“经过多年实践,我们知道了backlogs有很多分层次的实体,包括史诗、主题、故事等等。我们学会了怎么对它们估计;学会了怎么把高层次的实体拆解成低层次:史诗->主题->故事->任务。”
- Scrum暗中包含反管理:“Scrum过度强调了团队自管理的角色。自组织和自管理的团队本身是好的,但是具有局限性…Scrum的描述并没有给与很好的平衡。”
- 自动化测试:没有高质量的自动化测试,很难以短的迭代周期工作,很难知道故事是否真的做完了。
- 多团队:Scrum和通用的敏捷方法很少谈及怎样扩展,虽然很多实践者有一些想法,但是还没有达成广泛的一致。
- Pair Programming
- Daily Scrum/Standing Meeting
- Kanban/Burn Down Charts
- Test First Development
OOD & OOP
Composition versus Inheritance
Programming to an Interface, Not an Implementation
Creational Patterns Considered Obsolete
Inversion of Control Containers
Composition Realized
[Inheritance] can cause problems when you’re trying to reuse a subclass. Should any aspect of the inherited implementation not be appropriate for new problem domains, the parent class must be rewritten or replaced by something more appropriate. This dependency limits flexibility and ultimately reusability.Object composition is defined dynamically at run-time (at startup, config-time in most IoC containers –Chad) through objects acquiring references to other objects. Composition requires objects to respect each others’ interfaces, which in turn requires carefully designed interfaces that don’t stop you from using one object with many others. But there is a payoff. Because objects are accessed solely through their interfaces, we don’t break encapsulation. Any object can be replaced at run-time by another as long as it has the same type. Moreover, because an object’s implementation will be written in terms of object interfaces, there are substantially fewer implementation dependencies (!!! Very important –Chad)
Object composition has another effect on system design. Favoring object composition over class inheritance helps you keep each class encapsulated and focused on one task. Your classes and class hierarchies will remain small and will be less likely to grow into unmanageable monsters. On the other hand, a design based on object composition will have more objects (if fewer classes), and the system’s behavior will depend on their interrelationships instead of being defined in one class (configured and managed by the IoC container –Chad).
其他
看似普通的Tag其实有着丰富的哲学含义
