At my university it was sort of 2/3 there. They did start with basics, alright, but I had never done any proof before. Then there were other students, who somehow had some experience proving stuff. Some of them were from specifically MINTy boarding schools etc.. I think there was only once at my school, when a teacher tried to make us prove something and then never again. That was already the advanced math classes at school. Given that, I was woefully unprepared for what awaited me at university (also a quite prestigious one).

The lectures quickly ramped up and I was still unable to perform the simplest proof. Every time there was a proof in the homework, I sat in front of it for hours, not knowing what to do. I knew some facts about the problem, but just could not express my thoughts or see any way forward using the knowledge I have about the problems. Like sitting there, nd thinking: "Yes well ... so what now?" Then next week it would turn out, that I should have looked at the book and used some phrase (lemma? theorem? idk. whatever.) and I would think: "How the f am I supposed to know, that I could have used that?!". Basically I would have needed to consider things not taught or only taught in future lectures and things, that were not in the homework itself. Sort of "out of the box thinking". This was a big contrast to how I had gone threw my previous education at schools. I basically never had to do much to get good grades. Very low effort. I did not manage to flip the switch at university that well.

Add to that, that the handwriting of the lecturer was unreadable and he refused to have the lecture video recorded with a lie as an excuse ("The video would not be good enough to read anything."), so that I could not watch again later and take it a bit slower to maybe understand it. The lecturer made many feel disrespected during lectures and was generally disliked. I did not go see him or his helpers for asking about stuff that I did not understand. Only once or twice I did, together with another student, but came back with more questions than answers.

There were some extra hours, where a person tried to help us students, but that also did not help me much, because of how they explained things. It was not put in a way, that my brain would accept. My brain wants step by step, making real sure I understand each step along the way, not glossing over things, while the lecture felt like it jumped ahead way too quickly. Once I would get into the "I am confused." mode, I could basically forget understanding the rest of what was being presented. If I raised my hand, they would just give me an explanation, that presumes some other knowledge or fact I was not aware of and it would not help me.

So I pretty much felt like a loser, when some people only needed to see things once and already could do any homework problem. I barely made it through and never needed any of it again. I did ace some other more practical lecture's homeworks though, sometimes with full points, like making models of software or for solving problems, UML and stuff, while people with no problem in mathematical lectures had issues there. Probably also didn't do so badly at coding homework, when others struggled to implement something correctly.

Years later I know, that I am actually excellent at solving problems, when given all required input and when I know about the basics. I just don't have the mathematical education for solving math problems, that involve proving things, requiring stuff that is not given with the problem. I also understand mathematical problems better, when I write code to solve it. Perhaps that would have been the way to go for me, if it had been taught like that. It would have given me something to grasp, play around with, giving me motivation to make it work. No one ever taught me mathematics in a way, that worked well for me. I think it is up to me.

Years later I read about a little book "Introduction to Mathematical Thinking", which I bought. I don't have much motivation to deal with that stuff, but I did read part of it, trying to understand every little detail, to perhaps catch up on what I missed, finally understanding things, that I did not understand back in mathematics lecture and all that. Turns out, that they did not manage to teach me the actual meaning of even the mathematical implication arrow correctly. I know now, that the teaching wasn't optimal for me, because so much of the basics were either missing, or not properly understood and not given much time in the lectures. There was never a lecture, that took apart what mathematical implication arrow actually means and how it differs from an implication in philosophy or just any natural setting, when talking about what implies what in the real world. That is only one example, that probably confused me countless times during the lecture and threw me off. When/If I find more time to continue reading the book, I am quite sure, that I will discover more basics, that were missing. In hindsight, I am pretty sure, that those lectures were also meant to weed out students. Good that I stuck and finished my degree.

Looking back, sometimes mathematical things are very interesting, but I never wanted to become a mathematician anyway. Would it be great to know more math? Sure! It would be great to understand more and be able to express oneself more mathematically correct. Would it be applicable to my actual job? Rarely. I might never become a good mathematician, but I am a good engineer.

Software development is different from mathematics in many ways. Similar in some others. I have seen code written by math and physics professors. Lets just say that it was quite underwhelming and wouldn't fly in any code review with me on the review team. There are simply so many more things to look out for than merely the algorithm, which mathematicians writing code often have no eye for, that I would recommend any mathematician to better work with an actual experienced software developer, to get the actual code done. Unless the mathematician has taken extensive time to study up on how things are done in software development, the result of writing the code themselves likely will not result in great code.