原则 164 方法无法挽救你
THE METHOD WON'T SAVE YOU
大家都听过“方法狂热者”的布道,他们说:“如果你采用我的方法,你的大多数问题都会消失。”很多方法都曾受到这类狂言的影响,例如,在 20 世纪 70 年代和 20 世纪 80 年代的早期,大多数技术的名字里都包含“结构化”(structured),在 20 世纪 80 年代后期和20 世纪 90 年代,大多数技术的名字中都包含“对象”(object)。虽然这两次浪潮都带来了深刻的见解,并带来提升质量的软件开发概念和步骤,但它们并不是万能药。那些在开发高质量软件方面真正优秀方法后依然出色。那些以往表现不佳的组织,在采用最新的方法后仍然表现不佳。
作为一名管理者,要提防那些声称基于新的方法将大大提高质量或生产力的虚假的预言家。采用新的方法并没有错,但一个公司如果过去“失败”过(不论是在生产力还是在质量方面),在寻找解决方案之前,请尝试找出失败的根源。你现在使用的方法,很可能不是问题的根源!
ps:一个测试用例都没有严格分析和执行的团队,也就别指望TDD和DDD能帮到他们了......
原则 131 人是成功的关键
PEOPLE ARE THE KEY TO SUCCESS
具备合适经验、才能、培训的能人,是在预算内按时完成满足用户需求的软件的关键。即使没有足够的工具、语言和流程,有合适的人也会成功。即使有合适的工具、语言和流程,没有合适的人(或者有合适的人,但没有足够的培训或者经验)也很可能会失败。根据构造性成本模型(COCOMO)(见 Boehm, B.,, Englewood Cliffs, N.J.: Prentice Hall, 1984)估算,最优秀的人的效率是普通人的四倍。如果最优秀的人花费四倍的薪水,你可以做到收支平衡,那么雇佣他们是值得的,因为最终你很可能会得到一个更好的产品(见原则 82)。如果他们的花费没有那么多,你降低了成本,还得到了更好的产品。这是双赢。在面试候选人时,记住,人才质量是无法替代的。在面试完两个人后,公司HR经常说,“面试者x比y更好,但是y成本更低”。你不可能有一个全明星阵容的组织,但是,除非你现在拥有的超级明星过多,否则雇佣这些明星吧!
类似的原则还有很多,以上内容摘自《201 Principles of Software Development》中文版,书名是《软件开发的201个原则》。
给中国软件工程师的寄语
(节选)
致我的兄弟姐妹们:
和你们一样,我的职业生涯始于软件工程师,那是1975年,将近半个世纪之前。我认为我们在时间和国家方面的差异相当微不足道。所以,我像和我的朋友、我的同龄人一样与你交谈。
26 年后的今天,当我审视201 Principles of Software Development中的这201 条原则时,我很高兴地宣告,几乎所有的原则都经受住了时间的考验,就像物理学中的基本原理一样。
当你做软件架构设计或“抛出代码”时,不要忽视真正重要的事情。那是什么呢?是你的正直,这是你对自己的看法。如果有人要求你做一些你知道是错误的事情,你有义务阻止它。
软件工程是一个美妙的职业,它使你能够进入数百个以软件为支柱的专业领域。
“生生不息,繁荣昌盛。”好好享受!
201 Principles of Software Development 作者 Alan M.Davis
2021年9月
全书共9 章,第1章为引言,后面8章将201个软件工程的原则划分为8个大的类别:一般原则、需求工程原则、设计原则、编码原则、测试原则、管理原则、产品保证原则和演变原则。甚至你可以在空白处写上简单的,聪明的你认为的“原则”。
互联网大厂技术学院【指定用书】
掌握科学的方法,效率提高不止100%。
百度技术委员会理事长陈尚义说,
这本书的中文版出版对于提升国内软件工程师的素养、学习国外先进的软件工程理念,必将做出积极的贡献。
清华大学计算机系博士生导师裴丹说,
这样一本书,能够让软件工程师在实践过程中时不时拿出来翻阅(而不是去翻查大量大部头的图书或课件),一方面检验自己前一阶段的实践是否遵循或违背了软件工程的重要原则,另一方面为下一阶段的实践提供方向性的指导。
中国移动云能力中心首席科学家钱岭说,
未来,软件新技术、新架构和新业务还会不断涌现,软件工程仍然会变革,但不变的是Alan 这本书中介绍的201 个原则。
电商平台,快快扫码抢购吧!
福利活动,截止12月18日20:00,在本文评论获赞top3的同学,获得技术琐话联合出版社赠书一册。
往期推荐:
一个甲方技术人员眼里的中台
前百度COO,前微软副总裁—陆奇:给20-40岁年轻人的成长建议
Shit Happens: log4j 0day灾难始末
Docker员工自述:我们为什么“输”给了K8s?
……
技术琐话
以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。