Writing code has nothing to do with going to a University. It is an art form not a science.
Depends on what you mean by "code". If it's just slapping web front-ends atop legacy mainframe or server programs, that's easy enough to train someone to do. More involved tasks benefit from a good grounding in algorithms & data structures and computational complexity. Going to the next level, you'll want familiarity with concurrency and functional programming concepts. Beyond that, there are analytical problems involving graph theory and numerical optimization. There's also systems programming topics, security, realtime control, networking concepts, etc. And we still haven't gotten into specific application domains, like signal processing, computer vision, graphics, etc.
So, plenty to learn. And plenty of potential for damage to be done by the ignorant and overconfident.
You do have to understand the electronics to a certain point in order to optimize your code properly but you don’t have to have a degree to do so.
A common mistake I see is people trying to code-optimize something using a fundamentally inferior algorithm. At best, code optimization can deliver an order of magnitude improvement, but you're often lucky to get even a factor of 2. Using a better algorithm has the potential to yield improvements of
several orders of magnitude.
In fact, you can usually do quite well by simply making sure you're using scalable algorithms and data structures. If/when performance problems occur, use a profiler to find the hot spots and do a
few targeted code optimizations. Another common mistake I see is people trying to optimize some piece of code that has no relevant impact on performance. It's not only a waste of development time, but can introduce bugs and usually makes the code harder to maintain.
I’ve known people with English majors who are excellent programmers,
It definitely depends more on personality than anything. Traits that IMO make for a good programmer are creativity, diligence, and clear thinking. Those traits will also serve one well in writing prose. Indeed, some excellent programmers have written really good books on programming.
Conversely, I often hold that someone who can't explain to me how something works probably doesn't understand it, themselves. In some cases, it might be more that they simply lack or have underdeveloped tools for expressing it.
Don’t get hung up on University names. Education is like making soup. You only get out of it what you put into it and I don’t care where you go
Yes and no. Certain schools have a really good CS program, and you can safely assume anyone who made it through has a decent foundation for a successful career in the field.