Most intro programming courses are about programming and not much about developing software. Thus, the focus is often spent on covering the syntax of the language (and sometimes not even that, as teachers are often happy saying students can look up the syntax–strange how English teachers never say that) and on solving simple problems.
To be fair, we all have to start somewhere when we learn how to program, but many teachers of programming are only familiar with programming in the small, how to solve tiny problems.
I once read Donald Knuth talking about computer science. To him, computer science was not about programming, per se, it was about thinking algorithmically. But he’s wrong, or at least, partly so. We can solve some algorithms isolated from everything else, but really, people usually program much large problems. We’re not interested in quicksort by itself. We’re interested in solving a problem which has a tiny component requiring sorting.
The hardest part of developing software, other than solving the problem at hand, is deciding what should be solved and evaluating whether the solution, given time and other constraints, makes sense or not.
In principle, this is what software engineering purports to teach. While I realize that teaching software engineering to students who don’t know how to program is analogous to talking about plot and character development before someone understands the grammar of a language, it’s still important enough to consider.
Here’s an exercise for you to try. Ask yourself what you think a good software engineer needs to learn. Then, pretend you are chair of a department with a good deal of power. Decide which courses students should take, and which courses will cover the content needed for them to succeed. Compare that with your current curriculum and see how well it aligns.
Software development is a work in progress, and as such, teachers of programming need to understand where the state of the industry is, and decide whether what we teach can be better aligned to what the industry needs.