上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
01 抽象思维
若想捉大鱼,就得潜入深渊。深渊里的鱼更有力,也更纯净。硕大而抽象,且非常美丽。
——大卫·林奇
抽象思维是软件工程师最重要的思维能力。因为软件设计是纯思维的创造活动,软件技术本质上就是一门抽象的艺术。
程序员的工作是一场思维的游戏。虽然我们会敲击键盘、观看显示器,有时也把主机拆开更换里面的内存、硬盘、处理器等,但程序的运行完全在我们的视野之外,我们既看不到程序如何被执行,也看不到0101是如何被CPU处理的。
软件工程师每天都要动用抽象思维,首先对问题域进行分析、归纳、综合、判断、推理,然后抽象出各种概念,挖掘概念和概念之间的关系,再对问题域进行建模,最后通过编程语言实现业务功能。所以我们大部分的时间并不是在写代码,而是在梳理需求、厘清概念,当然,也包括尝试看懂那些“该死的、别人写的”代码。
在我接触的软件工程师中,能深入理解抽象概念的并不多,能把抽象的概念和软件设计、架构进行有机结合的就更是凤毛麟角了。
对于我本人而言,每当我对抽象概念有进一步的理解和认知时,我都能切身感受到它给我在编码和设计上带来的变化,同时也不禁感慨之前对它的理解为什么如此肤浅。如果时间可以倒流,我希望在职业生涯的早期就能充分意识到抽象思维的重要性,能多花时间认真研究并深刻理解它,这样应该可以少走很多弯路。