【人月神话】01 人月神话

RDMA性能调优实战:如何用ib_*命令榨干你的Mellanox网卡带宽? 本文深入探讨了如何利用ib_*命令工具集对RDMA网络进行深度性能调优,以充分释放Mellanox网卡的带宽潜力。文章从理解Send/Write/Read三种核心通信原语的差异入手,逐步指导读者通过调整消息大小、队列深度、内联数据等关键参数,并结合系统级的NUMA绑定、中断亲和性等优化策略,实现从基准测试到逼近硬件极限的性能提升。 阅读详情

在这里插入图片描述
这部写于1974年的软件工程管理经典著作,至今已有43年历史。但是可惜的是,这样的著作至今少之又少,今天我们重温这部经典。或许它已成为一个时代,但依然给当下人之深思。—imagineXie
一、焦油坑

编程系统产品的演进:
这里写图片描述

  • 程序要转变成编程产品,可以被任何人运行、测试、修复和扩展的程序,在多种平台上运行,程序必须要按照普遍认可的风格来编写,特别是输入的范围和形式必须广泛地适用于所有可以合理使用的基本算法。
  • 程序要转变成编程系统中的一个构建单元,程序必须按照一定的要求编制,使输入和输出在语法和语义上与精确定义的接口一致。程序还需要与其他系统构件单元一道,以任何能想象到的组合进行测试。
  • 编程系统产品,是真正有用的产品,是大多数系统开发的目标。

现实中,很少人类活动要求完美,所以人类对一种追求完美的方式本来就不太习惯。
所以,学习编程最困难的部分,是将做事的方式向追求完美的方向调整。

产品开发所基于的技术在不断地进步。一旦设计被冻结,在概念上就已经开始陈旧了。不过,实际产品需要一步一步按阶段实现。实现落后与否的判断应根据其他已有的系统,而不是未实现的概念。因此,我们所面临的挑战和任务是在实际的进度和有效的资源范围内,寻找解决实际问题的切实可行方案。

编程,是一个许多人痛苦挣扎的焦油坑以及一种乐趣和苦恼共存的创造性活动。对于许多人而言,其中的快乐远远大于苦恼。

二、人月神话

乐观主义

所有的编程人员都是乐观主义者。你总能看到无论是什么样的程序,结果在年轻人(因为程序员更加年轻)看来都是毋庸置疑的:“这次它肯定会运行”或者“我刚刚找出了最后一个错误。”
所以系统编程的进度安排背后的第一个错误假设是:一切都将运作良好,每一项任务仅花费它所“应该”花费的时间。然而,这种乐观主义应该受到慎重分析。

是什么造成这样的乐观主义的呢?在许多创造性活动中,实施的介质往往很难掌握。例如木头切割、上油漆、电气接线等。这些难以掌握的介质限制了思路的表达,对现实造成了许多预料之外的困难。然而,遇到这样的困难,我们总是倾向于去责怪哪些介质,因为他们不顺应“我们”设定的思路。

计算机编程是一种基于容易掌握的介质,编程人员通过纯粹的思维活动来开发程序。正是由于这样的介质易于驾驭,程序员总会期待在实现过程中不会碰到困难,从而造成乐观主义的弥漫。然而,你总会发现bug,所以,这样的乐观主义并非应该在程序员看来是理所应单的。

人月

人月是一种在估计和进度安排中使用的工作单位。如图,如果你认为人员数量的增加可以替代时间的减少,那么这将是一种危险和带有欺骗性的神话。
这里写图片描述
当任务由于次序上的限制不能分解时,人力的添加对进度没有帮助。就如一位母亲,孕育一个生命需要10个月。这和许多软件开发工作相类似。

软件开发本质上是一项系统工作,其中包含的实践,沟通,交流的工作量非常大,它会很快消耗任务分解所节省下来的个人时间。从而,添加更多的人生,实际上是延长了而不是缩短了时间进度。

系统测试

由于我们的乐观主义,通常实际上出现的缺陷数量比预计的要多得多。因此,系统测试的时间安排往往成为早期进度策划师非常重要的环节。你可以想象,直到接近项目的发布日期才有人发现进度上的问题,这样的坏消息通常是没有任何预兆的。
所以,从传统项目进度安排的研究发现,很少有项目允许为测试分配一半的时间。

空泛的估算

为了满足顾客期望的日期而造成的不合理进度安排,在软件领域中比其他工程领域要普遍的多。加上非阶段化方法的采用,少的可怜的数据支持,有时还要凭借项目经理的直觉,这样的方式将很难产出生产有力的、看似可靠的和规避风险的估计。

