Head First Software Development (O'Reilly & Associates, 2007)