之前写过一篇文章,讲合格程序员应该具备的能力,你是合格的程序员吗?—合格程序员应该具备的12种能力。
里面提到了抽象能力,就我看来,抽象能力是软件从业人员最应该具备的能力。因为软件开发领域涉及到的概念太多。正如Brooks所说,为了获得概念完整性,需要我们具备很强的抽象能力,需要我们运用抽象能力去简化场景,屏蔽复杂性。
那么究竟什么是抽象能力?举个例子,我们所说的人,就是一个抽象的概念,不是指具体的男人,女人,高矮胖瘦什么东西都不具体。但比如“奥巴马”就是一个具体的人。
如果我来定义,抽象能力就是发现事物之间相同点或隐含联系的能力。
我们经常说软件复用,就是因为我们发现了不同场景下相同的东西,抽象出来而成为共用的组件,框架,平台。
那么如何培养这种能力的,抽象能力本身是一种思维能力,也就是说你只有不断的进行思维锻炼才能获得。
我现在总结出的一个技巧就是:随意挑选两个事物,可能是软件领域中的概念,也可能不是。竭尽所能的去找出他们之间的联系。我写的两篇文章就是关于这个方面的尝试,大家可以试一下。不要浅尝辄止,努力去思考,也可以google查一些资料。锻炼最好选取软件领域的概念。下面是我思考的两个例子:
要想去打铁,就得去打铁。
这是一句法国谚语,要想提高抽象能力,就得不断的思考。