那么有什么解决方案呢?

  • 开发并推行生产率图表、缺陷率图表、估算规则等等;
  • 在基于可靠基础的估算出现之前,项目经理需要挺直腰杆,坚持他们的估计,确信自己的经验和直觉总比从期望派生出的结果要强的多。

项目的时间依赖于顺序上的限制,人员的最大数量依赖于独立子任务的数量。在众多软件项目中,缺乏合理的进度安排是造成项目滞后的最主要原因,它比其他所有因素加起来的影响还要大。

miniDP与DP管脚定义差异详解及设计避坑指南 本文详细解析了Mini DisplayPort与标准DisplayPort接口在管脚定义上的核心差异,通过对比表格直观展示了两者20针脚的不同排列方式,特别是高速差分信号线的分布。文章结合真实设计案例,为硬件工程师提供了从原理图设计、PCB布局到信号完整性考量及故障排查的完整避坑指南,强调绝不能将两者视为简单的物理缩小版。 阅读详情

相关推荐

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1011

《人月神话》——The Mythical Man-Month 读书笔记

《人月神话》,畅销40年+,软件开发——项目管理必读之书。

PrettyEagle的博客 3574

四、zabbix7.0推送告警至钉钉webhook机器人

2、钉钉的webhook是有安全要求的,我采用的是ip的方式,我的zabbix服务器在内网,我的网络出口有多个固定公网ip,所以这样做省事,其他方式也可以你自己考虑。下图是webhook机器人的配置。这一步,参数里面默认的跟我下图里不一样的,按我下图修改。Key是你的webhook机器人地址里的access_token=后面的内容。整个逻辑就是告警动作匹配告警媒介与用户,然后进行告警的发送。1、zabbix服务器能够访问钉钉的服务器,具体说是能访问。二、zabbix7配置报警媒介以及消息模板配置。

m0_74823715的博客 1293

重读《人月神话》(3)- 什么是人月神话

理想情况下人员数量与时间消耗之间的关系,即随着投入人力的增加,项目所需时间呈现递减趋势,这在割小麦或收获棉花的工作中是可行的;在本章中作者揭示了这种想法的误区。随着项目的推进,外部环境的变化可能会要求计划进行相应的调整,这就需要管理者具备灵活应变的能力,及时作出必要的修正以保证项目顺利进行。在单纯的数字上,这个等式是成立的,但有点软件开发常识的人都知道这个等式是不成立的,因为有太多不确定的因素在公式的背后。当发现进度落后时,通常的做法是增加更多的人力,然而,如前所述,这并不总是最有效的解决方案。

2404_87526689的博客 3469

ETL第八章无人售货机零售项目实践

ETL实战项目——无人售货机

m0_52058217的博客 4417

PyCharm与MicroPython联手:打造高效ESP32开发环境

本文详细介绍了如何使用PyCharm与MicroPython打造高效的ESP32开发环境。通过配置PyCharm插件、刷写MicroPython固件以及实战示例,帮助开发者快速上手嵌入式Python开发,显著提升物联网项目的开发效率。

weixin_29169899的博客 380

人月神话总结

人月是神话,银弹是神话,完美是神话,神话般的产品是神话般的组织的体现。

rayylee 2006

金蝶云星空-协同开发云-安装开发环境

金蝶协同开发云就是不需要每一个开发都在自己的本机安装开发环境,自己安装可容易出错,包括源代码管理也一并解决了,大大减少了开发人员的工作量和降低了上手的难度。

qq_33881408的博客 5594

【读书笔记】人月神话(一)

人月神话的读书笔记,第一章

新兴IT民工的专栏 1243

IMU预积分【SLAM】

预积分的推导过程比较多,所以这里只记录关键结论。 其实这些公式不太好记忆,因为预积分推导过程的想法来源很巧妙,无法看出物理意义。一切推导的来源: 最好记忆的旋转相对运动量: △Rij≐RiTRj=∏k=ij−1Exp((ω~k−bg,k−ηgd,k)△t)\triangle R_{ij} \doteq R_{i}^{T}R_{j} = \prod_{k=i}^{j-1}Exp((\tilde{\omega}_{k}-b_{g,k}-\eta_{gd,k})\triangle t) △Rij​≐RiT​Rj​

Tong_1024_的博客 1368

【Windows Server 2019】Active Directory Certificate Services 证书颁发机构的安装,配置和管理Ⅰ——AD CS的安装和配置

博文主要介绍了Windows Server 2019的证书颁发机构的安装和配置方法。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 4832

