Themes and techniques
For distributed computing, computer networks, software engineering, see elsewhere.
Also of interest -
Architecture considers how code may be organized.
The overall picture
Programming is a matter of unambiguously telling the computer what to do, in a language it understands.
Analogies
Programming is analogous to wiring a complicated electronic circuit: Joining wires of various modules is the right way.
Programming is analogous to designing a pipeline or circuit on the computer (as in chip design or in designers like rational rose, or in rapidminer or in lego robotics).