I remember having to rewrite from scratch an embedded application written by an EE because it was so unreliable. When I saw that it read the keypad in 35 different places in the code, I realized it couldn't be fixed; it had to be replaced.
I remember having to explain to an EE that things that generate interrupts should go to an interrupt line on the microcontroller, not to a GPIO, because it allows the software to be more responsive.
And then there was the EE who designed a system with two microcontrollers because his grasp of software was so limited he just assumed that a single processor couldn't do all of the necessary tasks, which, of course, it could easily.
Yes, these are all true, and no, none of the above EEs were recent college grads, they were "experienced," and yes, I'm a CS grad, and yes, it's easy to generalize.
Not only did we do assembly language in college, we had to write an assembler in assembly language. And it had to generate a working executable. That's been a while, though.