一个问题,人们往往都会提出一些方案来解决。有些时候还会同时提出短期方案和长期方案来解决同一个问题,这往往是因为紧急度和重要性出现了难以调和的矛盾,才使用的一种各个击破的手段。
如果一个问题很紧急,但是理想的解法成本高,短时间内没有办法实现,这个时候就需要考虑短期方案了。短期方案的思考方式与理想方案不同,更多的是考虑解决当下紧迫的问题,度过难关,所以能解决问题就行,怎么快怎么来。因此方案在通用性和适应性上很大可能会存在较大缺陷。使用短期方案后,随着时间推移,会出现越来越多没有办法覆盖的场景和问题,未来维护成本会比较高。
如果一个团队的工作基本都集中在短期方案上面的话,这个团队产出的系统将会非常脆弱。结果表现为:系统经常出问题,出问题的频率没有办法降下来;应对出现的问题,系统会被更多的短期方案打无数层补丁,失去了可维护性,进一步助长了问题的发生;人力都用在了各种应对问题打补丁这种救火的工作上面,随着时间推移,救火的人力投入将越来越高,直到某个时候人力已经不够了。所以短期方案可以理解为是牺牲未来的方案。
当已经有了短期方案兜底了,这个时候紧急度已经不再是问题,问题变成了短期方案带来的维护成本的问题。因此需要设计一些理想方案来解决。这里需要对问题进行抽象、标准化,简化设计,重构关注点,从而让系统具有更强的适应性和通用性,更多的覆盖未来本来还会出现的各种问题,降低未来人力需求的可能性。这里的理想方案就是长期方案。长期方案的“长期”,不是指实现起来需要很久,而是说这个方案一旦实施,他就能长久的解决问题。一些问题的长期方案可能比较容易被发现,这种时候我们往往就不再需要拆分短期方案了,而是一个方案就可以。
什么时候要开始执行长期方案呢?看到有一种误区是,长期方案永远不会被执行。因为系统总是会出现各种问题,当问题出现的时候,他的紧迫程度往往让他的重要性显得比任何长期方案的都大,因此持续不断的问题来临的时候,最终没有时间分配给长期方案,因此出现长期方案被饿死的情况。那么,长期方案应该从什么时候开始执行呢?答案应该是,没有时间也要挤时间来执行。长期方案应该被列为不能拖的事情,因为一旦拖了,这段时间内产生出来的问题,就都需要人力去救火,随着人力被各种问题消耗,人们会越来越没有时间去执行长期方案,这就形成了一个恶性循环。
因此,长期方案应该要列到一个最显眼的地方,任何时候有空了,大家都应该要看看长期方案里面那些事情需要做。让思考长期方案、设计和实现长期方案这些工作带上更强的磁性,牢牢吸住大家的注意力。而不要把它放在一个谁都看不到,堆满了灰尘的角落里面,那样的话就有非常大的风险陷入短期方案危机。