in reply to
How do I become a good programmer?
I have had some experiences where electrical engineers had exceedingly strange views of how software works -- they used circuit diagrams to explain it. They kept talking about finding bugs in programs by "chopping a circuit in two", and the analogy was completely inappropriate. Would we saw a wristwatch in half to find out what's wrong with it?
If your education has been in electrical engineering, you'll need to de-program yourself first. Software is about arrows that point from one box to the next, not 12 squares with circuits connecting all of them.