软件开发过程管理:尽*大努力的不精确科学
发表时间:2024-07-12 08:05:29
文章来源:炫佑科技
浏览次数:103
菏泽炫佑科技
软件开发过程管理:尽*大努力的不精确科学
软件项目开发管理是一门不精确的科学,这已经不是什么秘密了。以下是我多年来学到的 11 个事实,它们帮助我理解了我们在管理软件开发项目这个陌生的世界方面的能力是多么有限。
1. 预估总是错误的
无论你花一个小时还是一年时间做估算,它都是错的。这就是事实。它可能不会错得离谱,可能只是错得有点多,但它仍然是错的。
如果您查看错误报告并想:“修复该问题需要一个小时”,那么几乎可以肯定修复该问题不会花费整整一个小时。修复该问题可能需要 45 分钟,也可能需要 3 个小时,但花费整整一个小时的可能性很小,甚至可能相差一两分钟。现在,您可能会说:“大约一个小时”。这实际上是一个更好的估计,因为具体、精确的估计是错误的。
目前,对于可能只需要一个小时的短项目来说,这不是什么大问题。但是……
2. 项目越大,估算越不准确
项目越大,估算越不准确,尤其是在项目开始时进行的估算。就像上例中一小时的估算一样,如果你估计一个项目需要一年,那么它可能需要 9 个月或 36 个月。在某些情况下,甚至可能需要 5 年。没有办法知道项目何时开始。
项目越大,未知的未知数就越多。通常,项目越大,涉及的人就越多。也就是说软件开发,随着项目规模的扩大,变量和无法预测的事情也越来越多。所有这些事情都会增加项目时间,而这些时间是你*初没有计划的,原因很明显,你不知道它们会发生。
3.注意力和专注力是我们*珍贵也是*稀缺的东西
在构建软件时,完成项目所需的*有价值的东西就是团队中的开发人员能够不受干扰地集中注意力。
干扰越少,团队的效率就越高。就这么简单。软件开发经理的主要职责之一就是减少团队中干扰的次数和持续时间。
软件开发人员在不受干扰的情况下工作效率很高。当他们被打扰时(无论是会议、问题还是其他事情),他们的工作效率会很快下降。我们都知道心流,也知道进入并保持心流有多难。心流时间像黄金一样宝贵,应该得到保护。
4. 霍夫施塔特定律是正确的
霍夫施塔特定律指出:
“即使考虑到霍夫施塔特定律,项目总是比预期花费的时间更长。” — 维基百科 (%)
这与估算有关,但值得注意的是这句格言的微妙之处。你可以夸大你的估计,因为你认为这会为你赢得完成任务的时间。你可以在计划中添加额外的因素,“未知的未知数”,并增加你的估计,以考虑到它会比你想象的花费更长的时间,但*终,实际完成一个项目所需的时间仍然会比你想象的要长。
5. 你无法加速软件开发,你只能限制减慢速度的程度
这个道理对于一些管理者来说确实很难理解。软件开发需要的时间就是它需要的时间。没有办法让它更快。你可以要求团队投入更多时间。你可以鞭策和鞭策。你可以乞求、哄骗和恳求开发人员。你可以说:“但这应该只需要三个月!”但*终,从长远来看,你无法让软件开发团队更快。
如果你开始意识到霍夫施塔特定律是正确的,并认为“我可以让这些人工作得更快”,那你就错了。你所能做的就是减少他们的干扰,让他们自主工作,从而防止他们放慢速度。这种区别很微妙,但很重要。
6. 你只能在很短的时间内处于赤字状态
同样软件开发过程管理:尽*大努力的不精确科学,你可以要求你的团队投入更多的时间、熬夜、周末加班以及采取其他各种“鞭策”策略,你可能会从中获得一些(非常)短期收益。
但如果你试图使其成为一种常态,如果你试图让你团队的引擎始终以 RPM 红线运转,它就会烧坏。很快,你就会看到收益递减。人就像赛车的引擎一样,不能长时间处于压力之下,否则就会崩溃。
7. 大脑时间比屁股时间更重要
没有什么比要求长时间工作更能扼杀生产力了(即您的开发人员必须连续几个小时坐在椅子上)。您可以测量工作时间,并感觉自己拥有了衡量人们生产力的真正指标。但这是错误的。要求工作时间只会使您的团队士气低落,因为他们实际上试图花时间思考。
大脑时间才是*重要的。这样想:假设你是一名经理,对你来说*重要的是看到你的团队坐在电脑前“工作”。你在办公室里走来走去,看到所有开发人员都坐在椅子上,在键盘上打字。这真是太棒了。
但你偶然发现一些开发人员只是坐在那里盯着他们的屏幕。只是坐在那里,他们只是坐在那里盯着他们的屏幕。真是的!大约半个小时,他们什么也没做!
但是,他们在工作。他们在思考。他们在用脑子解决一个非常困难的问题。也许他们甚至会站起来在办公室里走一走。*后,他们坐下来,写了 11 行代码,并将用户故事标记为已完成。
他们符合你的“插话时间”标准吗?不符合。他们是否能想出巧妙的办法来解决一个非常困难的问题?符合。
屁股时间证明不了什么。大脑时间意味着一切。
8. 硬件比开发者的时间便宜,便宜多了
开发人员的工资很高。为了吸引顶尖人才,你必须支付有竞争力的薪水。他们每小时的时间都不便宜。尽管如此,许多公司并没有意识到开发人员一小时时间的极高价值,不愿意为团队提供硬件。
算了吧,电脑很贵!额外的内存会让你的硬件预算超出控制范围!
嗯,可能超出预算,但那是因为您的预算有问题!
现在让我们来算一算:假设你每年付给每个开发人员 100,000 美元,或者每小时约 50 美元。假设他们每天花一个小时等待编译器完成工作。然后假设你可以为开发人员的机器添加一些内存和更快的处理器,将等待编译的时间减少到每天 45 分钟。这将为开发人员每天节省 15 分钟。一年 200 天,就是 50 个小时。每小时 50 美元,每年每个开发人员可节省 2,500 美元。如果更快的机器的增量成本是 500 美元怎么办?
让我们来算一下。如果您有 20 名开发人员,那么使用更快的机器将为您节省 40,000 美元的投资。您可能可以心算一下。
这只是为了减少编译等待时间。此外,其他一切都会更快。
如果您的预算不允许购买更快的机器,那么您需要调整预算。
9. 你无法衡量软件开发人员的生产力
我曾写过一篇关于这个主题的文章。
可以这么说,试图以客观的方式衡量开发人员的生产力是徒劳的,根本不应该这样做。有主观衡量生产力的方法,但需要经验和良好的判断力。这些能力很难获得,一旦你拥有了它们,它们就会变得非常宝贵。
10. 如果你还没有读过《人件》,你就不算是一个真正的软件开发经理
在我看来,只有一本书可以教你如何管理软件开发人员:Tom 的《》(一定要买第 3 版...)。
这是一本很棒的书。它见解深刻,一针见血,条理清晰,毫无保留。它充满了管理软件项目和软件开发人员的智慧。它是一部永恒的经典。
现在就找到它并阅读吧!
11. 质量是一种感知,而不是缺陷的数量
这实在令人难以接受。
基本前提是:即使你的缺陷管理工具中没有缺陷,人们仍然会认为你的软件有缺陷。即使你的缺陷管理工具中有很多缺陷,人们仍然会认为你的软件坚如磐石。缺陷管理工具中的缺陷数量与软件质量之间没有关系。
我并不是说你不应该尝试减少缺陷数量,恰恰相反。但归根结底,只有当客户认为你的软件质量高时,你的软件才是高质量的,而缺陷数量并不一定能说明全部情况。很奇怪,不是吗?
既然我们讨论这个话题,那么“高”缺陷数量意味着什么呢?如果您的代码库有 100,000 行代码,“高”的定义是什么?那么 500 万行代码呢?谁说的?
综上所述
即使在*好的情况下,让软件项目在短时间内安全落地也是一项具有挑战性和困难的任务。如果过程中出现一些模糊性,再加上一些随时可能出错的定时炸弹,成功就是一个奇迹。
诀窍在于接受和理解模糊性,并与之共事,而不是与之对抗。接受这 11 个事实将有助于实现这一点。
炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等