Software Engineers should read this October 14, 2013 best practices coding martin fowler object oriented analysis and design software engineering +