编程并非软件工程的核心挑战

发表时间: 2023-08-03 11:16

【CSDN 编者按】本篇文章介绍了作者在软件工程领域中遇到的一些常见问题,以及他使用的一些问题解决方法。作者分享了如何定义问题、分析问题、设计解决方案、实现解决方案、测试解决方案、评估解决方案和优化解决方案的过程和技巧。作者还提供了一些有用的资源和工具,以及一些实际的案例和示例。

原文链接:https://addyosmani.com/blog/softeng-problem-solving/

未经允许,禁止转载!


作者 | Addy Osmani 译者 | 明明如月
责编 | 夏萌
出品 | CSDN(ID:CSDNnews)

软件工程的重心在于问题解决和批判性思维,而非仅局限于编程

许多人误以为软件工程就只是编程,即用编程语言编写指令,让计算机按照这些指令行事。但实际上,软件工程的内涵远超出这个,其中包含了问题解决和批判性思维的重要方面。编写代码仅仅是整个过程中的一小部分,这个过程实际上充满了精确分析、抽象推理和创新解决问题的元素,而键盘上的敲击只是这个过程的可见输出。因此,软件工程的真正关键不只是在于编程,而更在于编写代码前的部分。

问题解决在软件工程中的角色

软件工程的本质实质上是一个问题解决过程。无论是操作系统、移动应用程序还是企业系统,每一款软件的诞生都是为了解决某个特定的问题或一系列问题。这些问题可能涵盖从自动化商业流程、提供社交互动平台,到处理大数据集等各种场景。

在工程师开始一个软件开发项目时,他们首先需要理解他们需要解决的问题。这包括理解问题的细节,预测用户的需求,以及描绘出问题的界限,包括限制和要求。一旦他们理解了问题,接下来他们就会构思可能的解决方案。

在这个阶段,工程师会应用几种问题解决策略,如分解(把问题分解成更小、更易处理的部分),模式识别(寻找当前问题与之前问题的相似之处)以及抽象(去掉不必要的细节,专注于核心问题)。通过运用这些策略,工程师构建了一个全面的解决方案,他们可以进一步将这个解决方案转化为软件系统。

批判性思维在软件工程中的角色

问题解决只是软件工程的一部分,批判性思维同样构成了其基础。批判性思维需要对问题进行客观的分析和评估,从而形成判断。在软件工程的每个开发阶段,都需要运用到批判性思维

在设计阶段,我们需要在多种可能的解决方案或设计模式中做出选择,这就需要运用批判性思维。工程师必须对每个选项的优点和缺点进行分析,考虑到各种因素,如可扩展性、可维护性和性能等。这需要深入理解计算机科学原理,并预测系统未来可能的发展路径。

在实施阶段,编写高效且有效的代码需要批判性思维。这包括选择正确的数据结构和算法,确保代码可读性,以及维护软件的安全性和完整性。此外,工程师需要预见并处理可能出现的错误和异常,批判性思维在识别潜在的问题和边缘情况时起着重要作用。

在测试阶段,工程师运用批判性思维来发现可能不易被察觉的问题。这不仅包括寻找明显的错误,还包括识别潜在的设计缺陷、可用性问题以及性能瓶颈。

结论

软件工程是问题解决和批判性思维的有机结合,编码是其表现形式。敲击键盘产生的代码只是一种传递媒介,它将解决方案传达给机器。这些代码是一个以理解问题、构思解决方案开始,通过精确分析以确保解决方案有效性的过程的最终产物。

随着软件在我们社会中的应用越来越广泛,软件工程师的角色也随之增大。仅仅是编程技术熟练的编码者已经不够,工程师必须是能够熟练解决问题、批判性思维的人,能够在复杂的需求、限制和用户需求中找到解决方案。综上所述,软件工程的核心不仅仅在于编程,更在于问题解决和批判性思维。

你是否认同作者 “软件工程的核心不仅仅在于编程,更在于问题解决和批判性思维” 这一观点?

粉丝福利: