有效软件开发的25条军规

今天笔者在外文的技术网站上看到了一个非常亮眼的建议合集,整理一下姑且起名叫有效软件开发的25条军规,下面和大家共同来赏析一下。

总则:不建立尊重和信任的团队氛围,就不可能有一支有战斗力的队伍。

1.团队的存在意见在于为程序员服务,团队负责人要将以人为本永远排在第一位。

2.最好的工作方式是协作,但吵架不是协作。单打独斗的孤胆英雄就算技术水平再高,也永远无法达到团体作战的水平。当客户、业务人员和程序员精诚合作时,我们会获得最佳结果。

3.僵化和敏捷是互斥的,团队负责人需要有随时欢迎更改组织、流程、产品、计划的胸怀与魄力。

4.结果比过程更重要,必须随时有人关注低于预期的结果,并在过程中努力加以改进。

5.敏捷协作工具有独特的关注点,有时与项目开发的关注点并不关联,高水平的团队领导必须在敏捷与开发可能产生的矛盾之间找到平衡点。

6.团队的工作、组织方式都是团队互联系统的一部分。如果没有改变一切的决心,你就无法改变任何事情。不能妄想通过修修补补来提升整个系统的效率。

7.最有效的组织是学习型组织。注意学习不仅仅是一项闲暇时用来打发时间的手段,它是工作的一部分,一个没有学习能力的团队最终都会走向灭亡。

8.改进是一项持续而运动整风式的工作。当出现问题时,我们会停下来想办法改进我们的流程,以保证问题就不会再次发生。注意做改进时要关注整个体系,而不是个人。有时,停下手头的工作来进行反思、改进,反而磨刀不误砍柴工。

9.简洁非常重要,从组织结构、流程到编写代码全部适用于简洁的原则。

10.一切都是迭代。我们期望改变甚至丢弃我们构建的一切,从产品到组织和流程,记住软件行业推倒重来的成本远远低于传统制造业,没有什么是不能失败的,也没有什么是能试错的。

11.团队必须要有宏大的目标与理想,比如致力于让客户的生活更美好,让客户的工作更轻松。不要想着一口吃个胖子,直接向客户提供一个完美的产品,要通过持续的交付来做到完美。

12.要从整体上思考,团队的目标是完整的产品,而不是项目。如果没有项目,也就不需要项目管理。

13.有效软件开发的工作核心是持续快速反馈。我们做一个小改动,将结果交付给客户,获得反馈,然后根据客户反馈调整我们的工作。这个周期尽可能短——几分钟、几小时,偶尔几天——而不是几周。这种检查和调整循环适用于过程改进和产品开发。

14.质量和速度的权衡中,永远都要以质量为先,不容商量。与提供一个满是缺陷的产品相比,延期交付的损失微不足道。

15.最好的计划是基于整体视角的战略性计划,而不是临时抱佛脚的战术性计划。

16.预测是不靠谱的。记住程序员估计的工期不是承诺。

17.我们衡量产品优劣的唯一标准是有没有将价值高的东西交付给客户。

18.如果团队中有纯粹的管理层,那么请管理层一定要管住自己的嘴,不要随便指手划脚,仅提供战略指导、支持并描述清楚需求就行了,具体技术团队的工作分派不要参与。

19.为程序员提供他们需要的环境和支持,然后躲得远远的。团队负责人要相信自治团队能够控制他们的工作方式和工作环境。优秀的团队都是自我组织和自我管理的,负责人要做的就是让优秀的人,能在一起共事。

20.团队自治并不意味着团队成员不相互协调,也不与更上层的组织进行协调。围绕战略目标到实施细节将所有方面信息都对齐,至关重要。

21.最好的团队是稳定的。新组成团队无法完成什么挑战性很大的工作。

22.强依赖于其他团队工作成果的组织根本无法做到敏捷,所以团队负责人要特别警惕那些没有其它人的支持我们无法完全工作的言论。

23.程序员的每一天都必须精神焕发,并且能够做好自己的工作。

24.奖励和惩罚是团队运营过程中必不可少的驱动因素。

25.沟通是达成有效结果的核心。沟通效率随着距离的接近程度和通信工具的提升而提高。当然面对面交流总是最好的,所以我们有时会尽可能拉近团队成员之间的物理距离。译者简介:马超,CSDN博客专家,阿里云MVP、华为云MVP,华为2020年技术社区开发者之星。

中文来源:有效软件开发的25条军规 (qq.com)

原文链接:https://holub.com/heuristics-for-effective-software-development-a-continuously-evolving-list/