《软件设计的哲学》第三章 工作代码是不够的

简介: 《软件设计的哲学》第三章 工作代码是不够的

这里面讲到了一个很多人都是战术性编程,战术性编程比战略性在不懂技术的管理者眼里开始的编程效率高很多


我以前也觉得公司在初创阶段雇佣一些普通程序员,快速迭代开发出功能,然后赚钱了,再去招牛人重构,之前觉得这个想法还可以


看了这本书后否定了这个想法:

7f41521159d34afba3bac5dbf9f10bcb.png




要考虑的另一件事是,公司成功的最重要因素之一就是工程师的素质。降低开发成本的最佳方法是聘请优秀的工程师:他们的成本不会比普通工程师高很多,但生产率却高得多。但是,最好的工程师对良好的设计深感兴趣。如果您的代码库很残酷,那么单词会变得毫无用处,这将使您难以招募。结果,您最终可能会遇到普通的工程师。这将增加您的未来成本,并可能导致系统结构进一步退化


Facebook 是一个鼓励战术编程的创业公司的例子。多年来,公司的座右铭是“快速行动并打破困境”。鼓励刚大学毕业的新工程师立即深入公司的代码库;工程师在工作的第一周将承诺投入生产是很正常的。从积极的一面来看,Facebook 作为一家赋予员工权力的公司而享有声誉。工程师拥有极大的自由度,并且几乎没有任何规则和限制。



Facebook 作为一家公司已经取得了令人瞩目的成功,但是由于该公司的战术方法,其代码库受到了影响。许多代码不稳定且难以理解,几乎没有注释或测试,并且使用起来很痛苦。随着时间的流逝,该公司意识到其文化是不可持续的。最终,Facebook 改变了座右铭,即“以坚实的基础架构快速移动”,以鼓励其工程师在良好的设计上进行更多的投资。Facebook 是否能够成功清除多年来战术编程中积累的问题还有待观察。



为了公平起见,我应该指出,Facebook 的代码可能并不比初创公司的平均水平差很多。战术编程在初创企业中司空见惯。Facebook 恰好是一个特别明显的例子。



好的设计不是免费的。它必须是您不断投资的东西,这样小问题才不会累积成大问题。幸运的是,好的设计最终会收回成本,而且比您想象的要早。


所以还是好好写代码吧,而不是满足于实现功能上


相关文章
|
2月前
|
测试技术
软件测试概念与基础
软件测试概念与基础
|
2月前
|
SQL 架构师 安全
精简总结:一文说明软件测试基础概念(一)
该内容是关于软件测试的介绍,包括软件测试的基础概念、特点、与开发的区别,以及与调试的差异。文中提到了测试是为了验证软件是否满足用户需求,确保软件质量,并举例说明了日常生活中测试的存在。还讨论了软件测试的不可穷尽性,并列举了软件测试与开发在内容、技能和职业发展路径上的不同。此外,提到了《软件测试的艺术》这本书作为学习资源。内容中包含了两张图片,分别展示了相关概念。
32 0
|
2月前
|
测试技术 网络安全
精简总结:一文说明软件测试基础概念(二)
本文讲述了软件测试人员应具备的素质,包括技能和非技能方面。技能涵盖测试用例设计、编程、快速学习新技术以及业务学习能力。
27 0
|
11月前
|
测试技术
软件测试开发的基本概念
软件测试开发的基本概念
|
9月前
|
敏捷开发 算法 安全
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
|
11月前
|
大数据 测试技术
|
数据可视化
设计国学,软件设计感悟
设计国学,软件设计感悟
|
监控 数据可视化 测试技术
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
217 0
软工导第一节课 计算机软件工程学作一个简短的概述,回顾计算机系统发展简史 软件工程的基本原理和方法有概括的本质的认识,详细讲解生命周期相关知识讲解8种典型的软件过程模型
|
缓存 Java 数据库
详细设计-设计讨论|学习笔记
快速学习详细设计-设计讨论
96 0

热门文章

最新文章