I see many parallels with the post and my own experience. I got my PhD in math and taught many college math courses during that time. I was always saddened at the number of students that essentially viewed math as just an exercise in the memorization of algorithms (memorize differentiation and integration rules and chug away at problems). I would avoid teaching this way and instead give them fewer, "deeper" problems that "exercised the concepts".

Students (the "good" and "bad" ones would usually go through the same transition throughout the semester: they would first be very uncomfortable and generally dislike it, then after a few weeks they would start to get used to the process of thinking things through, and finally they would tend to like it much more than what they used to do (of course some students would absolutely despise the process even at the end). Some of the students that liked the process the most where the "bad" ones who were historically worse at the algorithmic style (and unsurprisingly some of the ones who were very good at that style took the longest to convince).

Personally I think it's very important to focus on such a style of teaching. If students apply Calculus at work, they'll usually be using some form of abstract reasoning (say finding a reasonable model for some phenomenon) or they will be applying numerical methods (or both), but rarely will specific memorized differentiation rules be necessary. Ironically I believe that the memorization of the steps is most useful to those going into theoretical mathematics where of course being able to do as many "basic" things without thinking will always help you focus on the "true problem".

The main issue with this approach is that it is hard for students to know if they understand something correctly (which I would argue may be the single most important intellectual skill to learn in life). They can't just look up an answer and see if they got it right, instead they basically have to ask themselves if their reasoning makes sense. The difficulty in this causes a huge amount of student angst and pushback making it more uncomfortable for the students and more work for the teachers. I think the main reason why we teach math as mainly rote learning is because it's the easiest way to teach. It's my job to go through the motions and your job to learn the algorithms as best you can. From the teaching perspective, this is relatively easy to teach, grade and defend.

As a final example, I think that the focus in Calculus on the Fundamental Theorem of Calculus is misplaced. It _is_ fundamental from a theoretical perspective, but essentially no numerical integration is done that way and instead the actual way that integrals are computed is some application of Riemann's methods. (The counterexample being languages like Mathematica which are specifically designed to solve things symbolically.) I found a very good exercise to write Riemann integrals in Python (which students could quickly understand as pseudocode) and use different methods (left-endpoint rule, midpoint rule, etc.) to compute the integral in different ways and verifying that the convergence matches errors predicted. I think this is the sort of reasoning that should be focused on much more rather than having students find anti-derivatives all day and simply repeating "remember plus C".

This is a bit of a long-winded and rambling post, but I do miss that aspect of teaching. Pushing students to realize their ability to reason about math was always very fulfilling. Not everyone enjoyed it, but the majority would come out realizing that they too can reason about math given enough patience and time.