For starters, I'm a Java programmer. Cobol, C++ and Java were the languages taught to me during my 3 year higher education. This was a vocational training. I did not learn any higher maths there. I was taught programming, program design, a (very) small course on opcodes (decoding binary to opcodes with pen & paper for example), pen & paper simulation of a idealized CPU machine, databases, various other things that I'm not going to keep typing out here. But everything came down to the fact that I only got the basics handed to me.
Becoming good in IT, is something no place of higher learning can do for you. They can help you sure, but in the end you have to do it yourself.
So, in my first week when I heard we would learning Cobol, I went down to the school library during lunch, took out the 2 syntax manuals and the manual for the compiler, and I started to read. To this day, I have not stopped reading about programming.
It's just a matter of attitude.
Anyway, Joe, I'm very sure the engineer who handled the assembler programming will take about as long to learn Java at my level, as I will take learning asm at his level. So, yes, I can change places with a assembler programmer. I just don't want to.
And, incidentally, I have only once regretted not having more computer/math theory in my training and that was while implementing Reed Solomon codes. Only time I (for a while) felt myself out of my league.