I think there's a hype in quickly training software engineers. This article is an example. We poke around with tools to find quick and easy ways to create software. Tools have been improving quickly but creating software remains challenging. The tool race is influenced by market more than software engineering.
The discipline of software engineering has not changed much for decades. To teach effective software engineering, we need to start with the principles. Some fundamental questions:
- How do we create functional and scalable software?
- Given an existing (complex) software system, how do we maintain and incrementally improve?
One important principle I learned outside of school and training: software is never just code, we always need to think about the user ecosystem around the software. Failure to understand this principle leads to wasteful effort. For example, attempt to rewrite of the code.
These principles are very abstract. We cannot teach them easily. People use tools and new technology to cover up their lack of understanding.
The discipline of software engineering has not changed much for decades. To teach effective software engineering, we need to start with the principles. Some fundamental questions:
- How do we create functional and scalable software?
- Given an existing (complex) software system, how do we maintain and incrementally improve?
One important principle I learned outside of school and training: software is never just code, we always need to think about the user ecosystem around the software. Failure to understand this principle leads to wasteful effort. For example, attempt to rewrite of the code.
These principles are very abstract. We cannot teach them easily. People use tools and new technology to cover up their lack of understanding.