代码的艺术:用工程思维驱动软件开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2.4 写代码并非易事

“写代码容易吗?”

我曾多次在授课现场问过这个问题。有人说,容易。也有人说,不容易。我会接着问:

“写代码为什么不容易?”

现场观众给出了不同的答案:

“因为不好调试。”

“因为想清楚逻辑很困难。”

……

写代码不是容易的事,具体原因如下。

(1)写代码是从“无序”变为“有序”的过程。计算机中所运行的程序是按照严格的逻辑来执行的,而现实世界纷繁复杂,其中的秩序并不是一眼就可以辨识的,需要我们把它整理为有序的结构。

(2)写代码将“现实世界中的问题”转化为“数字世界中的模型”。程序是数字世界对现实世界的一种映照,其中涉及对现实世界的抽象和建模。

(3)写代码是一个“认识”的过程。在写代码的过程中,原来所“未知”的问题,在代码完成后变为“已知”。对于一项新业务,在开始时我们可能并不了解,但通过逐步分析,逐渐有了更深入的理解,在这个认识的基础上才可能开发出对应的软件。

因此,在写代码的过程中,软件工程师需要具备以下几个关键能力。

(1)把握问题的能力。软件工程师每天都面对大量的问题,需要在工作中不断辨识问题,并确认其中的重要问题。

(2)建立模型的能力。对于一个软件来说,具体的实现机制是“底层”,所要实现的“模型”才是“上层”。软件工程师需要不断把现实问题转化为数字世界的模型。

(3)沟通协作的能力。软件开发不是一个人的工作,需要和研发团队的同伴进行沟通协作,也需要和软件的相关方(如客户、用户)进行沟通,还可能需要和其他相关团队进行配合。沟通协作的效率和质量,极大地影响着软件研发的效率和质量。

(4)编码执行的能力。软件工程师最终需要通过编码获得可执行的软件,因此在编码方面必须具备一定的基本功。