Problem solving and critical thinking are at the heart of software engineering

The focus of software engineering is on problem solving and critical thinking (reasonable design and architecture to reduce complexity), not just programming .

Many people mistakenly think that software engineering is just programming, that is, writing instructions in a programming language to make computers do things according to those instructions. But in reality, software engineering is much more than that and includes important aspects of problem solving and critical thinking. Writing code is only a small part of the whole process, which is actually full of elements of precise analysis, abstract reasoning and innovative problem solving, and the keystrokes on the keyboard are only the visible output of this process. Therefore, the real key to software engineering is not just programming, but the ( design and architecture ) part before writing code .

picture

The role of problem solving in software engineering

The essence of software engineering is essentially a problem-solving process . Whether it's an operating system, a mobile app, or an enterprise system, every piece of software is created to solve a specific problem or set of problems. These problems may range from automating business processes, providing social interaction platforms, to processing large data sets and so on.

When engineers start a software development project, they first need to understand the problem they need to solve. This includes understanding the details of the problem, anticipating user needs, and delineating the boundaries of the problem, including constraints and requirements. Once they understand the problem, they next imagine possible solutions.

During this phase, engineers apply several problem-solving strategies, such as decomposition (breaking the problem into smaller, more manageable parts), pattern recognition (finding similarities between the current problem and previous problems), and abstraction (removing unnecessary details, and focus on core issues). By applying these strategies, engineers build a comprehensive solution, which they can further transform into a software system.

picture

The role of critical thinking in software engineering

Problem solving is only one part of software engineering, critical thinking also forms its foundation. Critical thinking requires objective analysis and evaluation of problems to form judgments. At every stage of development in software engineering, critical thinking needs to be applied .

During the design phase, we need to choose among many possible solutions or design patterns, which requires the use of critical thinking. Engineers must analyze the pros and cons of each option, taking into account factors such as scalability, maintainability, and performance. This requires a deep understanding of computer science principles and anticipating possible future development paths of the system.

Writing efficient and effective code requires critical thinking during the implementation phase. This includes choosing the correct data structures and algorithms, ensuring code readability, and maintaining the security and integrity of the software. Additionally, engineers need to anticipate and deal with errors and anomalies that may arise, and critical thinking plays an important role in identifying potential problems and edge cases.

During the testing phase, engineers use critical thinking to uncover issues that may not be obvious. This includes not only looking for obvious bugs, but also identifying potential design flaws, usability issues, and performance bottlenecks.

picture

in conclusion

Software engineering is an organic combination of problem solving and critical thinking, and coding is its expression. The code produced by the keystrokes is just a delivery medium, which conveys the solution to the machine. These codes are the end product of a process that begins with understanding the problem, conceiving a solution, and conducting precise analysis to ensure the validity of the solution.

As software becomes more widely used in our society, so does the role of the software engineer. It is no longer enough to be a skilled coder, an engineer must be a skilled problem solver, a critical thinker who can find solutions in complex requirements, constraints and user needs. To sum up, the core of software engineering is not only about programming, but also about problem solving and critical thinking.

 

The core problem of software engineering is not programming

Guess you like

Origin blog.csdn.net/qq_42672770/article/details/132101636