为了账号安全,请及时绑定邮箱和手机立即绑定

每个程序员都应该知道的9条定律

照片由Austin DistelUnsplash拍摄

在软件开发中,有许多被称为准则或原则的指导原则和观察结果。虽然这些准则并非在所有情况下都严格适用,但它们提供了重要的框架,对开发过程有着重要的影响。这些原则可以显著影响组织、团队和个人的生产效率。对于任何参与软件开发的人来说都非常有用。

布鲁克斯法则 (Brooks's Law)

“给一个已经延期的软件项目增加人手反而会让它更晚完成。”

弗雷德·布鲁克斯

因为协调成本高,项目中增加的开发人员不一定能提升效率。在没有适当规划的情况下,盲目增加人手来解决延期项目的问题,会带来更大的风险。

另外,找到既不大也不小的团队,也不至于成员需要成为多面手,找到这种平衡也很重要。

图片来源:https://nscblog.com/2015/12/10/brooks-law-when-more-is-less/, 作者:(S. Adams)

戈德哈特法则:当一个衡量指标被用来作为管理的手段时,它就失去了作为衡量指标的有效性

“当一个指标变成目标时,它就不再是好指标。”

查尔斯·古德哈特(Charles Goodhart)

这意味着一旦某个指标被设为目标,人们就会优化他们的行为以达到这个指标,而这通常是以牺牲其背后的目标为代价的。我们经常追求难以量化的结果,因此依赖于这些指标,这会引导我们的努力偏离初衷。这可能包括:

  • 代码行(用于衡量生产率)
  • 每个冲刺完成的故事点(用于衡量冲刺速度)
  • 代码覆盖率(用于衡量测试)

为了避免这个陷阱,我们没有必要放弃数据驱动的方法。然而,我们需要至少几个指标来指导我们的工作。我们需要不断调整和完善这些指标,并在某些情况下,我们也需要采用定性方法。

如图所示](https://medium.com/illumination/the-cobra-effect-and-how-to-avoid-the-trap-843a7256b5cd),作者是:Gaurav Jain(https://x.com/gauravjainio)

海鲁姆法则

“当某个API的用户数量足够多时,你在合同中承诺什么都不重要:你的系统所有可观察的行为都会被某人依赖。”

Hyrum Wright

随着你的API用户不断增加,人们将会开始依赖于未预见或未记录的行为。随着时间的推移,即使是那些未记录的小问题或特例,也会成为用户依赖的功能,使得修改或改进API变得更加复杂和困难,而不至于破坏某人的正常使用。

随着系统不断发展和演变,保持对旧版本的支持和管理用户期望变得越来越具有挑战性。

xkcd.com

康威的法则

“任何设计系统的组织(这里的系统可以广义理解),其设计结构会是该组织沟通结构的翻版。”

梅尔文·康韦

软件的结构常常反映了构建它的团队和部门结构。如果你盲目遵循现有的团队或部门界限,你可能会得到与期望架构或业务能力不匹配的子域。

逆康威操作是主动运用康威定律。它建议,如果我们希望软件架构具有特定的形状或结构,我们应该先调整团队结构和沟通模式,使其符合期望的架构。

图片:(https://refactoring.fm/p/monday-14),作者:Luca Rossi。

林纳斯法则

“够多双眼睛,所有的漏洞就浅显易见。”

Eric Raymond

体现了开源协作的核心,广泛的社区参与有助于更有效地识别和修复错误,比在封闭系统中更有效。想法是,查看代码的人越多,他人可能忽略的错误被发现和解决的可能性就越高。

这张照片由Kalea JerielleUnsplash拍摄。

霍夫施塔特定律

这总是比你预期的还要长,即使你考虑到了霍夫施塔特定律。

道格拉斯·霍夫施塔特

霍夫施塔特定律提醒我们的是,尤其是在软件开发中,我们往往会多么不准确地估计任务的时间。

这突显了留出缓冲时间和管理预期的重要性。

图片,作者:PJ 米拉尼

Kernighan法则

调试程序比编写程序难一倍,这是大家都知道的。假如你在编写程序时已经用尽了所有的聪明才智,那你还怎么调试呢?

布莱恩·科尔尼汉

过于复杂的代码对系统维护来说很危险。如果代码写得过于复杂,调试会更困难得多,因为你得先弄明白逻辑才能修复问题。简洁的编码很重要——写清晰、易维护的代码会让调试和长期改进变得更容易。

Reddit(一个分享帖子的网站)(点击链接查看)

彼得原则

“人在层级中往往会晋升到‘各自不称职的层面’。”

劳伦斯·彼得(Laurence Peter)

成功常常伴随着代价。在很多情况下,个人由于他们的成就被提升到越来越高阶的职位。不过,总有一天,职位的要求可能会超出他们的能力范围。

在软件行业,这通常发生在成功的开发者被提拔到管理职位时。人们常常认为,领导力和软技能会随着技术专长自然提升,但这并非总是如此。一个技术高超的程序员不一定擅长管理团队、领导团队或应对领导层的战略需求,这可能导致他们在新角色中遇到困难。

![图]( https://www.linkedin.com/posts/lotfialsouki_the-peter-principle-is-a-concept-in-management-activity-6470121905033707520-QINs/?trk=public_profile_like_view),彼得原理是管理学中的一个概念,作者:Lotfi Alsouki

帕累托原则

“你知道吗?大约80%的结果是由20%的原因引起的。”

美国约瑟夫·朱兰

帕累托原则(也称为80/20法则)在许多情况下都非常适用,其中一个关键的见解是努力应该具有选择性。简单来说,将注意力集中在最有影响的领域——通常是那20%的领域,能够带来80%的效果——比将精力分散得过宽更为有效。这也表明,质量比数量更为关键,真正的成果比仅仅产出的数量更关键。优先考虑那些真正能带来重大进展的事情有助于带来更有意义和持久的效果。

如图所示: 图片

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消