大家好,关于关于软件开发管理的11 个事实很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!
众所周知,软件项目的开发管理是一门不精确的科学。以下是我多年来学到的11 个事实,它们帮助我了解在管理软件开发项目的奇怪世界时我们的能力是多么有限。
1. 估算总是错误的
无论您花费一个小时还是一年进行估算,估算都将是错误的。事情就是这样。结果不一定是大错特错,可能只是错了一点点,但肯定还是错的。
如果您看到错误报告并认为“修复它需要一个小时”,那么几乎可以肯定它不会花费整整一个小时。可能需要45 分钟,也可能需要3 小时,但恰好需要一个小时的可能性很小,甚至可能只需要一两分钟。现在,你可能会说,“大约一个小时”。这实际上是一个更好的估计,因为具体、精确的估计是错误的。
现在,对于一个可能只需要一个小时的短期项目来说,这不是什么大问题。但…
2. 项目越大,你的估算就越不准确
项目越大,估计就越不精确,尤其是在项目开始时进行的情况下。就像上面的一小时估算一样,如果你估算一个项目为一年,则可能需要9 个月或36 个月。在某些情况下,甚至可能需要五年。无法知道这个项目何时开始。
项目越大,“未知的未知数”就越多。通常项目越大,参与的人就越多。换句话说,随着项目规模的增加,将会有更多的变量和更多你根本无法预测的事情发生。所有这些事情都会增加您从未计划过的项目时间,很明显,您不知道它们会发生。
3.注意力和专注力是我们最宝贵也是最稀缺的东西
在构建软件时,完成项目所需的最有价值的事情之一是团队中的开发人员不间断地专注的能力。
干扰越少,团队的工作效率就越高。就是这么简单。软件开发经理的主要职责之一是减少团队分心的次数和持续时间。
当软件开发人员不受干扰时,他们的工作效率会很高。当他们被打扰时(无论是在会议、被问到问题还是其他事情),他们的工作效率很快就会下降。我们都知道心流以及进入并保持这种状态是多么困难。时间的流逝就像黄金一样珍贵,应该受到保护。
4. 霍夫斯塔德定律是真理
霍夫施塔特定律是这样说的:
“即使考虑到霍夫施塔特定律,项目的完成时间也总是比预期的要长。” —— 维基百科(https://en.wikipedia.org/wiki/Hofstadter%27s_law)
这与估计有关,但值得注意的是这句格言的美妙之处。您可以夸大您的估计,因为您认为这将为您赢得完成任务的时间。你可以添加额外的因素,将“未知的未知数”构建到计划中,并增加你的估计,以考虑到它会比你想象的要花更长的时间,但最终,实际完成一个项目仍然会比你想象的要花更长的时间会的。被认为更长的东西实际上更长。
5. 你不能加快软件开发,你只能限制其减慢的程度
这个道理对于一些管理者来说确实很难理解。只要需要软件,就需要它。没有办法让它更快。你可以要求团队投入更多时间。你可以打响鞭子,拿起棍子。你可以向开发者乞讨、哄骗和恳求。你可以说:“但是,这应该只需要三个月!”但最终,从长远来看,你无法提高软件开发团队的速度。
如果您开始意识到霍夫斯泰德定律的有效性并认为“我可以让这些人工作得更快”,那么您就错了。你所能做的就是减少他们的干扰,让他们自主工作,从而防止他们放慢工作速度。这种区别很微妙,但很重要。
6. 你只能在非常短的时间内出现赤字
同样,你可以要求团队投入更多的时间,熬夜,周末加班,使用各种“鞭打”方式,你可能会从中得到一些(非常)短期的好处。
但如果你试图让它成为常态,如果你试图让团队的引擎保持在转速红线下运行,它就会被烧毁。很快,你就会看到收益递减。人就像赛车的发动机一样,不能承受太大的压力太久,否则就会失败。
7. 大脑时间比屁股时间更重要
没有什么比要求长时间工作更能降低生产力了(例如,您的开发人员连续几个小时坐在椅子上)。您可以衡量工作时间,并感觉您拥有一个真正显示人们工作效率的指标。但这是错误的做法。要求花几个小时只会让团队士气低落,因为他们实际上想花时间思考。
大脑时间才是最重要的。可以这样想:假设您是一名经理,对您来说最重要的是看到您的团队坐在电脑前“工作”。你在办公室里走来走去,看着开发人员坐在椅子上敲键盘。多么繁荣的景象啊。
但随后您偶然发现一些开发人员只是坐在那里盯着屏幕。他们就傻乎乎地坐在那里,只是坐在那里凝视着。我勒个去!大约半个小时了,他们什么也没做!
但是,它们确实有效。他们在思考。他们正在用自己的大脑去思考并解决一个非常困难的问题。也许他们甚至会站起来在办公室里散步。最后,他们坐下来,编写11 行代码,并将用户故事标记为完成。
他们符合你的“屁股时间”标准吗?不一致。他们是否想出了一个巧妙的解决方案来解决一个非常困难的问题?是的。
屁股时间证明不了什么。大脑时间意味着一切。
8. 硬件比开发人员的时间更便宜,而且要便宜得多
开发商其实很贵。为了吸引顶尖人才,你必须支付有竞争力的薪水。他们的每一个小时都不便宜。尽管如此,许多公司并没有意识到开发人员一小时时间的价值,并且不愿意向团队提供硬件。
算了,电脑很贵!额外的内存会超出您的硬件预算!
好吧,也许它会超出你的预算,但那是因为你有预算问题!
现在我们来计算一下:假设您每年向每个开发人员支付100,000 美元,或者每小时大约50 美元。假设他们每天花一个小时等待编译器完成工作。然后,假设您可以向开发人员的机器添加一些内存和更快的处理器,将等待编译的时间减少到每天45 分钟。这每天可以为开发人员节省15 分钟。按一年200 天计算,总共50 小时。按每小时50 美元计算,每位开发人员每年可节省2,500 美元。如果更快的机器的增量成本是500 美元怎么办?
让我们算一下。如果您有20 名开发人员,更快的机器将为您节省40,000 美元的投资。你应该能够从口头上弄清楚。
这只是为了减少编译等待时间。此外,您还可以更快地做其他事情。
如果您的预算不允许购买更快的机器,那么您需要调整预算。
9. 你不能度量软件开发人员的生产力
我写了一篇关于这个主题的文章。
可以说,试图以客观的方式衡量开发人员的生产力是一件愚蠢的事情,根本不应该这样做。有多种方法可以主观地衡量生产力,但这些方法需要经验和良好的判断力。这些能力来之不易,但一旦拥有,就能给你带来巨大的价值。
10. 如果你没有读过《人件》,那么你就不是一个真正的软件开发经理
在我看来,只有一本书可以教你如何管理软件开发人员:Tom DeMarco 和Timothy Lister 写的《人件》(一定要拿起第三版……)。
这本书非常优秀,见解深刻,切题,清晰,无懈可击。本书充满了管理软件项目和软件开发人员的智慧。这是永恒的经典。
快来阅读吧!
11. 质量是一种认知,而不是缺陷数量
这实在让人难以接受。
基本前提是这样的:你的缺陷管理工具中的缺陷接近于零,但人们仍然可以认为你的软件有缺陷。您的缺陷管理工具中可能存在大量缺陷,但人们却认为您的软件坚如磐石。缺陷管理工具中的缺陷数量与软件质量之间没有关系。
我并不是说你不应该尝试减少缺陷的数量,而是恰恰相反。但最终,只有当您的客户认为您的软件足够高时,您的软件才是高质量的,而您的缺陷数量并不一定表明这一点。很奇怪吧?
当我们讨论这个主题时,“高”缺陷数意味着什么?如果你的代码库有10万行代码,“高”的定义是什么? 500万行代码怎么样?谁说的?
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/163718.html
用户评论
笑傲苍穹
真的太赞了!这些法则简直就是软件开发界的黄金准则,我一直用着其中的很多道理来指导自己的工作,这次总结下来更加清晰明了,受益匪浅!
有8位网友表示赞同!
西瓜贩子
这篇文章确实很实用,我是一名刚入行的开发,很多点都没有思考过,看完以后感觉收获很大,回去好好整理一下,把这些真理融入到我的工作中去。
有14位网友表示赞同!
糖果控
软件开发管理的挑战可真不少啊,这篇总结太合适了!尤其是第8条关于沟通的重要性,一直觉得这一点很重要,看来我并没有想错。
有15位网友表示赞同!
绳情
我觉得有些说法过于绝对化了,比如“团队首要任务是完成功能需求”这一说法,在某些情况下,追求技术创新和可持续性也很重要啊。不能一概而论。
有8位网友表示赞同!
凉城°
这篇文章总结得太棒了!每一条都包含着宝贵的经验和智慧,作为一名项目经理,我想收藏起来以后经常翻阅一下,避免走弯路。
有5位网友表示赞同!
青山暮雪
我比较认同文章中关于敏捷开发理念的阐述,它能够帮助团队更快地适应需求变化,提高开发效率。希望更多团队能够重视这种工作方式。
有16位网友表示赞同!
一点一点把你清空
这篇文章对我很有启发,让我更加了解软件开发管理需要具备的哪些素质和技能。下一步我要努力学习实践,把这些真理付诸行动!
有5位网友表示赞同!
可儿
个人认为,除了技术层面之外,还需要关注团队文化建设,营造积极正向、开放合作的工作氛围,才能真正提升团队效率和创造力。
有18位网友表示赞同!
念初
有些道理感觉过于套路化了,软件开发管理没有那么多“真理”可言。更重要的是要脚踏实地,不断学习和实践,才能获得成长!
有18位网友表示赞同!
雪花ミ飞舞
我觉得这篇文章写得太浅薄了,没有深入探讨每个法则的具体应用场景和挑战应对策略。如果能更加细致入微,就显得更有价值。
有13位网友表示赞同!
_心抽搐到严重畸形っ°
作为一个资深项目经理,我常常把软件开发管理比喻成一场马拉松比赛,需要根据不同的阶段调整战略,才能最终取得胜利!
有16位网友表示赞同!
◆乱世梦红颜
我很认同这篇文章中关于良好沟通的重要性,一个有良好沟通机制的团队才能高效运转。 很多时候沟通问题会成为项目失败的导火索。
有5位网友表示赞同!
别伤我i
我认为软件开发管理的本质在于把抽象的概念转化成实际价值,需要不断学习和适应新的技术和市场趋势。
有8位网友表示赞同!
醉红颜
这些法则只是一个起点,想要真正掌握软件开发管理的精髓,还需要不断实践和积累经验,才能找到自己的一套方法。
有6位网友表示赞同!
﹏櫻之舞﹏
这篇文章提醒了我一些注意事项,比如团队成员的角色划分、任务分配要合理,避免出现资源浪费或工作效率低下的情况。
有19位网友表示赞同!
南宫沐风
软件开发是一项非常有挑战的工作,需要具备严谨的思维和高效的执行力。想要获得成功,还需要不断学习和提升自己的技能。
有15位网友表示赞同!