This part will take you approximately 25 minutes.
J. B. Rainsberger, "Becoming an Accomplished Software Designer". A relatively quick summary of how intuitive and mechanical decision-making combine to help us design software.
J. B. Rainsberger, "Use Your Singletons Wisely: Ten Years Later". So what's so bad about Singletons? Plenty.
SourceMaking, "Refused Bequest". Although this antipattern strictly applies only to type hierarchies, I use it in the more general sense of any function that pretends to do something (not necessarily by inheriting), but doesn't. In that case, I suppose there's really no bequest.
Nate Cook, "guard and defer". Interestingly, Swift 2 has elevated the guard clause to a first-class concept in the language, rather than leaving it as a programming idiom. Nice!
J. B. Rainsberger, "Null: Design Tool". A little more detail on how strategic use of
null can point to design risks.
Gerard Meszaros, "Test Class per Fixture". One of them many useful xUnit patterns that Gerard has documented.
I've added this short video to demonstrate a microtechnique in using automated refactoring tools. Even if you don't use Java and IntelliJ IDEA, you might find this helpful in using your favorite IDE or text editor.