软件开发管理的11条真理
来源:作者:发布时间:2021-11-12 16:25:52阅读量:2705
软件开发过程管理好比养猫。换句话说,你不能真正做到这一点,但你可以做到最好。换句话说,软件项目就像试图在 NBA 中为勒布朗詹姆斯辩护。你根本无法阻止他,充其量只能希望能牵制住他。
软件项目的开发和管理是一门不精确的科学。这不是秘密。以下是我多年来学到的 11 个真理。他们帮助我了解我们管理这个奇怪的
项目世界的能力是多么有限。
1.估计总是错误的。
不管你花一个小时还是一年来估算,估算的结果都是错误的。事情就是这样。结果不一定是错的,可能只是有点错,但肯定还是错的。
如果您看到错误报告并认为“修复它需要一个小时”,那么几乎可以肯定它不会恰好需要一个小时。可能需要45分钟,也可能需要3个小时,但不太可能正好需要一个小时,甚至可能只有一两分钟。现在,您可能会说,“大约一个小时。”这实际上是一个更好的估计,因为具体而精确的估计是错误的。
目前,对于一个可能只需要一个小时的短项目来说,这不是什么大问题。但...
2. 项目越大,您的估计就越不准确。
项目越大,估计就越不准确,特别是对于在项目开始时所做的估计。就像上例中的一小时估算,如果将一个项目估算为一年,则可能需要 9 个月或 36 个月。在某些情况下,甚至可能需要五年时间。没有办法知道这个项目是什么时候开始的。
项目越大,“未知的未知数”就越多。一般来说,项目越大,参与的人就越多。换句话说,随着项目规模的扩大,将会有更多的变数和更多的事情发生,这是你根本无法预测的。所有这些都会增加项目的时间,而且你在开始的计划中是做不到的,原因很明显,你不知道它们会发生。
3、注意力和专注力是我们最宝贵最稀缺的东西
在构建软件时,完成一个项目所需的最有价值的是团队中的开发人员以不受干扰的方式集中注意力的能力。
干扰越少,团队效率就越高。就这么简单。软件开发经理的主要职责之一是减少团队分心的次数和持续时间。
当软件开发人员不受打扰时,他们非常高效。当他们被打断时(无论是因为开会还是被问到问题或其他原因),他们将很快失去工作效率。我们都知道“心流”,也都知道进入和保持“心流”状态是多么困难。流逝的时间如同黄金一样珍贵,应该得到保护。
4. 霍夫施塔特定律是真理
霍夫施塔特定律是这样说的:
“即使考虑到霍夫施塔特定律,项目的实际完成时间总是比预期的要长。”-维基百科(https://en.wikipedia.org/wiki/Hofstadter%27s_law)
这与估计有关,但值得注意的是这条格言的美妙之处。你可以伪造你的估计,因为你认为它可以为你争取时间来完成任务。您可以添加额外的因素,将“未知的未知因素”放入计划中,并增加您的估算,以便考虑到实际时间会比您想象的要长,但最终会实际完成一个项目仍然会比你长 你认为更长的实际上更长。
5.不能加速软件开发,只能限制减速的程度
这个道理对于一些管理者来说真的很难理解。该软件需要花费的时间。没有办法让它更快。您可以要求团队投入更多时间。你可以挥动鞭子,拿起棍子。您可以乞求、哄骗和恳求开发人员。你可以说,“但是,这应该只需要三个月!”但最终,从长远来看,你无法提高软件开发团队的速度。
如果您开始意识到霍夫斯塔德定律的有效性并认为“我可以让这些人工作得更快”,那么您就错了。你所能做的就是减少他们的干扰,让他们自主工作,从而防止他们慢下来。这种差异很微妙,但很重要。
6. 你只能在很短的时间内出现赤字。
同样,你可以要求团队投入更多的时间,熬夜,周末加班,以及各种“鞭打”的方法。您可能会获得一些(非常)短期收益。
但如果你尝试该图使其成为正常状态。如果你试图让团队的引擎在 RPM 红线上运行,它就会烧坏。很快,您将看到收益递减。人,就像赛车上的发动机一样,不能长时间承受太大的压力,否则就会出现故障。
7. 大脑时间比屁股时间更重要
没有什么比要求工作时间更能降低生产力(例如,您的开发人员必须坐在椅子上几个小时)。你可以衡量你的工作时间长短,你可以感受到一个真正显示人们工作效率的指标。但这样做是错误的。要求工作时间只会降低团队的士气,因为他们实际上想花时间思考。
大脑时间是最重要的。可以这样想:假设你是一名经理,对你来说最重要的是看到团队坐在电脑前“工作”。你在办公室里走来走去,看着开发人员坐在椅子上在键盘上打字。多么繁华的景象。
但后来你偶然发现一些开发人员只是坐在那里盯着屏幕。只是愚蠢地坐在那里,他们只是坐在那里看起来很愚蠢。搞什么鬼!大约半个小时,他们什么也没做!
但是,它们确实在起作用。他们在思考。他们正在用他们的大脑思考和解决一个非常困难的问题。也许他们甚至会站起来在办公室里转转。最后,他们坐下来,编写 11 行代码,并将用户故事标记为完成。
他们符合你的“屁股时间”标准吗?不相容。他们是否为一个非常困难的问题想出了一个聪明的解决方案?是的。
时间证明什么。大脑时间意味着一切。
8.硬件比开发者的时间便宜,便宜很多
开发商其实很贵。为了吸引顶尖人才,您必须支付具有竞争力的薪酬。它们每小时都不便宜。尽管如此,许多公司并没有意识到这一小时的开发人员时间极其宝贵,并且不愿意向团队提供硬件。
算了,电脑很贵!额外的内存会超出硬件预算!
嗯,可能会超出预算,但那是因为你的预算有问题!
现在让我们计算一个帐户:假设您每年向每个开发人员支付 100,000 美元,或每小时约 50 美元。假设他们每天花一个小时等待编译器完成它的工作。那么,假设您可以为开发人员的机器添加一些内存和更快的处理器,将编译的等待时间减少到每天 45 分钟。这样,开发人员每天可以节省 15 分钟。以一年200天计算,即一共50小时。按每小时 50 美元计算,每位开发人员每年可节省 2500 美元。如果一台更快的机器的增量成本是 500 美元呢?
让我们来算一算。如果您有 20 个开发人员,使用速度更快的机器将为您节省 40,000 美元的投资。你应该能够通过口头计算来弄清楚。
这只是为了减少等待编译时间。此外,做其他事情的速度也会更快。
如果您的预算不允许更快的机器,那么您需要调整您的预算。
9.你无法衡量软件开发人员的生产力
我写了一篇关于这个主题的文章:
https://medium.com/nickonsoftware/can-we-measure-software-development-生产力-a2138d2f7011
可以说,试图以客观的方式衡量开发人员的生产力是徒劳的,根本不应该这样做。有一些方法可以主观地衡量生产力,但这些方法需要经验和良好的判断力。这些能力是很难获得的,一旦拥有,就能为你带来非常宝贵的价值。
10.如果你没有读过Humanware,那你就不是一个真正的软件开发经理
在我看来,只有一本书可以教你如何管理软件开发人员:那就是 Tom DeMarco 和 Timothy Lister 合着的“Personware”(必须选择第三版……)。
这本书很好,有见地,犀利,清晰,毫无保留。本书充满了管理软件项目和软件开发人员的智慧。它是永恒的经典。
快来读一读吧!
11. 质量是一种感觉,而不是缺陷的数量
这真的很难接受。
基本前提是:你的缺陷管理工具中的缺陷已经接近于零,但人们仍然可以认为你的软件有缺陷。您可能拥有大量缺陷管理工具缺陷,但人们可以认为您的软件坚如磐石。缺陷管理工具中的缺陷数量与软件质量之间没有关系。
在这里,我并不是说您不应该尝试减少缺陷的数量,而是相反。但最终,你的软件只有在你的客户认为它足够高的情况下才能说是高质量的,而你的缺陷数量并不一定能解释这一点。这很奇怪,不是吗?
当我们谈论这个话题时,“高”缺陷数是什么意思?如果您的代码库有 100,000 行代码,那么“高”的定义是什么? 500万行代码怎么样?谁说的?
结论
即使在最好的情况下,让软件项目在短跑道上安全着陆也是一个具有挑战性和困难的命题。在这个过程中,加上一些歧义,加上一些随时可能出错的定时炸弹,成功就是一个奇迹。
诀窍是接受和理解这些歧义,并与它们相处,而不是反对它们。接受这11个真理将有助于解决这个问题。
相关推荐