一个人的一生是有限的,一个人的能力是有限的,因此只可能在有限的领域中走的较远,即有深度。然世界纷纭精彩,领域众多,即有广度。如果能够把深度直接横向推广到广度(即在各个领域都具有深度),这是多么理想而又美好的事情。这也是本文的“需求”,通过计算机专业特有的抽象,反馈思想在一定程度上实现这个“需求”。
为什么希望从某一个领域的深度直接横向推广到广度?
根据实事求是的原则,“实事”是一个人受到,时间,空间,大脑运算速度,记忆能力等众多限制,不可能在所有的领域中取得深度。“实事”是一个人生活在一个社会中,生活需要众多领域深度的支持,好比需要更漂亮的衣服,更快的交通工具,更好的医疗,更美味的食物等等。以上两个“实事”是矛盾的,需要而又不能得到。但“实事”是,随着时代的发展与进步人们的生活确实越来越好了。解决上述矛盾是通过“数量”,即通过数量来解决,一个人实现是矛盾的,但是很多人可以通过互相合作来解决这个矛盾,比如我用深度编写更好的代码来换取工资,用工资购买其他领域深度的产品(幸运的是大多数情况都能通过这种方式解决,生活变的更美好了)。
但有些问题需要一个人解决。比如如何追女孩子,如何提高自己的品味,是否应该买房,如何让家庭关系更和谐等问题。把时间都花在了计算机上,现在想找的对象不是计算机而是人;提高的都是程序的运行速度,而却想提高自己的品味;写的都是if-else,现在想通过一个方法传入是否应该买房,而得到一个结果;协调的都是各部门,产品与开发,开发与测试,开发与运行,现在想把这种协调能力用到家庭关系中。作为IT男,总被人说是IQ越来越高,EQ越来越低。我的理解是EQ更多的代表广度。如果能把IQ推广到EQ岂不是很美好。因此希望能把一个领域中既有的深度,用最低的成本直接横向推广到另一个领域而不是从另一领域从头开始。
深度重要还是广度重要?二者是否能平衡?
做管理的,好比IT部门中的技术总监,看似在各种领域,开发,测试,产品需求都不会很深入的了解,更不会实际的去写代码,属于典型的广度。但从管理这个领域来看,这又是典型的深度。深度和广度是相对存在的。因此他们的重要性是相对的。只能在特定的条件下才能说深度和广度那个更重要。
生活需要广度,因为生活由非常多的领域组成,要会做点饭、要会修点家电换个灯泡啥的、要会摆弄一下电脑、要会几项体育运动……要不就会像王导一样闹4块5的笑话了,广度构成了生活,也提供了生活的经常。
在现实生活模型中,深度是安家立本的,简单说就是用来赚钱的。材料科学领域需要深度来创造新材料、能源领域需要深度来提供清洁高效的能源、员工需要深度来提升职位、农民需要深度来提升生产力。可以说深度是创造价值的核心,是文化传承存在的意义与目的。其重要性不言而喻。
理想的情况是同时具有广度和深度,但是上面的“实事”已经说明不可能。但可以在在一定的、有限的前提下实现这个“需求”。如何做到呢?
直接由深度横推到其他领域的深度不容易,但是如果其他领域的深度和当前领域是一样的呢?答案是肯定的。其他领域与当前领域一样是不可能的。但是共同点肯定有的。因此可以得出共同点是可以直接横推的。现在问题简化为如何寻找共同点。细节是不同的,因此需要用抽象的思想将细节包含从而达到忽略的细节的目的。
如何抽象?这也不是一个简单的问题。抽象有一个平衡,即抽象越高越通用,但包含忽略的细节太多,增加了实现的难度。抽象越低越不通用,但是包含的细节较多,降低了实现的难度。因此实际过程中需要平衡抽象的度或者说层次。
步骤一:熟悉的领域A与要推广的领域B。两边都需要抽象,先要从领域A中的总的流程与细节中简化并抽象出正确的,自己能把握的模型,并归档。
步骤二:如果能够直接根据领域B中的细节知道应该使用A中的哪个已有模型(领域跨度较小),则直接使用。比如从android推广到IOS开发,可以直接将开发,设计模型直接用于IOS开发。如果不能够直接根据领域B中的细节知道应该使用A中的哪个已有模型领域跨度较大)则需要提高抽象的层次,后续逐步的细化,直到可以使用A中已有的模型。
步骤三:将推广过来的抽象模型,逐步实现到细节,就像在指导方针下进行,能提高效率与减少错误。从而最终达到领域A深度横推领域B的目标。
结语:优先使用数量与合作来解决深度推广到广度的需求。其次使用抽象的思想来解决深度推广到广度的需求。