Software design

How should you structure software? What do we mean by “good code”?