在从事软件开发若干年之后,我已经对“软件应该如何设计”有些心得。实际上,我有了这样一个结论:所有的事情最后都浓缩成10个原则,如果我们很好地执行这些原则,任何软件开发都应该会取得成功。
0. 客户至上
“如果我们没有关注客户……其他人将会取代我们。”
从客户的角度出发,客户首先会把焦点集中在产品开发的真正价值,其他方面(例如概念、需求、技术等等)在项目中是次要的。
不关注客户,就是程序员常犯的5个非技术性错误的其中之一。
1. 代码质量
即使代码质量是一些非常主观性的东西,(甚至有人说所有的代码都有问题),它却影响着很多重要的方面,比如:如何去维护应用程序,或者如何去带一个新手程序员。
在我看来,代码质量的指标在于:简单性、可读性、健壮性和可测试性。其他特性,例如外观或者可扩展性,如果没有要求的话,在你的应用程序中可以灵活设计。
2. 授权
软件开发过程中最重要的资源是人力,而非技术。人力决定产品的好坏,但他们需要得到授权。
授权是一个鼓励开发者积极做事和制定决策的过程。一些高效的机构的授权体现为:指导\配合或者委派。不知你是否也有过和Derek相同的经历,每隔5分钟就有员工跑过来向他请示这个和那个问题?如果有,可以通过《管理者的困境:放权或者崩溃》这篇文章看看Derek如何解决这个问题的。
3. 持续集成
从我的经验看来,集成是软件开发的主要问题。在项目后期或者大型功能模块完成后,等着集成是一个令人纠结的过程。
持续的集成是保证每部分委托的代码在系统中自动集成的过程。请记住,持续集成优先于持续编译。
Martin Fowler的这篇文章是网上关于持续集成的最优秀的参考文献之一。
4. 迭代
迭代提供了持续的反馈信息。持续反馈很重要,因为它降低了软件开发的不稳定性。
虽然迭代经常与敏捷方法有关系,不过有其他方法例如RUP,也使用迭代,他们却不是敏捷方法家族中的一员,记住这一点很重要。
5. 自动化测试
允许重构和递归,给开发者带来自信,如果得到有效贯彻的话,会提高最终产品的正确性。对于自动化测试,你可以考虑与测试有关的一些情况和如何编写一个良好测试组件的建议。
6. 重构
不管你如何关注编码,在你迈出第一步的时候,你将会走错路。重构是我们用来保持代码修改的做法,以满足系统说明的必要更迭。
7. 非正式架构
前期的大型设计,除非你是NASA,能够把项目50-60%的时间花在这上面,否则这完全是浪费,毫无准备去编码情形也一样。非正式架构是一种折衷解决方案,它在项目发展的基础上进行讨论,并存留于文件,留言板或者类似的物件之中。
8. 沟通
软件开发只与沟通有关。客户向软件开发团队阐述他想要达到的目标,以便于软件开发团队能通过编码形式向计算机解释。
9. 避免浪费
浪费是软件开发过程的主要生产力杀手之一。毫无必要的会议、毫无必要的要求、毫无必要的过程和毫无必要的文件成为最常见和最危险的浪费。
译文出处:伯乐在线- 职场博客 - 程序员
译文链接:http://www.jobbole.com/entry.php/996
原文:Alberto Gutierrez 翻译:敏捷翻译 - 李盛晖
如需转载,但请注明原文/译文出处、译文超链接和译者等信息,否则视为侵权,谢谢合作!
分享到:
相关推荐
在原则4-10中,作者讨论了软件开发的各个方面,包括高质量软件的实现、客户沟通、开发者的激励、抛弃的准备、正确的原型开发、渐进的系统扩展等。这些原则为软件开发的各个阶段提供了指导和参考。 在原则11-15中,...
### 软件开发的201个原则 #### 一、概述 《软件开发的201个原则》是一本全面阐述软件开发过程中应当遵循的原则性指导书籍。该书内容丰富,覆盖了从项目启动到交付的各个阶段,旨在帮助软件开发团队提高产品质量、...
1. **敏捷开发原则**:强调快速响应变化,通过迭代和增量方式交付软件,以适应需求的变化和市场的不确定性。 2. **YAGNI(你不会需要它)原则**:避免过度设计,只开发当前真正需要的功能,以减少工作量和维护成本...
10. **DRY(Don't Repeat Yourself)原则** - 不要重复代码。相同的逻辑或数据应在一处定义,以避免代码冗余和潜在的错误。 11. **GRASP(General Responsibility Assignment Software Principles)原则** - 包括...
《敏捷软件开发原则、模式与实践》一书是由著名软件开发专家、软件工程大师Robert C. Martin所著。这本书自出版以来,就被视为敏捷开发领域内的经典之作,对于软件开发人员、项目经理以及软件项目领导者来说,它提供...
本文将分享10位顶级PHP大师的开发原则,旨在帮助开发者遵循最佳实践,提升代码质量和效率。 1. **适时使用PHP - Rasmus Lerdorf** PHP的创始人Rasmus Lerdorf强调,PHP是为了解决Web开发的实际问题而诞生的。他...
### 敏捷开发原则详解 #### 一、引言 敏捷开发是一种强调适应性和灵活性的软件开发方法论,旨在提高团队的工作效率并确保项目的成功。本文将深入探讨敏捷开发的核心原则,包括其背景、核心价值观以及十二项指导原则...
书中详细解释了12条敏捷开发原则,如尽早并持续交付有价值的软件,欢迎改变需求,通过持续集成提高可部署性,以及团队自我组织等。这些原则为实践敏捷提供了指导。 3. **Scrum框架**: 敏捷实践中,Scrum是最广泛...
云原生应用开发原则与最佳实践指南 云原生应用开发原则与最佳实践指南是云原生应用开发...云原生应用开发原则与最佳实践指南为开发者提供了一个详细的指南,使得他们可以开发更加可靠、可扩展、易于维护的云原生应用。
第10章 Liskov替换原则(LSP) 第11章 依赖倒置原则(DIP) 第12章 接口隔离原则(ISP) 第三部分 薪水支付案例研究 第13章 COMMAND模式和ACTIVE OBJECT模式 第14章 TEMPLATE METHOD模式和STRATEGY模式:继承与委托 第15...
2. 整体开发原则:敏捷开发强调整个团队的协同工作,包括开发者、测试人员、产品经理等,以实现高效协作。团队成员共同负责产品的质量,确保每个迭代都能产出可用的软件。 3. 迭代与增量开发:敏捷方法采用短周期的...
我自己制定的研发部开发原则和开发规范,参考互联网上的经验,主要还是来自己的开发和管理经验。第十三页是脑抽的表现,请自行删除。
第十一章 依赖倒置原则(DIP) 11.1 依赖倒置原则(DIP) 11.2 层次化 11.3 一个简单的例子 11.4 熔炉示例 11.5 结论 参考文献 第十二章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 接口...
本书中,享誉全球的软件开发专家和软件工程大师RobertC.Martin深入而生动地使用真实案例讲解了面向对象基本原则、重要的设计模式、UML和敏捷实践等程序员必备的知识。 本书于2003年荣获第13届Jolt大奖,是C++和Java...
以上六个原则是硬件开发人员在设计电路板布线时必须遵循的基本准则,通过遵循这些原则,可以提高电路板的性能,减少噪声干扰,并确保设计的可制造性。同时,利用像PADS的PowerPCB这样的专业软件,可以更高效地实现...
GameMaker Studio开发:教育游戏设计原则_(10).案例研究:成功的教育游戏分析.docx GameMaker Studio开发:教育游戏设计原则_(11).常用游戏教育理论与实践.docx GameMaker Studio开发:教育游戏设计原则_(12)....
Unity引擎开发:教育游戏设计原则_(10).案例分析:成功的教育游戏设计.docx Unity引擎开发:教育游戏设计原则_(11).虚拟现实(VR)与增强现实(AR)在教育游戏中的应用.docx Unity引擎开发:教育游戏设计原则_(12)...
《敏捷软件开发:原则、模式与实践》是Robert C.Martin(通常被称为Uncle Bob)的一部经典著作,深入探讨了软件开发领域的敏捷方法。这本书是面向软件开发人员、项目经理和软件项目领导们的,旨在帮助他们应对软件...
《敏捷软件开发:原则、模式与实践》是敏捷开发领域的一部经典著作,由Robert C. Martin撰写。这本书深入探讨了敏捷开发的核心理念、实践方法以及相关的设计模式,旨在帮助软件开发团队提升效率,增强软件产品的质量...