Recommended by Andrew howden
Software design is an exercise in human relationships. We start with our relationship with ourselves. We have to change some janky code. Do we tidy first? If so, how? Why?
Kent Beck is one of the people who first created the "Agile" software approach, and is prolific in expressing his thoughts about Software Development in general.