帕累托编程






4.53/5 (9投票s)
帕累托原则如何帮助我们编写更好的软件
我最喜欢的原则之一是帕累托原则,也称为 80-20 法则。该原则指出,通常情况下,80% 的效果来自 20% 的原因。我喜欢这个原则是因为它非常简单,而且可以在我们的职业和个人生活的许多不同领域中观察和应用。它足够强大,可以从根本上改变我们处理工作的方式,并鼓励我们接受我们所处的世界是不平衡的。事物不是均匀分布的。
该原则以一位名叫维尔弗雷多·帕累托的意大利经济学家命名,他观察到 1906 年意大利 80% 的土地归 20% 的人口所有。最近,联合国 1992 年的一份报告指出,世界上最富有的 20% 人口控制着全球约 80% 的收入。该原则也存在于自然界中,据说帕累托观察到他花园里 80% 的豌豆是由 20% 的豆荚产生的。
但是,帕累托原则如何帮助我们生产出更好的软件呢?
以下是我们可以在工作中应用帕累托原则的一些方法,以确保我们将时间和金钱花在产生最大影响的地方,并接受不平衡是存在的,假装它不存在是没有意义的。
80% 的价值由 20% 的需求提供
这个想法在项目初期尤其有用。总的来说,任何软件项目的初始功能规范都来自乐观的观点。开发者和客户常常没有意识到的是,大约 80% 的价值,无论是根据客户满意度还是利润来衡量,都将由规范中 20% 的需求提供。这并不意味着其他 80% 的需求是毫无意义的或浪费时间的,它只是意味着它们不那么重要。因此,对需求进行优先级排序至关重要。这听起来很明显,但令人惊讶的是,常常只有很少的时间用于优先级排序。项目开始时的一个错误假设是,我们有时间做完所有的事情,所以先做什么并不重要。现实情况当然是,我们将面临意想不到的障碍,因此最好先完成最有价值的工作。如果我们那时没有时间做完所有事情,至少我们也不会遗漏任何重要的 20%。
80% 的错误和瓶颈将存在于 20% 的代码中
随着代码库的老化,开发者幻想将其全部重写并从头开始是很常见的。它似乎充满了糟糕的代码和不一致之处。它运行缓慢且难以阅读。现实情况是,我们只是喜欢从一个空白页开始,因为这对大多数人来说比不得不拖着一个旧的代码库前进更令人兴奋。事实上,通过重写 20% 的代码,我们可以消除解决方案 80% 的“糟糕之处”。这并不意味着我们应该真的去重写 20% 的代码,它只是意味着我们不应该假设从头开始是最好的。同样,我们需要确定优先级。如果我们决心要改进事物,我们应该努力找出糟糕的 20% 在哪里,并决定改进它是否足够。
80% 的生产力将由 20% 的时间提供
尽管这可能是理想的,但您不可能在 100% 的时间里保持 100% 的生产力。创造力往往是爆发式的,学会识别您何时感到有创造力,何时没有,是一项宝贵的技能。期望自己持续产出色的工作是导致压力的根源。它可能在一段时间内看起来有效,但很快您的身体就会强迫您停下来,松开油门。幸运的是,在任何工作中,都有很多琐碎的任务需要完成,非常适合那些我们不太有创造力的时期。这可能是一些不具挑战性的代码编写,添加注释,或者审查您自己或他人的工作。我过去使用过的一种技术是将待办事项列表中的项目分类为“创造性”或“琐碎”,并根据我当时的创造力程度来选择任务。无论您喜欢与否,人类都以周期性的方式运作,通过学会在此周期内工作,您可以以可持续的方式最大化您的整体生产力水平。
团队 80% 的价值存在于其 20% 的成员身上
这可能是有争议的,但在我参与过的每一个项目中,成功主要取决于一小部分团队成员的能力。通常有几个“明星”,通常包括团队领导,其他团队成员可以依靠他们,他们的经验和技能能够将项目推向终点。如果这 20% 的团队成员离开,项目很可能会失败,而团队的其余大部分成员则更容易被替代。这些团队成员对项目有最全面的理解,使他们能够直观地做出重要决策并识别潜在的陷阱。这并不意味着团队的其余 80% 是无用的。一个好的团队需要可靠的工人,他们可以接受他人创建的设计并将其变为现实。在我职业生涯中,我肯定有过属于团队 80% 的时候。
我坚信,在软件开发中,理解帕累托原则及其影响至关重要。无论我们考虑需求、错误、团队成员、任务还是客户,所有事物都不是平等的。通过认识和接受这一点,我们可以根据事物的相对重要性来调整我们的行为,并拥抱不平衡而不是否认它。