《人月神话》——2人月神话

人月神话,人月为什么被称之为神话,去除神话色彩,我们又该怎么衡量人月?

PrettyEagle的博客 2888

(ICLR 2025)【源码讲解+复现】TIMER-XL: Long-Context Transformers for Unified Time Series Forecasting

本文提出了一种统一的多变量时序预测模型Timer-XL,其核心创新包括:1)采用自回归解码器架构,将多变量时序预测统一为next-token预测问题;2)设计TimeAttention机制,通过相对位置编码和因果掩码捕获时序位置和变量间交互;3)支持长上下文预训练以提升零样本迁移能力。模型架构包含嵌入层、时间感知注意力块和预测头,采用MSE损失进行端到端训练。实验表明该方法在多种时序任务上表现优异,特别是在长跨度预测和少样本场景下。代码实现提供了完整的模型定义、数据加载和训练流程,支持自定义配置参数。

1144

人月神话阅读笔记01

《人月神话》,那什么是人月?是在估计和进度安排中使用的工作量单位。Brooks认为,用人月作为 衡量一项工作的规模是一个危险和带有欺骗性的神话。它暗示着人员数量和时间是可以相互 替换的。 人数和时间的互换仅仅适用于以下情况:某个任务可以分解给参与人员,并且他们之 间不需要相互的交流。 保持设计的概念完整。无论对小软件还是大软件,都必须由一个设计师主导,最多两个人讨论来共同完成软件的整体设计。作为...

weixin_30394633的博客 113

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

人月神话读后感01

  寒假本来想多读两本书,写写规划极限编程和梦断代码的读后感,然而实在读不下去,只读了一本人月神话,所以就写写人月神话的读后感吧。   人月神话在焦油坑一章指出了编程的乐趣与苦恼。编程就像史前动物们身陷焦油坑,要想存活下来就必须得有技巧,看清无问题本质。过去十几年有好多团队编写出来当时很适合的软件程序,然而几年过后就被淘汰了,所以我们得与时俱进。   编程是很有趣的,前提是你得对它感...

187

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

人月神话阅读笔记-01

焦油坑 编程产品是简单程序通过通用化,测试,文档,维护等产生的。(保证是一个完整的程序)编程系统是简单程序符合规范,功能上相互协作,并能与系统在交互上不出错。(保证能与系统配合)编程系统产品=编程系统+编程产品。编程系统产品才是大多数系统开发的目标。编程系统产品的成本是简单程序的9倍。 人月神话 乐观主义: 系统编程的的进度安排背后的第一个错误假设是:一切都将运作良好,每一项任务仅花费它所...

weixin_30929011的博客 101

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

人月神话贯彻执行_人月神话阅读笔记01

本篇是人月神话阅读笔记的第一篇。1-8章1.焦油坑焦油坑的意思说明了即使你足够强大,也无法摆脱束搏而沉到坑底。可供大部分人使用的软件开发起来可不是一件简单的事情乐趣与苦恼是这个行业避不开的话题学习,创造,服务的乐趣难题,约束,成果面临过时的苦恼。2.人月的启示Brook 法则:向进度落后的项目中增加人手,只会使进度更加落后。缺乏合理的时间进度是造成项目滞后的最主要原因,它比其他所有因素加起来影响还...

weixin_39714528的博客 205

《人月神话》阅读笔记01

《人月神话》是为软件开发经验的天马星空总结。具有远见的见解,把我从充实代码的清晰简洁升华,拓展到软件开发的高层次,一个周密准确明朗的开发需求、可行性的研究和软件实现是软件开发的完美递进,他们相互辅助,相互促进,如同海浪一层的推着向前奔向远方,而《人月神话》如软件工程开发经济的精华。 首先我先通读了全本书,对整书的大概内容进行了了解。第一遍的阅读中我知道了许多。软件开发的多...

weixin_33989058的博客 97

人月神话 读书笔记01

在刚刚进入软件工程学习时,老师总会时不时向我们提起一些关于“软件项目开发的完成与增加人员的问题”这句话听起来通俗易懂,但实现起来却遇到了相当大的困难,这是我在阅读完成《人月神话》时最大的感受。本书作者布鲁克斯得出的结论是显而易见的:“向进度落后的项目中增加人手,只会使进度更加落后”。如果不想加班,不想削减功能,不想推迟发布日期,那么唯一的方法还是只有加人。加足够的人。而且不要逐步加入,一...

weixin_30474613的博客 142
上一篇: 【前端3分钟】布局
下一篇: 【人月神话】02 各司其职与规则
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值